Shadow Blade
Morrowland Presents Apron Tutorials
game - design - multimedia - web - programming - tutorials - There are currently viewers visiting Apron Tutorials.
   
 
TECHNICAL
GRAPHICAL
SOUND
GAME
WEB
ARTICLE
TOOL
PROJECT
 
 NEWS

  news

  history


 TECHNICAL TUTORIALS

  opengl

  direct3d

  c/c++

  visual basic

  java

  c#


 WEB TUTORIALS

  html

  dhtml

  asp

  php


 IMAGE EDITING

  photoshop

  draw sketch


 3D MODELING

  3d studio


 PROJECTS

  shadow blade

  game environment

  virtual 3d guide

  billy blue flame


 DEMOS

  win32 api


 ARTICLES

  general

  opengl


 COMMUNITY

  about us

  credit

  contact







      Presented by Morrowland
The planning of the 3D game demo "Shadow Blade" started in early December 2002.
I wanted to create a game demo more advanced than I had ever done before... Something with a futuristic design and a powerful "feel". I wanted the demo to contain several aspects(see list below). I had been working on some of these before, but some were just research material or theory that I hoped to finish in time... The plan was to finish the project by the end of the summer 2003. Since level desiging and modeling takes a lot of time to do alone, I decided to create a small level like an arena. I wanted the demo to take place both indoor and outdoor. I did this by setting up "walls" around most of the arena. This way I could limit the view of the camera, and limit the use of polygons.
    

Since I already had created an advanced form for collision detection as a part of my graduate project at HIA, I decided first to learn how to load a new bones animation format, with quaternion interpolation. I wanted to do this because I wanted my character motions to be smoother to look at. Since I didn't have access to any motion capture equipment, I choose the most common interpolation technique used by games in 2001-2002. After about two weeks of very hard work(14+ hours pr day) it was finished. I had managed to modify a new animation loader, and the new format was proving to be better than my old one, that was using linear interpolation. It takes more than advanced collision detection and smooth character motion, to create a decent game. I had already planned to have dynamic lights, shadows and a good looking particle engine in my game.
Download Demo
    
The natural next step for me would be to develop a particle engine. The particle engine was finished on December 23. I don’t think it took more than a couple of days to develop. First I searched the web for some info, and then I used my "artistic sense" to put it together. As a result I published a small project at Apron Tutorials not surprisingly called Particle Engine.

As a game designer I wanted to have colourful bright texture mapping in my game, and decided to purchase a digital camera. I bought the test winner of the year 2001 “Fujifilm FinePix 2800”, with 6X optical zoom.
Download Demo
    
At this time I started to look into nVidia developer demos and articles for solutions for my light and shadow casting. I didn’t find much source code on the net, except the nVidia samples that looked very tempting. This turned out to be the least satisfying part of my work so far.. First I had to purchase a GeForce4 TI series GPU to compile the source code for these demos, because most of the demos were using nVidia (NV) extensions . Then I used a lot of time learning about per-pixel lighting using Register Combiners and other nVidia extensions. Then when I tested a small test project on my girlfriend’s computer with an ATI GPU, I found out that ATI didn’t support Register Combiners at all... My test projects could not even run on an ATI GPU!!! I was not very motivated at this point...
Download Demo
    
But as always I decided to go on.. Searching the web for clues, I came up with two very good theoretical articles of stencil shadow volumes at Gamasutra.com and Gamedev.net. This had to do. I started putting the pieces together. In both of the articles I found that the author did rely on extensions to do some of his “dirty work”. I decided to rely on my "math knowledge" instead, and to solve it without the use of any extensions. I phoned my good friend Tommy Johannessen... As always it “pays of” discussing problems with him, we have a sort of thing going that he studies the stuff that I don’t and vice versa. We started working like this back at school, and found that this way we could learn faster from each other. After a few weeks I had managed to put together a very good and very fast shadow volume algorithm. My motivation came back as it always does...
Download Demo
    
Now I took a trip to Grimstad to visit Tommy Johannessen. We had planed to discuss some web and some C++ algorithms for the new dynamic light engine that I was working on. Instead we took a vacation and partied a lot...
I finished the dynamic light engine a week after I came home.
The point light theory is built up on projecting a point in 3D (the light source) on to a plane in 2D (a wall). This dynamic light engine used no extensions and could run on any GPU...
Download Demo
    
I had finally managed to create all the pieces of my game code puzzle, and it was time to start modelling the arena and put the pieces together. I had drawn a simple sketch, and I had a pretty clear picture in my mind of what I wanted my arena to look like. My main character is 1.8 units tall, so I first drew down a sketch with real measures compared to the scale of my character. It took about 3 days to create the basic of my new 3D Arena. I could have used less time, but I wanted my measures to be exact. I used 3D Studio Max as my 3D modelling tool, and Adobe Photoshop for my 2D textures.
    
I tested my shadow algorithm both static or dynamic on a simple 3ds model and I was very satisfied with my result..
In 2003 this quality looks good.

View Screenshots
    
I then created an editor for my dynamic point light. With this "simple" editor I was able to dynamically place out point lights and decide the position, size and colour. After I had created my lights I could save them to a light-file, I was also able to load the light file again and edit the lights.

View Screenshots   Download Demo
    
I then tested my alpha loader that I had created before. I converted it into a 3DS Alpha Loader and as you can see it works fine..

View Screenshots
    
I wanted to test the dynamic shadows on my arena-model as I already knew The file was to big to run smooth with dynamic shadows on every model, but it sure looked nice though..
    
Added frustumculling to speed up my application.
    
Added spacepartitioning to speed up my application.
    
I added a little 3D sound and water to the scene to give the setting a more dynamic feel. (Use headphones to give the 3d sound a better effect)
    
I implemented better texture-filtering for greater texture quality, and to get smoother tiling results on greater distances.

View Screenshots
    
I added a start-up dialog to gain more control over the game demo.
By enabling the feature of turning off some of the special effects, the game demo would now run fine on older computers.

View Screenshots  
    
It had planned how my characters should look like on the first day I thought about the Shadow Blade game demo. But I guess they got “changed” a little on the way.. In this multiple character demo I inserted the characters with some animations.

View Screenshots   Download Demo
    
Finally I had something to show for :) the final walk demo was first published for my friends at 18.07.03. There is no collision detection in this demo but you will be able to walk around and look at the arena...

View Screenshots   Download Demo
     This is what is coming up next!
The fighting dynamics is already created, but the story and movies will take a while to create, now that I'm studying for my Masters degree.

View Screenshots

 LINKS

  morrowland home



 GAME DEVELOPEMENT

  nvidia

  gamedev

  polycount


 PROJECTS

  shadow blade

  game environment

  virtual 3d guide

  billy blue flame


 MATH AND PHYSICS

  mathworld

  physicsworld







PLEASE LINK TO


  All rights reserved Morrowland © 2016  
Ronny André Reierstad