Tuesday, February 26, 2013

Glow me baby

You know what sucks when participating in OGAM? Having room redecoration in the same time. But now it's over and I finally have some time to finish my game. Unfortunately I'll had to close the project in beta stage just to fit in February.

I had some hard time with post-processing, after hours of wondering if I'm that stupid or something I found a solution for my problem and it was in adding that line:
SetGeometryShader(NULL);
DirectX is a state machine, one rendering technique turns geo shader on and it's on until you disable it. Jesus, I know that but it's really hard to debug that kind of stuff on my knowledge level...

Anyway, finally I've added some music-dependent glow:


Of course it looks better in game (it's a music-like game at last). FMOD is really fantastic sound engine, you write something like
float* spectrum = new float[64];
channel->getSpectrum(spectrum, 64, 0, FMOD_DSP_FFT_WINDOW_RECT);
and in spectrum array you have 64 0.0f to 1.0f values describing sound intensity by pitch. Right now I only take bass spectrum to describe wireframe width and glow size but it's really easy to make some fancy effects with it.

Now I have only 3 days left and the next big thing to do is instancing and frustum culling (yes, I still haven't done it).

Wednesday, February 20, 2013

Plasma gun

No screen today, only a little note.
Yesterday I've replaced static laser canon with a plasma gun. Technically you can imagine it as standard spaceship weapon in Star Wars series. It requires quite more of CPU cycles, but I think the result is worth it. Collisions in 3D can really be pain in the ass, fortunately I'm using XNA math library for vectors, matrices, etc. Is has this set of functions in xnacollision.h like:
BOOL IntersectRayTriangle( FXMVECTOR Origin, FXMVECTOR Direction, FXMVECTOR V0, CXMVECTOR V1, CXMVECTOR V2, FLOAT* pDist );
So collision detection is quite simple with this. When I finally sit down and force myself to write instancing and frustum culling every model will have its own bounding volume which make collision detections even simpler and faster.

Tuesday, February 19, 2013

MVP ready!



MVP of Drumstep Defenders is on! Download it here:
And here's a little screen:


Fast track to beta version now! I need to replace laser with lightning machine gun, add few more enemies, some bosses maybe, and of course 2 more scripted tracks to play. Meanwhile, have you seen this video yet? It's hilarious :D


Monday, February 18, 2013

Only one more step to MVP

I really need to post every day I make something new... But, look at this, guys!


Only some graphical corrections and menu left for the MVP version. I've added 2 more enemy types, sounds, music and interface. After hours of fighting with Direct Sound I came to the "fuck-it" point and connected FMOD to my game, also fonts are rendered using GDI+ because (quoting http://www.d3dcoder.net/resources.htm)
Unlike previous versions of Direct3D, Direct3D 11 does not have a utility library for drawing sprites and fonts.
Microsoft, really? You can't complicate these things more? Can't you?

Monday, February 11, 2013

Graphical update

So here's the render I called "bro, tell me in what direction this thing is placed".


Mothership, as well as laser cannon and asteroids got new meshes. Also I put some work into particles. It can be quite difficult to get the result above in the game, but the next thing is to make thinks look better by applying some nice shaders. The main problem seems to be not rendering diagonal lines at quads. Wireframe rasterizer state from DirectX renders all triangle lines by default and you can't change it. So my solution is to use another rendering technique. Gah, edges once more...

Sunday, February 10, 2013

Particle Sunday

Today's work: asteroid destruction particle effect and dynamic stars.


At collsion with laser, asteroids explode to little triangles. Screen above has auto-explosions enabled. With the time, triangles decelerating and getting more transparent.


At lower speeds we can see star points around. When we're getting faster and faster, points transforming into lines. The faster we get, the longer the lines.

These two effects were generated by the same particle system. Most of the work is done by stream-out of geometry shader, the C++ class is the same, only fx files differ. So right now I have wireframedExplosion.fx and stars.fx in use. Geez, I need to say that - Geometry shader kicks ass! You can do magic with it. Just gathered some EXP in my noob-to-pro path :)

Saturday, February 9, 2013

Drumstep Defenders prototype

After 3 days of work (too much I think), I've finished my game prototype. It's ugly, it's hardly playable but it has some core features:
  • FPS camera
  • Random asteroids from quasi particle system
  • Imma firin mah lazor!
  • Laser-Asteroid collistion detection

Prototype means - you can run core game mechanics. Now is my way to MVP, need to add some real particle effects, more enemies, upgrade graphics, etc.

If you want you can download prototype here:

Monday, February 4, 2013

Introducing Drumstep Defenders

It''s 4th already and I haven't started coding yet... But it's OK, accorting to this rules of course:
How to succeed at making one game a month
Drumstep Defenders is an ultra-fast space rail-shooter game. As an operator of a laser canon you're destroying hundreds of thousands of alien spaceships. All of that mixed with a wicked drumstep soundtrack by Tut Tut Child.
I decided to share some of my "work secrets" and public the needs and wants list. Maybe some of you will have any ideas how to make it better :)

NeedsWants
  • Centric FPS camera
  • Wireframe rasterizer mode
  • 3 enemy types (asteroid, kamikaze and fighter)
  • Destruction particles
  • Stars in the background
  • 1 complete level loaded from a script file
  • Simple score interface
  • Minimalistic start menu
  • Drumstep music
  • Sound effects
  • Mothership model
  • Laser canon model with viewfinder
  • 3 enemy models
  • Game logo
  • Bloom/glow/blur effect
  • 3 complete levels
  • 10 types of parametrized enemies
  • Score particles
  • Chat-with-commander cutscenes
  • 3D start menu
  • 2D sound effects
  • Hi-scores table
  • Gamepad input
  • Power-ups
  • Different weapon types
  • 10 enemy models
  • Power-ups models

Don't forget to check out some of The Real Drumstep music!