• entries
    338
  • comments
    2046
  • views
    1146118

About this blog

Journal of Danny Green

Entries in this blog

dgreen02

Armored Warfare Update

Hey guys, it has been a while since the last update I know, sorry to keep you in suspense :-) I just got back from a secret location in Europe meeting w/the publisher for Armored Warfare - the signing of the game will be announced soon. I've never been to Europe so it was a fun trip :-)

I was at their office for a week, we brought on a game designer (who worked on the Ground Control / World in Conflict series) to help us design the game, we also had a concept artist sitting in drafting up our ideas. It was a good time meeting w the publisher staff as well, they are an awesome group of people and I'm really looking forward to seeing what we can come up with. We are now working on fleshing out all the details in the design over e-mail / skype.

With all that said, we took an interesting turn with the Armored Warfare direction, obviously I can't spill the beans right now - so try not to be so confused when checking out the screenshots and other updates lol. I can re-use all of the work I've done on Armored Warfare so far, at least I don't have to start over.

On the development front, I made a few modifications to the engine in the last few days...
- I added support for static skyboxes (up until this point there has only been support for dynamic time of day)
- New RTS camera loosely based around the World in Conflict camrea ( hybrid RTS/Freelook camera system )
- New terrain texturing system
- Resized terrain from 18km x 18km to 9km x 9km, which doubled the resolution
- Work on a new in-game world editor
- Lots of updates taking into account the game's new direction

Here are a few screenshots ( all trees, foliage, grass, etc. has been removed temporarily, they will be added back in the next few days ) -

Static Skyboxes


Collection of static times of day - Blue Sky, Sunset, Overcast, Cloudy


Props on the new landscape ( before final tweaking of environment lighting values)


Stripped down game engine, before adding new terrain texturing / static sykboxes
*Note this is how the old sky looked!


Until next time...

- Dan
dgreen02
Hey Guys,

Sorry for the radio silence over the last few months. I've been working things out with a publisher for Armored Warfare :-) Lots of good stuff is happening behind the scenes so I'm happy about that.

I can't really post specifics though - sorry :-]

I've been doing a lot of work on the game / engine lately though, focusing on the Havok based vehicle physics, destructable terrain, and some other things. I've been thinking a lot about an advanced terrain texturing/splatting system also some interesting GFX effects I could write.

Earlier today I also tweaked some aspects of my HDR pipeline adding night tonemapping / blueshift, also adjusting the light adaptation aspects to look more interesting and realistic ( the transitions from dark areas to well-lit areas & simulation of the eyes' light adaptation process ).

Here are a few screenshots of the Night Tonemapping in the engine...







I'll have some more updates soon ... stay tuned.

- Dan
dgreen02
Hey Guys,

So I've been back in town (Raleigh, North Carolina) for a few days now, after attending my first E3 out in Los Angeles, California. As I mentioned in my previous entry, a certain publisher flew me out there, put me up in a 5 star hotel in Beverly Hills, and hooked me up with an affiliate pass to get me into the Expo. It was a great time, though the hotel was a decent distance away from the expo ( 20-30 minutes depending on traffic) ... I enjoyed the cab rides and the scenery.

The publisher meeting
So the publisher in question obviously didn't just fly me across the country for a vacation, we had a meeting scheduled so they can meet me in person & see live demos of my projects. In prep, I purchased a brand new gaming laptop [ pretty sweet I'll post pics sometime ] to assure that my demos ran correctly. I've been testing my projects on this laptop for the last month or so.

The morning of the meeting I wake up, refreshed, ready to kick some ass ... now get ready for the twist - one hour before I have to get in the cab to head over to the Expo, I power on my laptop to make sure everything works - and it BLUE SCREENS, and will NOT turn on. This is a major worst case scenario. I tried to power the computer on 10-20 times, safe-mode, memory diagnostic mode, everything blue screens the instant the computer is powered on. Total worst case scenario.

So I shower & get into the cab as a broken man. Luckily I have the foresight to burn backups of each demo to multiple CDs as a fallback incase something happened to my computer - but this is FAR from ideal. I arrive at the convention center - go to the publishers booth [ there were arrays of quieter back meeting rooms @ the expo ]...I deliver the bad news, and we take the computer out of the case just to check it out again - and BOONDABAH! It powers on the first shot :-) I thank a lucky penny I found on the ground moments before lol.

So we go into the back room for our meeting, and after the first demo they said it was the most impressive thing they've ever seen by a single person [grin][grin] I'm very excited about that, it makes the years of hard-work and sacrifice worth it! So we're going to move forward accordingly ... I will try to keep you guys updated, but yea - I couldn't be more stoked :-)

After that - it was all a blur of 5 star room-service, California sunsets from the 5* rooftop pool, hot cars, hot girls everywhere, and horrific cross-country flights ( I think my neck still hurts lol )...

All told, I would say that it really couldn't have gone better - except for the laptop scare - which took a few years off my life.

Soooo....

On to the pictures...
Outside the convention center - Crysis 2 is going to be amazing. They had a line inside the expo you could wait in to play it...


Outside my hotel, SLS @ Beverly Hills. Apparently the hotel has some Benzos named after it, the badge on the back of the car said "SLS" :-o Obviously styled after the old 300SL Gullwing Mercedes.


Enjoying the LA sunset from the rooftop pool of a 5 star hotel [grin] ... Mojito please...or two, or three, or...



I swear I'm not part of the rebel alliance! They kept saying something about wanting the secret deathstar plans back, droid this, ... I dunno, typical rent-a-troppers xD


Yes please...oh behave baby...oh behave...Austin Powers


Argggahhahaaaa....


Here are some pics I took from the expo floor - I have 100s of them, it's hard to cull it down to a few...

FWIW I have uploaded 30 videos to this page
http://qik.com/dgreen02








Ah well that's about it - I guess you could say mission accomplished in terms of meeting some very cool people @ the publishing company, showing them my projects, and their liking what they saw. I'll keep you all updated, and I appreciate all the support over the years.

- Dan
dgreen02
I've never been to E3 before - but this year a certain publisher is flying me out there and taking care of everything, which made it possible.

I'm quite excited about it all, and I'm working feverishly to get the finishing touches on the demos that I'll be showing them. Hopefully they will like everything they see, and we can move forward :-)

So wish me luck on that...



I've also recently acquired a 4G Evo [ by sitting outside the store at 6AM on launch day lol ], which is hands down the greatest phone ever made :-) This phone can do _everything_ ... IMO it's a bonified iPhone killer.



I'll be uploading videos of my adventures in real-time using one of the phones' two cameras ;-) You can see the feed of live videos here -

http://qik.com/dgreen02

Alrighty, I have a lot to do, so I'll get back to it ... more updates later!

- Dan
dgreen02
I've been working on re-integrating the roads...I also added helicopter physics, new artwork, bases, a procedural road generation system between command points/points of interest. Also implementation of a deferred particle system, loading/saving of maps, and improvements all around the board. The real-time strategy interface is still needing some luvin' so I'll look into that ASAP.

Pathfinding is used to run 100s of iterations around the map to pick the optimum road placement in the level. Heights are auto-smoothed against the roads as well.

Here are some screenshots of a few vehicles in the recent build ...



Here are screenshots of each of the two bases on this level -



- Dan
dgreen02
I've been working on every aspect of the game, as usual. Most progress was made adding the Real-time Strategy aspects into the game, getting Havok Physics fully re-integrated into the engine, adding entities into the game's database (tanks, buildings, vehicles), I got quasi-dense grass rendering back into the engine, tweaked the clouds/sky brightness, added local terrain shadow mapping, entity render-to-texture functionality....on and on.

About the Havok physics reintegration - that was a relief to be done with. I was afriad the physics would run so slow on these larger maps - instead there is nearly no frame-hit with < 256 objects on the 2049x2049 terrain. Basically the terrains are so large it crashes the Havok remote debugger because they have no way of rendering so many millions of triangles. I also coded a water plane and bouyancy on objects using havok unary actions.

On a unrelated point I did size the worlds down, so they only take up 50km x 50km now.

I'll just post up the screens so I can go get some sleep ;-), I'll write a detailed update soon describing all the work I've done. This update is mostly so I don't have to jam all the progress into a single uber-update in a few days.

Abrams in the grass
This one shows the quasi-dense grass rendering I just coded, adjusted sky brightness...3D tree rendering with full shadowing.


Real-time Strategy Early
Lol- ignore the spinning Abrams, that is testing some render-to-texture stuff. This screenshot shows my current work-in-progress of the RTS interface, I've designed a few, and I think this is the general layout I'm going for.


Mini maps
I wrote a custom shader to render out the mini-maps, it basically merges the ambient occlusion, does some NdotL lighting, and runs the color map function that samples all the different color maps @ each altitude and slope.


Bradley, and Barrel
I can dynamically spawn objects into the world using the new entity system I've written. There are 35+ entity types in the world currently. Everything from people to vehicles, trees, buildings, etc. - all running through a common system I've written.


New vs Old
I'm not ditching all my old art-assets from the previous iteration of Armored Warfare, instead I'm making them rare/higher end units in this game.


MLRS
Multiple Launch Rocket System. That's all.


Midwest terrain
Screenshot of the midwest/plains map...


Amazon terrain
Screenshot of the amazon/river map...


Well that's all for now ... hope you enjoyed the slideshow :-o

- Dan
dgreen02
Million Tree Rendering
The last few days I've been working on upgraded tree rendering system. It needs to support a few million trees per world. I use a static imposter system at far distances, a dynamic imposter system for nearer trees, and trees near the camera are rendered full 3D.

Hardware instancing using multiple vertex streams is the key. There is no LOD/culling on trees in the below screenshots, so I'm rendering the millions of trees every frame. This is mostly to help give an idea how slow things will be running with 16,000+ dynamic imposters on all the entities in the game world. Performance is not bad even on my aging 3 year old computer.

Sun Rendering
I've also made a pass on the sun rendering and the night-skybox rendering code. The full dynamic 24-hour day system is almost *something something complete*. *something something dark side*. And by that I mean it's just about functioning again. If you remember my previous post about a week ago, I've had to re-write my HDR pipeline. So I'm going over all the effects and updating them while re-integrating them with the new pipeline.

Everything shown in these screenshots is faked using my own approximations, no fancy atmospheric scattering algorithms here ... just good old fashioned smoke and mirrors ;-o It's still a work in progress.

All this graphics stuff...what about gameplay
Yes I'm aware a tree-renderer isn't the goal here ... but in order for me to be excited about a project I have to keep updating the gfx lol. I am about to transition heavily into work on the integrated WYSIWYG editor, also building up the Real-Time Strategy interface. This is going to be a full-on strategy wargame. The kind of thing I've always wanted to make. Obviously you can also control any unit on your team, at any time - which makes things more interesting.

Screenshots...
Please don't hate me because I don't thumbnail my screenshots :-p













- Dan
dgreen02
Hey guys, I was working on my cloud system earlier today and decided to rollback to my old billboarded solution ... this is temporary until I get some more time. I have to put all my focus on the gameplay and more important parts of the visuals/engine so I can finally release "Armored Warfare".

Here is how the clouds are looking, I sort of came up with this hack/cheat of improving standard billboarded clouds in the last few hours...
NEW...


I didn't take any screenshots of the old billboarded clouds, so I'm going to reference this one from my online gangster game [ Urban Empires ]
OLD...this screenshot is from 2007.


My old clouds looked 'alright', but I wasn't satifisied because there was really no form of light scattering, or 'silver lining' on the clouds. I was thinking I could possibly fake it using several channels of the billboarded cloud texture.

This is an example of one of the 4 clouds I created. The way the channels are generated is sort of complicated, if anybody is interested I'll type it up. The most important part of it all is channel G, which is multiplied by the dot(sun,cloud_normal) so it produces a glow/lining on the clouds when the sun is behind the cloud.


Here is the pixel shader code I wrote to render the clouds, very friendly indeed...

//CloudAtlasSampler = texture contatining clouds
// Alpha channel = Cloud transparency
// Red channel = Blurred cloud center darkening value
// Green channel = Cloud lining/rim value
// Blue channel = unused / saved for future effects
//Input.Lighting = normal vector of billboarded cloud
//g_SunVector = Sun's worldspace vector
//The "*0.75" "*0.9" are unique color scaling values for my game engine, to

float4 CloudPixelShader( CloudVS_Output Input ) : COLOR
{

float3 SunColor = float3(1,1,1);
float4 Texture = tex2D( CloudAtlasSampler, Input.TexCoord.xy );
float3 RimLighting = abs(dot(g_SunVector, -Input.Lighting))*Texture.ggg*SunColor;
return float4(((max(0.9,Texture.rrr)*0.75)+(0.5*RimLighting))*0.9,Texture.a);

}


Some pics of the result ... not bad for the nearly non-existant FPS hit. Plus they are lit dynamically, and scroll around the world. This would be a good base to render some truely volumetric clouds over.





And here is a debug shot, to show how low poly and cheap the whole effect is, IMO it looks pretty good, though is obvioulsy not 100% realistic.



Until next time...

- Dan
dgreen02
Overview
Alrighty, where to begin...first off I removed my last two entries, I'll try to cover everything that was in those entries here. I copied those last 2 entries onto my forums if you're curious [ Click Here ].

I'm not posting these images of my technical works-in-progess for people to extrapolate my design intentions or critique my methods/design choices, etc. There are 1000 factors behind the scenes ... please understand that I can't always talk publically [ NDA for example ] about the exact reasons why I'm working TOWARDS something, or posturing my games/technology in a certain way.

Ok ... that said, I've been too busy on many things...my secondary work machine died on me yesterday. I took it to the shop to have a new HDD and Windows7 OS installed after the issues are fixed, not sure how long it will be. Luckily I have a fleet of computers here so I can continue working on stuff ;-)

HDR pipeline rewrite - I've been luggin' around 10,000s of lines of code from 2007 era of my technology. I stripped all that stuff out and rewrote my whole HDR pipeline in a matter of 3-4 days (using what I'd learned since '07). It's much faster now, and I've finally got Multisample Antialiasing (MSAA) working on everything again! This makes me very happy. My tech now uses RGBE format or full 64-bit render targets - the tonemapping and bloom have also been rewritten from ground up.

The hardware requirements for my games are still the same, I've specifically kept my main work-machine's hardware almost unchanged for 3-4 years.

Sky/Cloud Rendering System WIP - So for many years I've been trying to get an interactive / volumetric cloud system into my games. This is such an advanced field it's not exactly trivial to get some great looking clouds rendered especially (IMO) due to all the issues alpha blending presents when combined with transparency, and shadow-mapping. I spent a few days writing the whole volumetric-ish cloud approach, and but was still not satisfied, so I rolled back to a simple billboard approach I've been using for years. It can later be extended to support volumetric clouds using instancing/imposters [ as in the papers by Harris, et. al ]

So here are some screenshots of the dumbed-down cloud rendering system on the new 100km x 100km terrain ... since I removed the last two posts in my journal, I'll type up a bit on the major changes in Armored Warfare after these screenshots...







Changes to Armored Warfare
I've recently expanded the maps to be (100,000m x 100,000m) verses the old (~2,000m x 2,000m) map sizes. This has all kinds of advantages to the games in terms of ability to handle more units at better frame-rates, gameplay enhancements, etc. I'm not going to type it all up now. kthx.

The other big change I've made is the addition of a Real-time Strategy mode into the game. Any player in the multiplayer server will be able to give orders to units, or control a unit. There is a rank/hierarchy in-game to prevent griefing, and noobs from ruining the game. This gameplay is similar to Urban Empires ( my gangster game, www.urbanempires.com ). Merging RTS/Action in a large ( 32-64 players ) multiplayer setting. All the netcode, has been written since 2006, I've done-and-redone these systems more times than I care to count - making massive improvements each iteration.

Additionally, every object in the world now uses a new entity managment system I've written. This new system greatly simplifies work needed for new/ additional features...and it's never been easier for me to work w/the engine.

Small changes include things like addition of real-world units [ tanks, ships, jet fighters, etc. ], more realistic maps and scenarios, and a few other things.

Imagine this build of Armored Warfare from 4 months ago, merged with the above landscapes I've developed ^^^^ I can't wait...


Geomipmapping Wireframe
Here is a wireframe view of the GPU based terrain rendering system I've written...


Misc Screenshots
Some of the early real-world units in the game...


Some older screenshots of the cloud/sky/environment...



Alrighty...I typed that up pretty fast, sorry for any typos ... that was my first *real* journal entry in a while lol.

- Dan
dgreen02
Bleh, seems I'm always tired when I post these journal entries, probably because I've been up for countless hours and it's now 9:30 AM. I have to stop working on this stuff now lol.

In the last day or so I made a lot of progress on the Real Time Strategy mode in Armored Warfare...I also got the water rendering working nicely with the GPU based terrain renderer ... I don't have the energy to type a meaningful description of the systems I've written in the last few days - but suffice to say I've coded them a few times in the past in one form or another ;-)

But yeaaa, I feel really good about this small iteration of Armored Warfare...I think I'm close to achieving the wargame I've always been trying to make. This is basically exactly how Urban Empires plays with the merging of RTS/Action modes...being able to control a huge Naval Destroyer on the ocean then zooming up to the RTS view and zooming down to control a Abrams tank on the otherside of the map in a battle for a crucial command point. Or just sitting above giving orders to all your units then zooming down to control a soldier anywhere in the game world.

Ok, enough of that - on to the screenshots. Remember this is all WIP - especially the rendering of the water, I'm reworking the lighting on that shader. I'll post an update in a few days w/ lots of new stuff.

These screenshots are only showing the water geometry and some placeholder shading ... something like "Color = (Fog * (waterColor*Reflection*ShadowingAmount))" ... there is no lighting in these screenshots.





Because the game was designed to be played from an action point of view, the Real-time Strategy aspects have very nice visual quality.





If you guys are like me, you luv teh developers work in progress stuff / wireframe / etcs ... so here we go. A lil sumtin sumtin
dgreen02
Hey guys...I've been very busy lately working on a lot of things. A lot has been going on behind the scenes, most of which I can't really talk about...but long story short I've made some modifications to Armored Warfare.

Some of the bigger changes include:
- Expanding terrain to 100km x 100km real world size
- Writing a Geomipmapping system for rendering large terrain ( using vertex texture fetching )
- Rewriting all physics system ( adding support for Bullet AND Havok )
- Create uber-awesome entity managment system which is currently making things 10x easier than it's ever been to work w/my engine.
- Added realistic vehicles to the game, the futuristic ones shown previously are still here ... they're unlocked later
- Emphasis on large Real-Time Strategy combat/managment, with ability to control any unit at one time.
- Finally got my normals fixed up w the Nvidia Mesh Mender library.
- 64 players per server still, only 2 teams per server.
- Focus on realistic campaigns on large terrains, control of cities instead of generic cmd points.
- Control of land/air/sea/human units.
- Joystick / X360 controller support in planes/choppers.
- And more! ;-)

Lots of stuff like this...I will be steamrolling progress in the coming days so stay tuned.

I bring gifts of screenshots and a taste of things to come ... look for a new Armored Warfare BETA with all this new stuff in the coming weeks/months...

- Dan

Vehicle showroom...currently packed ;-)


Apache helicopter flyin' around...( basic shading )


100km x 100km terrain...it's huge.


Another screenshot of the main menu visualization...


F15E Eagle flying over the terrain. ( basic shading )
dgreen02
Phew - I just uploaded a 3.2GB version of the game for some people to check out ;-) Hopefully that will go well.

I just added a ton of stuff into the game ... everything about the aerial dropships has been coded since the last update. I had to code a blurred rotor rendering system that would play nicely with the shield transparency. I guess the solution was to render the blurred rotors 2X - once before rendering the shield, and once after. This is the only way I'm able to get their transparencies to look correct in all situations. I'll post a test case of this situation later. The blurred rotors look waaay better than regular geometry did ;-)

I designed the dropship rendering system to support 64 dropships at once. The high LOD model is 11,000+ triangles, the far LOD is 720 triangles. Each dropship is uniquely animated...the landing gear, flaps, door, rotors, etc. This pretty much put instancing out of the question :-/ Still performance is acceptable IMO.

Some other things I worked on include adding a shield sound for when the caemra enters/exits the base, footstep sounds, obviously the dropship rendering system, the dropship AI, dropship dust clouds, dropship 3D rotor sounds, various HUD items, etc.

Another point of focus was optimization of the grass rendering system [ moving from shader instancing to hardware instancing ]. I still think the system is pixel-shader fill-rate limited especially at high resolutions in dense grass fields. I render them using hardware geometry instancing with vertex texture fetch against a heightfield to align the grass perfectly to the terrain.

Well I'm supr tired so ... screenshot time ;-)

These are resized from 1680x1050 screen grabs of the 3.15.2010 build...

Dropship on the Beach Assault map...


Dropship on the Grassland shield defense map...


Grassland shield defense map...


Testing soldier worst-case scenario...256 soldiers grouped together...


Testing dropship worst-case scenario...32 dropships inside the shield. Note how the blurred rotors work correctly with the shield transparency, as described above.


Alright guys, until next time...

- Dan
dgreen02
Hey guys, I'm about to check out so I'll keep this quick [ been working for many hours ].

I posted a WIP image earlier of the aerial dropship based on the V22 Osprey design ... my artist finished the model. The main LOD0 comes in at 11,500 triangles with 4096^2 maps [ that's 150MB of texture data ]. This model is crazy.

I'm in the process of rewriting/refactoring/optimizing key parts of the game for the final time/iteration *fingers crossed*. The terrain is still in 'temp status' that's why it's totally flat and featureless ;-). Terrain is next up on the chopping block. The biggest change will be separating the map into chunks of flat-hilly areas mostly generated w/perlin noise. The other [ new ] part of the maps will be tessellated much more and will be based off a usual fractal mid-point displacement algorithm to generate some sharper mountains to contrast the smooth hills.

So before I can go on to the terrain I've finished some other systems such as optimizing the building/env object rendering system, the character rendering system [ I know I said it was done before - but there are so many fine details ]...especially when dealing w/150MB texture data per asset and 10,000+ triangles per asset. There are so many LOD systems and considerations. Some of the recent additions I made today include...

- Muzzle flashes on character model [ adapting the model's 2nd light to match muzzle flash direction and color ]. I also added heat blur and dynamic lighting on the terrain. This is best displayed via video format - but until I get the terrain and the rest of the game back together screenshots will have to do ;-o
- Support for interior lighting on character model[ adapting the model's 2nd light to match interior building lighting ]
- Optimization of building/env object rendering [ creating lower detail (LOD) pixel shaders ]
- Optimization of specular texture size. Why load a 2048x2048 color/normal/specular map set when the specular map plays such a small role in the overall display of the model. Running things w/a 2048^2 color/normal map and a 256^2 specular map looks nearly identical...and gives a very nice speed increase.

I'm having all these assets created at uber resolution ... but my main work/test machine is still a 32-bit XP machine. Luckily I'm forward looking and am including uber-resolution modes where things are unnecessarily high detailed. Usually 4-8x higher resolution than I can really test/show in these screenshots. Hopefully somebody w/ a DX11 1750MB card somewhere can show me how it looks :-p

Eh...on to "the work in progress" screenshots. I've stripped out nearly every aspect of the game for a final optimization pass ... so remember that lol.

I'm embarrassed of these screenies, due to the lame-flat-terrain in the background. Don't worry - I'm waking up bright and early 2morrow to finalize the terrain/random generation system for good :-o

Note lighting on front of helmet ( bleh just noticed skinning error on the bottom of the torso armor...will try to fix that tomorrow as well )


EDIT-Just got this one fixed ... here is the updated version


Now continue on w/screenshots...








dgreen02
I just put some advanced shading on the new soldier/character model [ self-shadowing, indirect lighting, goggle shader, etc ]. In addition I've been working on the random map generator stuff [ fractal mountains, l-systems, erosion simulation, etc ]...so errr, ignore the flat/empty terrain in the background of the below images ;-) I also coded a new shield shader for the team bases. All while slowly improving most other aspects of the game, and actually increasing the frame-rates through a lot of optimization on old-rendering systems in the engine.

Character Shading
So the shaders on the character model previously has been just a basic shader that handled diffuse & specular lighting in tangent space of a normal mapped GPU skinned character. There was no self-shadowing on the character model [ ex: the arm didn't cast a shadow onto the body ]...also there was only support for a single directional light source. Also there was no consideration for the goggles on the character models, or reflective surfaces.

All that has been updated. There is now full self shadowing on all parts of the models, 'fake-indirect-lighting' [ through support for up to 3 light sources at once on each model ], and there is shader code for the goggles [ modulated by alpha channel in specular map texture ]. Also there is support for general surface-reflectivity on the skinned character models [ modulated by alpha channel in normal map texture ].

Here is a debug output of the new shadowing/shading.



Obviously self shadowing plays a huge role in the appearence of a character model - I'd say that was the most bang for the buck. This is an image of just self-shadowing added, and no other modifications to the old character shader.


Here is an image showing one layer of the 'goggle effect', I basically take the inverse of the dot product of the eye-vector and the surface normal and raise it to a power ... then I layer several of these multiplied by various colors. As well as cube-map-reflections on the goggle glass.


One other thing I did to increase the quality of the rendering was to calculate the shading for a second directional light which would simulate some sort of fake indirect lighting. Here is a debug screenshot of the lighting system - the red indicates the second light source...


Here are various screenshots of the new system - I'll be improving it over the next few days.




I also wrote a new shader for the team shields / forcefields...it is based off inverse eye-normal dot product as well to achieve the halo [ lol ] effect.


I'll keep you guys updated!

- Dan
dgreen02
Hey guys,

First off - I FINALLY updated the homepage of Radioactive-Software, it had not been updated since late 2008 ... [grin]. I also recently (finally) snatched up radioactivesoftware.com [ no dash ] domain for less than $100 and forwarded it to my site radioactive-software.com which I've had since 2001. That had been bothering me for years, and it just came up for sale again. I had one guy try to sell it to me for ~$1,500 which I was unfortunatly honestly considering ;-).

Now, I usually don't post work-in-progress models/artworks anymore - but this one is really awesome IMO. My main contract artist is working on an aerial dropship for Armored Warfare. The model's shape is based off the V-22 Osprey [ http://en.wikipedia.org/wiki/V-22_Osprey ], one of my favorite aircraft designs of all time.

It will replace the World War 2 style landing crafts on the beach assault map...and will also allow me to make the gameplay more dynamic by inserting troops quickly anywhere on the battlefields - which are pretty big - not fun to cross without a ride ;-)

I think the poly limit for this guy in-game for the highest LOD will be somewhere around 10,000 triangles. I want to keep as much geometric detail on this as possible. Obviously there will be aggressive level of detail reduction in-game ... the lower LODs should be down < 1000 triangles. Since there can be 32-64 of these dropships per world.

These are designed to carry a squad of 16 soldiers, or a single vehicle at a time.

FYI, I have an older version of below un-textured model in-game @ 26,000 triangles and 4,000 for distance LOD and it works fine. For texturing we're probably going to do a 4096x4096 set of color/normal/specular maps.

I'll keep you guys updated - props go to my fantastic artist Tom.



- Dan
dgreen02
Hey guys,

Sorry for the long break between updates. I got burnt out and took a month long hiatus around the holidays...one of the benefits of being 'self employed' I suppose. The freedom is a double edged sword for sure.

Either way I'm back on the project with a passion, over the last few weeks I've been working with my main contract artist 'Tom', who has created a high resolution player model for Armored Warfare. It weighs in at ~10,000 triangles with 150MB+ of texture data [ 4096^2 color, normal, specular ]. Magnificent work IMO...I can reskin it and adjust the colors later on [ for each team ]. Right now I'm just using a brown/green skin for testing.

What's a new player model without a hawt animation system to go with it? In addition to the GPU skinned/instanced normal mapped characters I render [ ~700 triangles ], I now have two higher LODs as well to work with. So I coded a brand new animation-system-to-end-all-animation-systems over the last 70-100 hours I've been coding day and night to get it done. There is still some work but it solves some issues that I've been wrestling with for many many years.

Previously I would use the Micorsoft .x format, this caused me so much pain from 2005-2008. In that time I spent months cobbling together an efficient and workable system that would allow me access to weighted vertices in animations (infact I would cite these flaws as one major reason I delayed Urban Empires)...Milkshape3D (my other supported file format) did not support 4 weights per vertex in it's specs or editor until relatively recently. This was a game changer for me. I coded a new .ms3d system up in 2009 it worked alright. This new system, the twenty-ten system ;-) is nearly perfect. Nearly full support/integration with Milkshape3D [ I import HL .smds exported from 3DMax to make the conversion to a usable format ].
It goes:
3DMax -> SMD Export -> Milshape3D -> SMD import -> Save .ms3d file -> Load into game.

It might sound complicated but, it's a walk in the park since the HL2 export tools are so solid. Compared to .x format it's night and day. Also, on a forward looking note since the demise of the .x format in DX10/DX11...I'm ready to roll into the future ;-)

So yea, the new system supports every kind of feature you could want in a model format, tangent space generation, 4 bone per vertex weighting, GPU skinning/instancing, full CPU skinning fallbacks, arbitrary animation blending, unique top/bottom half animation blending, integrated level of detail, smooth animation speeds across all frame-rates...on and on...coded in the last few days. Even has support to read comments from the .ms3d files that were typed in Milkshape3D.

Well - here are some screenshots of the new character model / animation system....they are EARLY screenshots. The next 24-48 hours will show major improvements.

*NOTE - there is no advanced shading on the character models, or advanced self shadowing.
Click for high-res 1680x1050 versions...













A WIP image - basic shading w/tangent space normal mapping against a single directional light [ ignore background soldiers ]


Well that's how it looks now. I'll be back in 24-48 hours with an update. I'm very excited at the possibilities.

I'm also updating all other aspects of the game - making my dream Wargame doesn't seem toooo far away. Though sometimes I wonder why I go at it all alone. I suppose the answer is because it's impossible to trust other people to have the same level of dedication to the project that I have. It takes years to make a solid game, and I wonder how many people would have the faith and patience to work through it all with me.

One thing is for sure, in my old age [ 25 ] I'm getting tired of all this work...lol, I need to finish Urban Empires & Armored Warfare and hire a fulltime artist, and a fulltime assistant programmer/tools programmer to help me flesh out my engine.

All in due time I suppose...eh...back to work :-)

- Dan
dgreen02

Win. ?!?

Wow, don't think I've ever worked so hard to get something finished on time, evar, in my life.

Just uploaded a new 930MB ( ~2.3GB unzipped ) version of this game for an undisclosed publisher to check out ;-) I'm nervous ... pray to the programming gods for me.

I just did 15-18 hour work days Fri, Sat, Sun - and now it's Monday and I've been awake way too long ... I was driving to my office at 6AM in some of the thickest fog I've ever seen to kick off the upload [ faster to drive the DVD to office and upload then to upload from home ]. It was quite an adventure.

'Suppose I'll get some rest now.

dgreen02
In prep for BETA release #2 of my vehicle combat game ( previously known as Warbots Online ) - I decided to change the name to something a bit better - just about every domain .com is taken for anything close to what I want. So I decided to go with Armored Warfare in lue of Warbots Online. I registered www.ArmoredWarfare.com and www.ArmouredWarfare.com so you foreignars dun get confuzed :-p

I was thinking about having a name-contest for the game, with a prize of a $5 gift-certificate to Wendy's for a bacon and cheese sandwich - Ok, I could probably spring for a cooler prize if somebody can come up with sick name.

Well...what's a new name without a logo, I spent probably 4 hours working on this today. I'm pretty happy with it. My plan was to draft up a bunch of logos, but IMO this one is pretty good - read, good enough to be done with it lol. EDIT - It looks a better on a black background.

Clicky & scope the front page ( the rest is temp on this site ) -
www.ArmoredWarfare.com and www.ArmouredWarfare.com



I was going for a multiple-scene-in-one feel for this image/banner ... the left bottom shows some soldiers running from a giagantorz mech, the bottom right shows a tank flying across some open terrain, and in the top right of the screen there are some drop ship transport thaaaangs rollin' in. I added some grunge and wear/tear to the logo, and all the usual stuff. Pretty neat how the two Rs line up in the middle of the logo as well.

As usual feedback is always appreciated. On the logo, and I could also use some feedback on the layout / setup of the Armored Warfare website. I was going for a basic php thingy, I moved away from a Drupal based CMS for the Warbots Online website, and unified on my own php based framework, I just find it easier to work with... I only use newspro for updates on the front page, and I also use a thumbnail library for the gallerys on both Armored & Urban homepages.

Urban Empires Website updated with actual content!
Speaking of Urban Empires... guess what... I also updated that website while I was at it. The homepage for my gangster RTS/Action multiplayer game had ONE screenshot in the gallery ... for like 2 years. So I fixed that, straightned up a bunch of stuff, and overall I think people can get a good impression of the project by simply viewing the front page.

Try it out ....
www.UrbanEmpires.com and www.Urban-Empires.com



Summary
I think both the homepages for Urban Empires and Armored Warfare should give a pretty much instant feel each game, there are 5+ videos on each, and a sh*t ton of images. So this should also help people get a quick feel for for the games.

Yay time to sleeeeep, after a 20 hour work day on web-stuff! I'll finish the websites 2morrow and then get back to coding and preparing the 4-5 new HD Videos for the release of Armored Warfare BETA 2.0 , which shows all the new stuff I've added since August.
dgreen02
Hey guys, figured I'd post this stuff up before I get too back logged...I want to post new HD videos showing the Beach Assault gameplay, the weather, the construction cave, the walking robot, and all the new things I've added since August ... the game should be back in a showable state any time now....so get ready :-o

Higher resolution grass...and some WIP screens
I realized I was using a veeeery low resolution version of my grass texture in the previous screenshots, I really didn't notice until I ran the game @ 1680x1050+ resolution, but it makes a huge difference in the quality.

These screenshots are resized from 1680x1050...in-case you didn't know everything is 100% dynamic from the time of day & sky, to the grass...




Early Dynamic Weather System Progress
I've been working on sky rendering for many years [ like most people ], it's really funny to me that I've essentially digressed all the way back to a technique I was using in my engine around 2005-ish [ for the main/large clouds ]. I'm now using imposters for distant clouds, fading skyboxes for night and for storms, and scrolling animated procedural clouds for lower layer of clouds. I thinned the lower layer out and added the big clouds in the background for 'cloudy' days.

My weather system is generated at the start of each game, and basically cycles through 64 randomly generated weather states. I tied a lot of the effects directly into the time animation system so clouds speed up while the sun shoots across the sky @ 8x speed, it looks neat. I also added cloud shadowing on the terrain, which really enhances the time lapse effect.

The combinations of weather conditions -
Clear/Day
Cloudy/Day
Overcast/Day
Raining/Day
Storming/Day
Clear/Night
Cloudy/Night
Overcast/Night
Raining/Night
Storming/Night

I'll release a HD video of the weather system [ in addition to many other videos ] before the release of BETA 2.0 ... it will show the time-lapse effects of my game engine, and all the weather effects that I'm still working on and have not shown yet.

Here is a collection of screenshots showing the new cloud system, all rain/clouds are dynamic and part of the sky system. None of these screens show the particle based rain, or any other effects...these are just screenshots of the backgrounds in each situation.

I'll also post screenshots of fog/overcast/storms in the next update.


Film Grain/Brightness/Contrast/Saturation post-processes
Ok I've been playing Left4Dead2 a lot xD...not sure if you noticed the subtle film grain, or improved coloring in the above images...but IMO it's a huuuge improvement over before. I've added film grain, brightness, contrast, and saturation post processes into my engine this morning. The effects are 100% adjustable in real-time by going to the options window, you can slide the % bars and see the results in the game world.

Here are some screenshots of the effects in full-strength, I can desaturate the scene and give an old film footage look, it works great. These screenshots look like stills from old color footage taken in the '40s - '50s ... it's not nearly as noticible in-game since it's animated. And it does add a lot of realism and a 'gritty' feel to the scenes...again the effect isn't this strong by default but if the player likes it they can set everything to be like this.

*note the grass in these screenshots is the 'old' low resolution one...




Here is how the scenes look with JUST the film grain and new clouds [ if you want screenshots without any of that just look at any of the game's older screenshots ] .... anyways, you can see how dull the game's colors were before. It was especially bad @ noon.


- Dan
dgreen02
HAI. I was going to hold off on this update - but I think this is so cool I have to show you right now :-o

I've been working on Inverse Kinematics, a fully-blown dynamic weather system [ rain, t-storms, clear, cloudy, overcast - more on that next update! ], I'm also finalizing the Beach Assault map...and a million other things from Squad AI programming to coding a beach shore rendering system. So much work...luckily I enjoy it more than anything [grin] [grin]

Inverse Kinematics / Physics based Mech Walking
A while ago I had a Mech model created for Warbots, only problem was the animation looked kinda "not cool" on uneven terrain. It looked so bad, it was reason enough to not include the walking mech in the game. btw...I wish I had more energy right now to type this - I've been coding for about 10-15 hours a day ... every day. I've spent the last 20-30 hours working on this system and I finalllly got it working - because I can't give up until a problem is solved hehe.

Basically instead of running through a pre-canned animation for the mech, I rigged up a new skeleton and coded a real-time animation system that would always align the Mech's feet in a proper position regardless of it's orientation [ within reason obviously ].

I'm working on an improved walking engine, and logic, so the robot knows where to set his feet optimally, when to change foot positions, also different run periods and speeds, and of course I want him to loose his balance when he gets hit with a rocket xD...that has to wait until tomorrow.

This stuff is all a work in progress...a day of work at this point, and it's already looking reaaaaally good in motion!

I'll let the debug/progress screenshots do the talking -
Note: self shadowing, and shadow casting is disabled on the mech, it'll look much better when I re-enable it, I had to code a special type of "robot object" to make all this work....*rambles on*







Here is a screenshot that details the re-rigging process I went through ... comparison between the 'static' animation skeleton and my dynamic physics based skeleton...


Jus' me 'n' my robot.
I need to add ninjas into this game...somehow...ninjas....


Beach shore blending effect...
So many games have rough transitions between beach and water. I coded up this system to sort of smooth it out. The foam is animated, etc. It's still a work in progress.



Progress on the Beach Assault map
I made major adjustments to the map. I made it so there is shadowing on all objects, the imposter view distance has been pushed out, I added rocks, I tweaked so many things. Mostly I added craters and more variation on the beach/sand area.





All the vehicles in the game...
Let me show you my polygons...


Also, since this wasn't posted directly in my previous entry, here is the ditty on AI from last time -
Quick Aside on AI: flocking evasion, targeting, objective/order evaluation
I've made some improvements in the last day or two on the human/squad artificial intelligence, as well as the robot's AI.

Here is some incomplete code/early data structure design, and some images of how it's looking ... no comments on the style please lol...I don't know why I'm even pasting this, I just feel like including some code in an update for once xD

//WO_ArtificialIntelligence.h, (c) 2009 Danny Green, Radioactive-Software.com

#ifndef WO_ARTIFICIALINTELLIGENCE_H
#define WO_ARTIFICIALINTELLIGENCE_H

//ROBOTS
#define MAX_AI_ROBOTS_PER_WORLD MAX_ROBOTS_PER_WORLD //total number of AI robots that can inbahit the world
#define MAX_ORDERS_PER_ROBOT 5 //size of the robots's order stack / number of simutanious orders

enum RobotOrderType
{
ROBOT_ORDER_STOP_ALL,
ROBOT_ORDER_IDLE,
ROBOT_ORDER_MOVE,
ROBOT_ORDER_ATTACK,
ROBOT_ORDER_DEFEND,
ROBOT_ORDER_PATROL,
ROBOT_ORDER_WAIT_DELAY
};

enum RobotStatusType
{
ROBOT_STATUS_NONE,
ROBOT_ORDER_ORDER
};

enum SimulatedPlayerType
{
PLAYER_TYPE_DEFENSIVE,
PLAYER_TYPE_OBJECTIVES,
PLAYER_TYPE_KILLS,
PLAYER_TYPE_AVERAGE
};

//The simulated AI players will just 'give orders' to the robots, this abstracts the interface to where it would be
//very easy to add a 'RTS' command mode
struct RobotOrder
{
RobotOrderType m_OrderType; //ordinal type
D3DXVECTOR3 m_Position; //position associated with the order
char m_Priority; //if required [ determines if the robot will break and return fire if attacked ]
char m_EnemySquadTarget; //if required
char m_EnemyRobotTarget; //if required
double m_TimeDuration; //how long the order should be carried out for
};

//Data structure for a simulated human player
struct SimulatedPlayer
{
bool m_IsSpawned; //If the simulated player is spawned.
int m_GlobalIndex; //Global index of the robot, so it can share some data from the main robot array
SimulatedPlayerType m_PlayerType; //The type of player
RobotOrder m_OrderStack; //List
float m_SkillLevel; //0.0 being n00b, 1.0 being god-like

float m_fMovementSpeed; //Movement speed of the robot [ scalar ]
int m_numNodesToLookAhead; //How far the pathfining should look ahead when setting a waypoint.

D3DXQUATERNION m_LastOrientationQuat; //Previous orientation of the simulated player, used for blending
D3DXMATRIX m_Orientation; //Orientation of the simulated player

D3DXVECTOR3 m_TerrainNormal; //Terrain normal vector under the player

RobotStatusType m_RobotStatus; //Robot's current status

};


//SOLDIERS / HUMANS


#define NUM_SOLDIERS_PER_SQUAD 16
#define MAX_ORDERS_PER_SQUAD 5 //size of the squad's order stack / number of simutanious orders
#define MAX_SQUADS_PER_WORLD 1+(MAX_HUMANS_PER_WORLD/NUM_SOLDIERS_PER_SQUAD)

enum SquadOrderType
{
SQUAD_ORDER_STOP_ALL,
SQUAD_ORDER_IDLE,
SQUAD_ORDER_MOVE,
SQUAD_ORDER_ATTACK,
SQUAD_ORDER_DEFEND,
SQUAD_ORDER_PATROL,
SQUAD_ORDER_WAIT_DELAY
};

enum SquadStatusType
{
SQUAD_STATUS_NONE,
SQUAD_ORDER_ORDER
};

//The soldier squads be given orders by the computer, this abstracts the interface to where it would be very easy to add a 'RTS' command mode
struct SquadOrder
{
SquadOrderType m_OrderType; //ordinal type
D3DXVECTOR3 m_Position; //position associated with the order
char m_Priority; //if required [ determines if the squad will break and return fire if attacked ]
char m_EnemySquadTarget; //if required
char m_EnemyRobotTarget; //if required
double m_TimeDuration; //how long the order should be carried out for
};

struct Squad
{
//Orders
SquadOrder m_OrderStack[MAX_ORDERS_PER_SQUAD];
char m_CurrentOrder; //Current order index

//Soldier data
int m_SoldierIndices[NUM_SOLDIERS_PER_SQUAD];

//Status / info
char m_Team;
SquadStatusType m_Status;

};

#endif


















Red lines are 'threat' vectors, much more on this later...blue represents squad based objectives, and green lines indicate the soldiers resolved movement vector.

*EDIT - Note how flat the beach looks here, compared the the above screenshots.





Some showing Vehicle/Robot order completion.


- Dan
dgreen02
Edited Nov.11.2009 - Added a quick aside on Artificial Intelligence: flocking, evasion, targeting, objective/order evaluation, etc. A much bigger AI update will be posted soon...just click the 'Comments' link at the end of the post...then scroll down view early code and debug screenshots. Now on with the regularly scheduled journal update....

Hey guys, I guess I'm reverting to my old ways of one journal update a month :-o I've got a lot of stuff to show & tell lol. If you're on some kind of metered internet access you might want to bail out right about now. [ btw. almost @ 700,000 journal views, thanks a lot guys! ]

Overview
It has been about 3 months since the release of Warbots BETA 1.0 - I'm putting the finishing touches on the Beach Assault map [ I guess this is update part 2 ], and all the new features that will be included in the next public BETA release. I wanted to have it done by the end of last month, so I'm a little behind - but still very happy with how things are progressing.

Here is the list of things I've been working on since the last journal update

- Human Squad AI logic
- Procedural GPU fire rendering
- Robot AI logic
- Attacking robots [blue team ] spawn on landing craft / defensive spawn on respawn pads [ red team ].
- Updated water effect and added 3D 'shore' sea-foam effect to blend water/terrain.
- 'Flipped a switch' and got instantly improved terrain, 4-5 layers with full color/normal/spec including detail normal-mapping. More on this later in the post.
- Dense swaying/animated instanced grass.
- Team switching functionality
- Red spawn points on beach
- Red defense turrets on top of defensive pillboxes
- Human squad rank system
- True per-pixel motion blur
- Optimization of rendering and game logic, yielding net 20-40% FPS increase.
- 1000s of tiny fixes / changes...


I've got most of the low-hanging fruit in the optimization area, and fixed 100s of bugs that were in the previous BETA release already. I've got a full list but I'll spare you.

I will have some HD videos soon + 1920x1080 4xFSAA screenshots - followed by the release of public BETA v2.0 in the coming weeks, so stay tuned!

Now on to the screenshots / individual items I've been slaving over ;-)


Dense animated grass / spawns,turrets,installations / new terrain / etc.
I've made a lot of visual improvements to everything, here is a splattering of screenshots some of the new stuff -

All this stuff comes at a 20-40% net speed increase since I did a lot of optimizations on the game engine....











Detailed terrain rendering/shading ... and how I suck at life.
So this is probably one of the most embarrassing moments of my gamedev life over the last 10 years...apparently as far back as the first BETA release of Warbots all complex terrain shading has been DISABLED, the calculations were being done but not factored into the final output color in the terrain pixel-shader correctly. The ambient occlusion, nDotL self shadowing, and the other minor/ambient terrain elements were being included correctly, just not the normal/specular lighting components ;-o

So one extra multiplication unlocked a world of terrain seksyness...with NO performance decrease since I was already doing the calculations just not outputting them correctly. Ugh. Not my finest hour, but still I'll take it!

Incidentally I was playing around with the recently released Unreal3 Dev Kit[UDK] on one machine/monitor and comparing their terrain to mine when I realized something was wrong with my rendering. I notice they use about 4-5 layers on the terrain in Unreal3, and no specular maps for each layer. I on the other hand use colored specular maps per-layer[ in addition to normal/color maps per layer ], and include an extra layer than they do if my eye is correct. I also include detail normal mapping [ extra tiling / sampling of the per layer normal map ].

The improvements are visible in all the above screenshots, but I'll include a close-up of a rocky/muddy ditch....

For reference the object in the very left side of the screen is a tree trunk base...so there is a lot of detail here ;-) I'll be posting more screenshots of the 'new' terrain as the BETA #2 release nears.





Team selection / Construction Cave finalized
I finalized the robot construction menu ...




True per-pixel motion blur
Based off the GPUGEMS3 article...I actually 'invented' it but then saw the method has already been published. Eh...it works pretty well, but I doubt I'll enable it by default




Human AI Logic / Ranks / Squad AI / etc.
I've made some great advances in terms of squad based AI, and pathfinding...the soldiers will be used to capture command points so their AI is very important. The player can exit their Warbot to capture command points / bunkers - but it's easier to let the AI soldiers do it. There can be up to 1000 soldiers/humans per map.

Since it's kind of hard to show AI via screenshots - I've got some screens of the soldiers [lit/un-textured]. I'm starting to integrate the new animations, they are all in the game I'm just building the soldier state machine to support all types of animations and good stuff.







Misc. screenshots AND INDSIDAR INFOMATION :-o
A new game I'm working on, called 'Reference Texture' :-p Actually this is output of a mode in my game engine where I'll only load a 16x16 texture in the place of all regular textures. This keeps total app memory usage < 256MB. I can see this being helpful to test on low end machines.

Plus I think it looks pretty trippy :-o




Night rendering...artillery coming in, with the spotlights in the background...




Sunset ... more screenshots of the sunsets / beach / etc coming soon




Pause of some action...


First person mode, I ordered the robot to drive through the crowd ;-) This screenshot has the OLD terrain rendering method, for comparison.
Vehicle pwnage...




Until next time. And as usual I could use any feedback on this stuff...

- Dan
dgreen02
I was browsing the forums and saw this thread about screen space global illumination (SSGI), it was written by ArKano22 ... he put it out there for anybody to implement/use so I spent a few minutes dropping it into my game.

I think it looks pretty good, it could use a blur pass maybe. Currently I don't think it's a good enough tradeoff for what it might potentially add to the graphics [ at this point ], so I'll probably only be including it in my enigne as some hidden away togglable feature. And I'll keep tweaking / playing around with it to see how good I can get it looking.

My post copied from the thread -
Quote:

Here are some screenshots of your "Gauss SSGI" dropped into my game [ this map/level is for training so it's pretty simple ] ...I'm impressed with the results, especially considering it doesn't use the normal from the surface, there is some halo effects, etc. But overall, I think it looks good.

I will keep tweaking it, and report back, these screens are just a few mins of work dropping it into my pipeline to see how it'd look. This obviously isn't the best example of the color bleeding since it's a pretty dull colored terrain scene...

Ignore framerates I have many things going on the background, as well as in-game, it has full Havok physics, and is doing every aspect of the game [ I just only output the SSGI element to the screen, I can reuse the depth value I generate for my DOF effect ] . It runs at 60+ 800x600 when I disable the color bleeding sampling [ since its hardly visible it seems on this dull colored terrain scene ].

Screens w/color bleeding enabled






Here is a screen w/color bleeding disabled ( so this would just be SSAO, ambient occlusion ) -


Raw output of the depth, aka :

return float4(readDepth(vScreenPosition).xxx,1.0);





Obviously this is what everybody is trying to achieve, the SSAO from Crysis -



I'm pretty happy with ArKano22's implementation, the glsl / hlsl code is posted the in the thread I linked to at the beginning of the entry. Why not give it a try and post your findings there as well :-D

- Dan
dgreen02
Hey guys...omg two updates in a 4 day timespan. I'm trying to change my evil ways of one dev-journal update a month ;-)

I've been putting time into the most complex gameplay mode (and map) in the game, the "Beach Assault". One team is sent in on landing crafts (LCVPs) with a goal of destroying the enemy artillery batteries and securing a beach head. Once all four artillery batteries/bunkers are captured then the attacking team wins. If they can't make it before the timer runs out then the defending team wins. There are 1000s of CPU soldiers, and 64 human players per-online server. Players control their 'warbots', but they can get out of their vehicle at anytime and play on foot in a first person shooting mode.

I'll detail the specifics of the spawning system and other details on the next part - I expect this should be a 2-3 part series of journal updates over the next couple of days, given the amount of work still required until the map/gameplay mode is finished.

Here are some screenshots of the work I've done in the last few days...if you want to see screens of the first person shooting mode, or read about the other stuff I've recently done just scroll down to the previous entry. The biggest thing I've done was to add an extra layer to the map, so now instead of it being only brown, there is grass away from the beach, that combined with some new tree artwork really improved the quality of the map IMO.

There are lot of layers - obscacles [ hedgehogs, barbed wire ], grass, trees, bushes. Rocks still need to be added into this map. Still I'm very happy with the results.



Here is a view from one of the artillery installations that have to be captured by the attacking team.




This screenshot shows an arial view of the map...you can see there are 32 landing crafts each holding 1 player's vehicle, and 16 CPU controlled soldiers.

A view from closer down right near the seawall where the grass/sand meet.


Behind the artillery looking towards the beach.




A small infantry / soldier battle taking place on the beach, I've got two obstacle types in the game, the headhogs [ the X cross tank trap things ], and also some barbed wire setup.

This screenshot also shows how well the dynamic imposter system works on the humans in the game. I've probably coded 3-4 dynamic imposter sysetms over the years, none have been this stable. I based my last system, and this current one off this article on gamasutra [Dynamic 2D Imposters ].

In the screenshot there are only actually 4-5 humans who are 3D geometry, the rest are faked with dynamic screenspace quads. This is a truely dynamic imposter system. It's setting the viewport for each soldier in the world and rendering a dynamic version of each soldier every n frames or whenever the view angle to that soldier changes past some delta.




To increase the realism of some aspects of the scenes [ in particlar interiors of buildings / capture points ] I've been playing around with some SSAO:

LOL, just kidding this isn't ssao, just regular offline ambient occlusion on the artillery model xD It works to great effect on the sandbags...



And finally here is a side-by-side before 'n' after of a tree model. [ The texture used is the same ] ...


Lots more work to be done...heres a small list of the things I'll be adding to this map in the next few days ...
Quote:


- 3D layer of dynamic sea-foam to merge water/terrain better
- Finish splashes / wake on the water from the landing crafts
- Model interior of the capture point / artillery bunker
- Model the interior of the pillboxes so people can shoot out of them
- Search lights by the artillery installments
- Work on the static beach artillery firing system
- Add rocks to the terrain



'til next time [ part deux :-o ]...

- Dan
dgreen02
Hey guys,

As usual I've been working insane hours on this game. There are so many new things I've added into the game I'll let the screenshots do the talking [with a brief description below [grin]]. If anyone has questions I'd be glad to answer them...

Note: I just took this screenshot a few minutes ago, some of the others are a few days to a week old


GPU based procedural cloud rendering system
I've repleaced my static scrolling skybox with a fully dynamic / procedural cloud rendering system. You can adjust about 15 aspects of the cloud system to achieve any apperence in real-time [ video coming soon ]. You can get all kinds of really cool looking effects ... time lapse, thunder storms, clear skies, dramatic sunsets, etc. The lighting on the clouds are not technically mathmatically correct, I just do some hacks in the pixel shader based on the 'height' of the noise at the point. There were a lot of cool threads I read while working on this, including the infamous 'sky rendering' thread.







Beach Asssault map progress
I've been working on the most complex of the new map / gameplay modes...adding artillary to the defending team, adding the command points, working on the landing craft logic and animation system...there are a million details to still work out...but it is going to be GLORIOUS :-o






First person / remote robot command
I've redone the hand models and touched up the weapon model for when you jump out of your vehicle.

I've also recorded voices so your robot will communicate with you, it's pretty sweet :-D

Videos soon.... [grin]

New set of human animations & rendering with true hardware instancing
I replaced my shader based instancing with true HW instancing. I also implemented a new animation system I coded...as well as integrating a whole new set of animations. There were only 4 animations before, now there is a brand new set of 14 animations for the human models. This is all in addition to the robust dynamic imposter rendering system I added in the last journal update.




Heat Blur / Screenspace distortion effect
This effect is applied on fire, muzzle flashes, engine exhausts, explosions, and a ton of other places throughout the game.

This is what the scrolling screenspace texture looks like, red offsets on X, green offsets on Y. I scroll two in oppositite directions in the post-process shader and average them. The strength of the blur is modulated by various mask textures that are rendered to one of the channels in my misc texture [ depth of field, god rays, etc ]


Here is a example of the effect unmodulated, it sort of looks like an underwater effect.


Radial Motion Blur Post-Process
Implementation of a standard radial motion blur post processing effect. I'm thinking of modulating it based on the distance from the viewer.


Uber-Buggy / UberBot
A newly skinned version of this vehicle ... created by gamedev's own DogmaDZ
Unfortunatly I don't have the money to get the hovercraft, tank, or 6 wheeled buggy upgraded/retextured just yet ;-/



A million other things
So many other things from night sights on the weapon, to early work on squad based AI...there are so many things I've been working on. I'm gonna throw a few misc. screenshots here at the end of the post...stay tuned!!

- Dan



dgreen02
Hey guys, I'm very happy with some of the stuff I've come up with in the last week or so. As usual I'd appreciate any feedback / etc.

I've added the option for players to exit their warbots and play the game on foot with a machine gun...the catch is that the players have a communication device that they can use to give remote orders back to their vehicle. Scenario 1) A group of about 50 baddies is standing in your way, you can now jump out of your vehicle, start putting bullets into the crowd and order your robot to smash through them & surround them at the same time. Ragdoll physics, and destruction ensue. It's really awesome to see, I'm itching to put some videos of this out there :-D :-D

Until then - you'll have to survive on gratuitous amounts of barely compressed un-thumbnailed resized 1680x1050 screenshots 8-) Another thing I'm very proud of is achiving 40-70 FPS in my game @ the highest settings. You can barely see the FPS readings in the bottom left of each screenshot.



If you have a 56k connection still...you might want to close the webpage now...

Okey for the rest of you who are still here .. this is a list of the major things I've added into the game since the last journal update -

- First person gameplay / control mode.
- Robust soldier imposter rendering system.
- Replaced the soldier's dorky lasers with machine guns [ weapons go flying out of their hands when people get ragdoll'd ]
- Added 'Proving Grounds' map
- Dense grass rendering
- Fixed physics 'hopping' issues that people were experiencing.
- 'Curved' road rendering, by using a alpha/(min/max) hack.
- Fixed mirrored mini-map...blah blah blah...
- I'll post the huuuge list of things at the bottom of the entry.


The Proving Grounds

This is the level I've created to help test various aspects of the game...from physics, to rendering, to tweaking the weapon recoil on the gun range. This is also the 'Training level' in the game where players can learn the controls without getting pwned.

I modeled it after the U.S government's tank testing facility in Yuma.



The real facility again...


First Person view & gameplay
The players can now dismount from their vehicle and do work seperatly. Some of the orders the players can give their vehicles include - move to location, come pick me up, attack x, defend x, follow me...things like that. *Insert night rider hasselhoff joke here plz*

This is probably one of the coolest things I've ever done lol. I'm really excited about the gameplay potential/etc...especially since there are up to 1000 soldiers per world [ down from 6000 in the last BETA release ], and 64 vehicles/human-players in each multiplayer server.

I will divulge more details, and post many videos in the coming days :-D Then I'll be including this stuff in the next free public BETA release. If you haven't downloaded the last one, get it from the Warbots homepage!

I animated the 1st person view models so he removes his hand from the SMG's foregrip before pulling out the com device.

Without further...on to the good stuff...screenshots of the com device in a few different lighting situations [ it is animated, videos soon ]





*PS I'll be reworking some aspects of the hand/com device models so they look a little better... programmers art :->


Human Imposter System
Yup, just a standard imposter system...really helps improve the frame-rates by rendering distant soldiers as billboards :-D If anybody has any questions about this stuff I'd be glad to answer them.

These images just show the imposter texture overlayed on the scene, and the imposter triangles visualized.




First Person Gun Model Design / Features
This is a screenshot from Milkshape3D showing how I setup the first person gun model.


It is fully animated in the game, and the controls are as tight as any first person game I've played. [ I've been playing Crysis for a hour or two every few days so that's probably what I'm most influenced by lol ].

This is a list of a few of the features I can remember off the top of my head that I've coded into the game for this first person mode to work...
Quote:

-Unique/smooth, programmatically generated gun sway effects for walk/run/crouch
-Recoil
-Muzzle flash
-Delayed rotation when looking around
-Iron sights
-Character controller [ Havok physics ]
-Seperating the head/body to allow correct self shadows in the 1st person view
-Gun rotates towards ground when running
-Crouching / Jumping
-Correct tracer bullet origins
-Shell casings
-New gun sounds for 1st person mode
-Footstep sounds
-Aiming / Breathing
On..
and ...
On


Aaaand now for the promised splattering of recent screenshots... :-D
Iron sights...





More screens of the proving grounds test level... [ will be included in the next BETA release ]







A couple screens from the Beach Assault map...




As promised here is the list of items completed since the last PUBLIC beta release...#2 is coming soon!!

Quote:
COMPLETED (*in no particular order)
--------------------------------------
- Multiplayer is mostly functional.
- Fixed side-by-side/missing .dll errors causing the game not start on some systems.
- Physics 'hopping' issues fixed [ adjusted handling of the min physics framerate ]
- User's settings saved @ QUIT of game. [ Not on apply of options, to prevent bad settings from being saved ].
- 'Beach Assault' map added.
- New texture LOD/Caching system, reduced memory usage by 50%. [ on LOWEST SETTINGS - main menu now only requires 256MB memory, in-game requires 512MB memory ]
- 'R' key resets the player's vehicle orientation.
- Complete rewrite of water rendering system.
- Vehicle orientation is reset @ respawn.
- 'Siege Escort' map added.
- Nuclear explosion added for finale of Siege escort map.
- Node path generation algorithm [ cave scene, siege machine ].
- Fixed crash in Havok [ now check for degenerate triangles in static scene meshes ]
- Smoke emitters reset @ map change [ no more hovering smoke ].
- Make sun not look like a 'glowing ball'.
- vehicle and weapon selection/construction screen added.
- Fix mini-map mirrored.
- Multiplayer global lobby artwork.
- Added rendering support for 'solid' road types, such as asphault.
- Adjusted specularity and aspects of lighting equation.
- New soldier model created.
- Terrain now casts shadows.
- Siege machine, pillbox, battlement models created.
- Environment objects cast self shadows.
- DirectX Debug Runtimes -> fixed GPU VB stride mismatch, heap corruption, and unsupported mipmap D3D errors [ speed increase ]
- 'Proving Grounds' map added.
- Multiplayer collision detection vehicle->vehicle.
- Added collision detection (projectiles->aircraft).
- Added collision detection (projectiles->buildings).
- Added collision detection (projectiles->respawn bunkers).
- Replaced humans' dorky lasers, with machine guns.
- Created new XACT RPC for human sound effects [ death voice, human gun, etc. ], sound less repetative now, with accurate volume falloff.
- Fixed rockets not colliding/hitting robots.
- Humans drop their weapon when turned into a ragdoll.



- Dan