I just finished fog post process shader and it works great, but it has a huge impact on performance (fps drop from 30 to 20). Shader itself is very fast, but process of obtaining distance data for the scene is not.
Implementation of procedural clouds is another huge step ahead. In previous versions, sky was just a bitmap texture over the skysphere that made look sky cool, but completely static. Now, clouds are slowely moving across the sky and change shape, you can also see clouds coming closer when you increase altitude. They are not volumetric, but since I use three layers, they look very real.
Both features have huge impact on performance and I'll have to do something about it before I implement depth of field (almost done) and shadow mapping. But as the things look right now, I won't have much time available for development of Rebellion.
Last month I was working mostly on terrain engine, first I implemented stiching, then multi-texturing. At first I was dissapointed with look of multi-textured terrain, I made some improvements in shader, but it did not help much. Obviously, my handmade 256x256 textures were not good enough. Unfortunatelly, I don't have digital camera except the one in my cell-phone. So I searched the net and found a lot of great textures (free for non-commercial use), downloaded few and after countless hours of modifying, merging, adjusting... terrain looks very realistic.
Now its time to make some improvements on the sky-dome: clouds, sun, stars... and I have no idea how to implement any of them, but I'll figure something out.
I've learned a lot about terrain, since I started working on Rebellion, but anyway it was the worst and slowest part of graphics engine. I read some great tutorials about procedural terrain and presentation optimizatons. Until today I've implemented level of detail (LOD) and indexed buffers, and they both had significant impact on performance.
Next month I plan to implement multitexturing, stiching (to remove gaps between different LOD areas) and further improve performance.
Demonstration version is finally out! This demo does not contain everything that has been made in past eighteen months, only tutorial and training mission, but it should keep you busy for an hour. Most of content from this demo will remain unchanged in final release, but music will be completely remade in the future.
Last month I made a lot of new 3D models: flags, gunboat, submarine... and improved some old ones. I learned a lot about 3D modeling since I started creating models for Rebellion, before that my best 3D model was textured sphere for ShockBall. Ok, models are still far from professional, but they are very low-poly (10000 polygons tops), because of game performance.
This month I plan to finish training mission and start first real combat mission. Well see
In april I was working mostly on Fitter but somehow I managed to create two new models and almost finshed one map. I also improved performance of core shaders and collision check algorithm.
I also bought new computer with LCD TV, so that I can adjust Rebellion for modern computers with fast graphics adapters and big screens.
Past month I was working mostly on gameplay. I reworked training mission which will be significantly longer than old one. Game scripting language was improved, from now on I am able to split content into different files. This is real lifesaver, because I use scripts for everything: objects (no, I don't use map editor), objectives, events...
I finally finished something that makes development much less time consuming. Save positions are now immune to changes of game content. Before that, save positions became useless, if I made changes in game content. Now I use xml instead of binary files, I store only changes, and I can even edit files with text editor, if neccessery.
This year I learned a lot about shaders and HLSL. This knowledge helped me to improve water shader and terrain shader, which finally got anisotropic filtering, instead of linear, which almost drived me crazy.
Gameplay has been changed a lot, previously it was completely linear, each mission was its own "mini-world" with sequence of objectives. From now on, there are no mission or campains, just one huge world with predefined and random objectives/events.
Well, I decided to continue working on Rebellion in 2009. This is by far the best peace of software I've ever made and I feel it would be a waste to release just a short demo and quit. Maybe I was pushing too hard last year that's why I sometimes just wanted to quit.
During newyears holiday I completely redesigned game menus. New explosions and smoke effects looks really great, and new aircraft models now look better even with less polygons.
Winter is perfect time for modeling palm trees, tropical plants and islands. I made a lot of those lately, but still I doubt Rebellion demo will be released at the end of this year, as I planed.
It has been more than six months since I played a good RPG, but this month I played two: Avencast and Baldur Gate 2. Of course I haven't completely forgotten Rebellion: I made background music for third mission, created one building and few minor objects and made bonus items that remain from destroyed units.
Multitexturing for terrain has finnaly been implemented and terrain lighting has been improved. I also made two new paticle effects for collision of projectiles with solid objects and water.
I was very productive in october:
- frame rate and physics have been improved
- training mission has been slightly reworked and background music has been made
- first mission of the first campaign also gained background music and two new combat events
I plan to release demo at the end of 2008. It will contain training mission and two missions of the first campaing. Most of combat events are hard and it will take average player more than one hour to finish it.
This will most probably be the end of Rebellion, unless something unexpected happen. This whole process is to demanding, I just don't have time and motivation to work on this game any more.
In the past month I finished first mission of the first campaign and I am already working on the second (screenshots). AI has been improved, collision detection also, but its currently using too much CPU power. I have to fix that, soon!
I recently discovered simple but very usefull tool: Nprof - small and fast profiler with all the functionality I need and it's free. I hope it will help me boost frame rate during heavy combat.
Training mission is now complete and it demonstrates basics of ground and air combat. Fights are not hard except last one - gunboats are nasty.
I finally implemented shadows, made some music and now I am working on first campaing. Currently I'm working on model of transporter.
During this hot summer days I finally implemented per-polygon collision detection and it was wort it. Now I can fly near or through complex objects. I also improved AI and flying model, made a lot of new sound effects, graphics and tools.
I also made a short movie (9MB WMV) that shows two combat events from training mission.
It has been almost six months since I started project Rebellion. At that time all I had was few ideas what kind of game I want to make, no game design, no story, no models... I started with project structure (Visual C#), then made simple graphics and sound engine (XNA). Soon I had to find good tools that would help me create game content; for 3D modeling I picked Wings3D, TerraGen for terrain and sky textures, SoundForge for sound and Reason for music.
When I made flight model Rebellion was still nothing but pointless flying over the half empty terrain, then I realized I need some kind of scripting language, so I made one. This is my first game with implemented scripting and it made my life a lot easier, separeting code from storyline, dialogs, events...
AI was one thing that concerned me the most, but it had to be done. After one month of hard coding, that most probably gave me ulcer, I can enjoy watching units changing formation, attacking or retreating, evading... Combat is controled via scripting code, but each unit can override scripted behaviour if neccessery (like evading or shooting down rockets).
With all this things implemented I can finnaly focus on story and gameplay. First I intend to create four training missions where you will learn basics of flying, combat, group tactics and most importantly: following orders. In Rebellion you are not one-man band, from screenshots you can see that you will fight side by side with other unit members. You will begin as a cadet and you will gain ranks for destroying enemies and accomplishing missions. But more about that when it will actually be implmented.
This past two months I was working mostly on graphics (smoke, explosions, post-processing pixel shaders...), targeting / shooting, and sound effects. I've also implemented simple scripting language, which will help me create missions in the future.
Recently I discovered Wings3D, small and simple subdivision modeler. It's not perfect, but right now it has all the functionality I need, so I learned the basics and created few models. I had no trouble importing those models into the game, because XNA handles this quite well.
I also made simplified flight model for testing purposes, fog support and ingame console.
I was quite happy with DarkGDK until I create my first height map, simple one. Performance was great, it looked great but when I Alt+tab-ed, phew: blue screen. I searched the forums, documentation... and found no solution, tried to run Rebellion on different machines with same effect, and finnaly gave up.
During development of ShockBall I found XNA as professional product, which since then matured to version 2.0. So I ported Rebellion to C#/XNA, implemented heightmaps and skydome and made water effect.
I started working on this game at the beginning of 2008 and the project is still in the early stage. My plan is to create a 3D shooter where you are pilot, member of rebellion army that is involved in guerilla fight against much more powerfull opponent. I don't have a clear picture about whole story and gameplay, yet. Now i'm more concerned about picking right game engine and tools. Because I preffer free tools I picked Visual C++ 2008 and DarkGDK, and I am quite happy with both for now. Now I have to find some solid landscape editor and different 3d modeler (Blender is just not my type of tool).
As always I started with initial menu screen, where I could learn some DarkGDK basics, and made wrapper for DarkGDK functionality I need.