Its totally done in Lightwave. We have different scenes for camera movement, object movement and character movement. Characters are animated the same way as in game its just a special custom animation. All the different camerashots are linked by the script and if needed the used characters from the cinematic are normal bots afterwards.
Here is nearly finished cinematic and a little gameplay. It needs some polishing here and there but basically it should be finished.
I fixed a few things mentioned in previous comments.
Bots have now one flinch animation if they are hit(best seen in video in second in game cinematic). It takes one sec and they do not shoot back at this time. Maybe more are added later showing animation where they were hit, like grab shoulder, leg, etc.
The accuracy of bots is reduced by 50%.
Bullet traces are shown. I tried to show on shots but in the video you can see it better and it looks in action a lot better [grin]
A few weeks ago we decided to insert a big singelplayer campaign. Just multiplayer with bot support will not be enough.
First time i finished network gameplay a little. Its now working quite stable with normal weapon usage(no flamer and no grenades). We used RakNet to implement netcode and i can really recommend it.
Next step was inserting nice physics effects using ODE which works like a charm too [grin] These things were inserted
You can carry any object if not too heavy and build your own cover for example
You can throw these objects
Ragdoll applied on characters from any animation pose
Objects fly around if shot and bullet has enough force
Objects can be destroyed if destrcution levels are defined and health is shot down(planks break, barrels explode, tables break ...)
Particles cause damage if objects/players are close enough, so barrels explode after a while if they burn)
Grenades can be launched if weapon has mounted launcher
Complex structures can be build and blasted away
nice explosions inserted spawning physics objects wih attached fire [wow]
... and again some stuff i forgot for sure
Next is first singleplayer mission using all this stuff. Will try to update journalmore often now.
Any comments are welcome [wink]
Click here to watch physics testlevel video (51MB).
Last weeks we put in so many things to get a techdemo ready.
Rage Hard is now offline playable against some bots.
- We put in a particle system for fires, smoke etc.
- Sounds inserted
- One very annoying part was the handling of the lost device if you change from fullscreen to desktop or other cases. Finding some resources that need to be freed took some time [grin]
- Weapons were tuned and inserted. Shooting needed also an extra thread to have the right shooting frequencies.
- Animations are loaded to increase the atmosphere. For example in the ghetto levels a helicopter flies around and a car chase is in the areas player can not reach or in another level a minsubmarine swims around if you look outside the windows
- One of the biggest parts was the bot AI. They find pathes in an extra thread, check if they can shoot their target without hitting something else and change their target if there is someone else in the near and things like this. Others run just around "searching" for real some enemies.
Animation are set now right way if bots are running, changing weapon or standing around. During any movement they look slightly around with upper body and head. This moving is smoothed at the end of the rotation to avoid a robotic look.
First tests looked like some zombies are moving around but now it looks really more and more like a game [smile]
Things to have a first playable version are that bots shoot each other and respawn if they are dead.
Shot from little stresstest. 50 bots selecting random enemy and finding the way and moving to it.
We decided to bring shaders to a good state so the bots had to wait again. They work like this for ps 3.0: Bump, specular effect and lightmap are put together in 3 different basic type of shader. These are bump only, spec only, bump + spec and lmap only. They are compiled with different cases depending if lmap is available or not etc. 6 lights are used in ps 3.0 and dynamic object and first person view weapon are lit in a good way now.
Problem is with ps 2.0 [bawling] . This command limitation is really hard to handle. So i only have 1 or 2 lights in these ps 2.0. This brings lighting in first person view to "pop" to the next available if it comes in range - same for other dynamic objects. Next problem for ps2.0 is this one: - Levels are splitted in rooms connected with portals - for each room all lights inside a room are searched and given to shaders - problem is for ps2.0 if more than 2 lights are in this room(very often the case) only some parts of the room are right lit with shaders. This looks strange in some parts if. Here you can see the problem. The light in front right position is used for shaders and the light in distance can not be used [help]
Does someone has any ideas/suggestions on how to solve this [looksaround] ? I did some research on deferred shading which looks really good but it seems that memory consumption is still too high for todays standard machines, especially if AA should be activated. Is there any game out now which uses this technique for rendering?
Here is a first peek to a new level currently done [smile]
Another thing which took some days to install was my new PC i got.[wink] It has a Geforce 7900GTX which really rocks! [cool] This was hardest thing to get last weeks.
As always if i get bored by some parts i don't like(bot AI) to implement i insert some others which are more fun and need to be done [smile]
First i nearly finished dynamic objects handling. Placement of these objects is read from a lightwave scene and set with objects class. Lighting of objects is working too. They are lit by the near lights. But still no shadow casting. Problem i have with more lights is that pixelshader(combined bump and spec lighting) slows down engine a lot. Are there optimization flags i missed [rolleyes] [help]? May be the shader is just too long...
Second thing i did last week is to finalize Bloom effect. I do not like it if whole scene would be overbright so i did not apply it too strong. On back of hostage you can see it best.
Last 1.5 days i made a break from bots and inserted reflecting surfaces. Water looks now a lot better [cool]
Each room can have one reflecting plane. The room is then mirrored on that plane in a rendertarget and the not usable part is cut off with a clipping plane. In the main render buffer a stencil value is set on the areas where the mirror-polygons are. Last step is to copy the rendertarget back to main buffer on places where stenicl value is set, with a reflection factor from 0% - 100%. This can be set in our modeler(Lightwave) in the reflection channel of the surfaces. I made a quality switch for the rendertarget from 0-4, where 0 renders the mirror with full resolution and all lights and pixelshader effects, 1 full resolution without extra lighting, 2 half resolution, ...
Video shows both water pools from Aquapark with reflecting water and you can hear some MUSIC we plan to use in RageHard[smile]
Some time ago since i did last update. Still implementing the bots. The pathfinding is done in a second thread. This should keep everything very smooth on HT or dual-core systems. I need to check this on single cpu later and hopefully changing priority will keep it smooth on single cpu systems or may be even changing nothing [smile] Finding the path works very good for now but takes some time. May be it needs some optimizations later. Next will be smooth turning of bots and looking with upper body in your direction. Now they change with a hard direction- correction the angle to the direction they walk. This should be done fast, so we will have some real fights soon.
Here are some shots from first map we did, called "Hacienda". I personally like the other, first presented map more("Aquapark"). The map was mainly done for testing and finding best ways out how to design our maps and how to do lightmaps and set exits for portals etc. But may be you like it more [wink]
to cover every level. All these fields are numbered and if any bot has another bot or player in view it can run to this field.
Bots will patrol defined pathes or randomly walk to different fields. If some opponents will cross their way they will attack or search for cover. You can see some different colored fields. These are fields for cover. Different types of cover are available, one for north, south, east, west. So, if a bot gets under attack it can be checked if there is a coverfield near to his current field it is standing on. If bot gets attacked from north it should not get to coverfield with cover in west - i hope it will not [grin] We will do different types of bots. The range is from braindead guys which will see you run directly in your direction and shooting all they have to smart bots which will try to get behind some boxes to get not hit and kill you with less damage on its own as possible.
We try to do some smart AI in game to have an interesting single player game too. But main target is to produce a nice muiltiplayer game [totally]
Here is a little video showing 5 different animated characters. Going from run to walk to duckwalk to crawl, change weapons, show addons, attack with knife etc We used our own animation SDK for this(link)[smile]
All animations have smooth transitions from one to the other. Two different bone-sets are used, one for female and one for male characters.
Video : Character Animations Video (16.5MB)
So now the bots are really next [grin]. Some screens coming soon to show how they (should) find pathes.
Processing this endless list of animations is so boooring, so i did a little break fixing some more intersting things.
I fixed some shader issues with multiple lightsources and a square look on some areas. Especially on gasbottles it looked not smooth enough but now it does. I cant stop playing around with lights moving around these bottles [wink] But still pixelshader 3.0 needed to have more than one light doing these effects.
At the moment i am importing some characters with animations. They are for now all animated and modeled in Lightwave and are using bones. These bone animations work well for the first person view weapons.(you can see some in video from previous entry). But they are 'only' played the way they are animated in lightwave.
Character animation should be interpolated. For example from walk to run or run with reload. So no connecting animations are needed to do these little transitions from one anim type to another. We have 4 different basic type of weapons. Knife/grenades, rifle, one handed weapons, dual handed weapons(2 magnum or 2 ingram [grin])
For each basic type we made run, walk, crawl and duck moving types. If character will run or walk and should reload. The legs will be locked in the moving mode(walk/run) and only the bones from upper body will play the reload animation. Overall 70 anims have to be inserted and combined [crying] I hate these neverending lists.
Weapons and armor are placed on chracters with 'NULL'-replacers on bones. There the weapons, armor or other addons will be placed. The crosses on hip and hands show where these replacers are:
And finally some models from sketch to model which will hopefully move in engine next week [smile]
We are using Lightwave for modeling levels and for modeling and animating characters. 3D engine uses directx9.0. Compiler is Visual Studio 2005.
We use lightmaps for lighting but dynamic objects are planed to have stencil volume shadows. Lightmaps are calculated with Lightwave too.
Imported together in engine:
Today i finished the shaders for different surface types(bump, spec and bump + spec combined) Main Problem was to have more than 2 lights make visible bumps and specular-effects. Pixelshader 2.0 have not much space to do this or to do just loops, so i made 2 versions. Now i detect which shaderversion is available and if 3.0 is available lighting is much nicer and many lights affect look of the texture[smile] This is a first video. Running through a level. WMV VIDEO(40MB)
Next thing to do is inserting bots to have a real game [wink] First i will insert animated characters with changing armor and weapons and different moving-types(run/walk/crawl...). Some of them are finished and need "just" to be animated with our sdk.
Plan is to have a "bot-map" to know where bots are allowed to run in a map and where to find cover and let them react nice. If they get on fire they should find cover for example.
btw, sorry if my english is not perfect all the time but my first language is german [totally]