Things have been going a little slower than I had originally expected, but things have really been picking up. I've got models loading and animating. Next I'll start putting levels back in, work on some networking code, and the add model attachments. Here's my updated schedule.
I'm also going to include the latest version of the female model with improved textures. The artist in my team have been working hard getting animations done. It's been a bit slow as they're getting use to working with each other though. Hopefully soon they'll have new walk and run animations for me to show.
The video below is actually an older model. It was used for Genesis SEED. I'm using it here as test data while the other models are being worked on. This model was created, textured, and animated by Sung Shin.
Project B - 2013-07-23 Update -- Models (with screen shots)
Re-adding models has been more difficult than expected. I guess I've changed things more than I had originally thought. As I was working on the model system, I decided to knock a few things off of my to-do list. I use an component-based entity system. Before, the graphics data and the other information need to define the components for an entity were separate files. The component information was stored in an XML file. I've changed things so now everything will be kept in one binary file. The new binary format is flexible and can keep information for many kinds of components--even components that I haven't though of yet.
I've got models loading and saving, but I'm still working on animations. Here are some screen shots. The model was provided by our team artist.
This shot shows a basic model. There's normal mapping and some glow.
This shows the front and back of the model. The face is shinier than the body.
Here's my updated schedule. I'm behind and need to catch up in a hurry.
Progress has been going well though a bit slower than I had expected. I'm still behind after spending more than a week working on this problem. (direct-x-11-problems-on-windows-8-laptop). I've gotten a lot of work done. You can take a look at the current state of things.
I've been building a model tool that will be used in my content pipeline. After I get real models into it, I'll post a video blog. Right now it allows me to configure shaders and textures. Here are a couple of screenshots. For me a skin is defined as a texture/shader combination to be used with a model.
Work has been going well these days, but I've decided to take a break from the standard progress report and tell one of my lessons learned stories.
In school programming courses (high school or college), students are often forced to look at programs, trace, the flow of execution and write the programs output. This seems like a trivial unimportant exercise while you're doing it, but the skill can come in handy. This happened to me last year when I was coding Genesis SEED, my teams 3D multi-player IGF entry last year. The game has 5 basic modes: single player, multi-player server, multi-player client(with client-side prediction), peer-to-peer host, and basic peer. It was a year ago and I don't remember what the actual problem was, but basically the game worked in some modes but not in all. I figured that I made a mistake and somewhere something was missing. I must have forgotten a step somewhere. That's why I made the following:
I found that rummaging through papers while I was looking for something else. I thought it'd be cool to show to everyone. By tracing out the code I was able to find out what was missing. I didn't even have to do it for every mode. This is just one example of paper to the rescue. Sometimes when we debug, we want to quickly get into things and start changing code, but often what we really need to do is sit down and write it out on paper and examine it.
Progress has been going at a good pace, albeit a little more slowly than I had thought. The code that the entire engine runs on has changed, and I've been trying to slowly reintegrate everything. A lot of the low-level graphics code is done. That last little tech demo that I did may not have looked like much, but there were a lot of things going on under the hood. Shaders, textures, post-processing, rendering to a texture, rendering states, blend states, and basic start up code are all in. I've now been developing some of the more high level engine systems. These are the systems that game itself will touch.
I already know what things too make as I'm making exactly what I did before, but it's not as easy as it sounds. For one, as I've been writing this code, I've found that I've also needed to write the code that connects everything together. For example, the last demo that I made uses a temporary framework, but I've had to upgrade that a bit so I it behaves more like than final stuff.
I've also be taking some time to try to upgrade some of the engine's designs. From my own personal lessons learned and also from reading articles, blogs, and forum post, I've decided to change some things especially when it comes to asset management. I also want my future code to be multi-platform, so I have to make sure Direct X specific stuff doesn't rear it's ugly head in my higher level things.
One other thing that has cause a little bit of a slow down is I don't just copy and paste code from the original engine. I examine it. Because of this, I've found some bugs. I had a bug in my old game whereby, objects would look dark if you looked at them from certain angles. It turns out that the code that sets some of the shader constants wasn't getting the correct camera position. It was always getting (0.0, 0.0, 0.0).
I'm a little behind schedule, so I've updated things a bit to show where I am.
I feel really bad about my last post. I feel like I made it too quickly and I did a poor job of explaining things. Because of this, I'm going to try to explain things a little better.I want to give more details of what is in the demo that I posted earlier. Though I talk a lot about the GUI, actually the first thing that I worked on was the post-processing framework. What is post-processing, basically with it, you can achieve all sorts of effects by running the entire completed scene through another set of shaders. You can use it to achieve effects like glow, motion blur, and many other things.
Here's an example of glow being created as a post-processing effect. From Genesis SEED, out IGF entry last year
This was the first system that I worked on because I wanted to fix a bug in it. I also wanted to design a really robust framework capable of handling many different kinds of effects.
How to do Post-Processing
The basic idea of post-processing is first render the screen to an auxiliary buffer instead of the back buffer. This auxiliary buffer can then be set as a texture to a shader. Then render a full screen quad of the texture using some effect shader. To perform different effects, you may need more than one auxiliary buffer. This is shown below.
The demo that I included in my last post used a glow effect. To perform glow, it uses the alpha channel to determine which areas should glow. The scene is first rendered to an auxiliary buffer. Then I use a 1/4 size buffer and render the entire scene to that buffer using a filter to only write pixels whose alpha value is set. Then I perform a vertical blur and then a horizontal blur. The final blurred texture is combined with the original image and then rendered to the back buffer. If you download the demo from my last post, you can take a look at the HLSL shaders.
Making a good post-processing framework isn't that hard. There's a good article on the subject here.
You have to be careful though. As you will be rendering the entire screen multiple times, you can lose a lot of speed. One way to speed things up is by using 1/2, 1/4 or even 1/8 size intermediary auxiliary buffers.
I hope this was useful. Check out my previous post to download the demo and see this and my GUI in action.
Progress has been going well. I'm kinda sorta keeping up with my schedule. I got a little behind because of a bug that shows up on some laptops (WIN 8 LAPTOP BUG) so I had to postpone some GUI things. I originally used the DXUT GUI for all of my GUI needs, but I've since re-made the GUI from scratch in my effort to one day go multi-platform. I won't be able to add loading from files until the end of the month.
Here's my updated schedule.
From tomorrow, I'll start working on shaders and textures. Yes, the program is using shaders and textures now, but I need to re-build the higher-level system that my previous game used. My hope is that once this is finished, the systems will for the most part resemble the old engine's interfaces. That way I'll be able to change the game to the new framework without much fuss. This is a big job and I'll need to do a lot of testing a long the way.
I want to submit the final project to IGF again so testing is important. If you want to help me test by downloading the current framework test, I'd greatly appreciate it. (Sorry no source code)
DOWNLOAD NOTES: If you download the test, it'll first prompt you if you want to use DirectX 9. If you don't have DX11 hardware, or Windows 7 or 8, you must click "Yes". I think the next prompt will ask for DX11. If you say no, it will still use DX11, but only the DX10 level shaders.
I may be able to post again this week, but it'll probably be next week.after I have something to talk about.