|
|
|
[ Screenshots Blog ]
[2010][
2009][
2008][
2007][
2006][
2005][2004]
Current Project I'm making a cross-platform physics game based on simple yet polished graphics and neat GUI like on the Nintendo Wii. I originally wanted ragdolls to be fired out of the cannon, but I'm reverting back to cannon balls because for one it's easier, and two I have not made a perfectly nonviolent game in a long time.
Libraries being used:SDL, OpenGL, GLM (math), Boost with STL, Newton Dynamics, and Lua. |
| Late December, 2007 - Items |  |  |  |  | | | | Numerous items are inside the breakable boxes. Smiley faces give points and sad faces.. you get the picture. I didn't like the flat paddle so I replaced it with a cylinder. | |
| Late December, 2007 - Design Overhaul!! |  |  |  |  | | | | Major design changes!! I found out that the original cannon puzzle game I was making would not have been fun so I'm now using the code for a 3D breakout game using rigid body dynamics. | |
| Late December, 2007 - Improvements |  |  |  |  | | | Some buttons have been replaced and I got rid of the camera buttons because moving the cannon along the rim will also automatically move the camera smoothly. The arrows will be next because they don't make sense - when you first look at them do you know immediately what they do? Hmmmm.
The cannon balls follow the given projectile path and then lets the physics engine take over when sufficiently close to an object. | |
| Late December, 2007 - Cannon Buttons |  |  |  |  | | | | Some cannon buttons and a background gradient. | |
| Late December, 2007 - Camera Buttons |  |  |  |  | | | | Here are some neat buttons I made. They quickly grow in size when the cursor is hovered over them.. It is all the little things that make a difference. | |
| Late December, 2007 - Framework 3 |  |  |  |  | | | The game so far has physics, a native model format from 3DS, settings via XML, and simple OpenGL lighting, and lots of other code for this and that.
I'm even polishing the cubes so that they are pleasant to the eye.. they kind of remind me of those 2D puzzle games. The physics runs very stable and Newton allows me to reliably stack many rigid bodies on top of each other. | |
| Late December, 2007 - Framework 2 |  |  |  |  | | | | | |
| Late December, 2007 - Framework |  |  |  |  | | | | | |
| Late October, 2007 - Screen-Space Ambient Occlusion |  |  |  |  | | | A new technique that seems to be gaining popularity due to its ease of implementation. For each pixel the depth is compared with the nearby depth values using random sampling. Some math is thrown in to achieve whatever look desired. I purposely wanted a grainy appearance.
The main benefit over a precomputed texture or precomputed values per vertex is that this is a post-process so it can be applied to something animate such as a person, or even an entire scene. Plus it doesn't need additional data other than the depth texture so it won't destroy a developer's art pipeline. | |
| Mid September, 2007 - Fluid w/ Gradient |  |  |  |  | | | | The density mapped into a one-dimensional texture - in this case a partial rainbow. | |
| Mid September, 2007 - Fluid Dynamics Simulation |  |  |  |  | | | | A fluid (red) influenced by a vector field (+x green, +y blue) using Navier-Stokes equations. The system is somewhat stable, but it's very easy for the fluid to fill the entire screen after the diffusion calculation each frame. | |
demo 6 A little demo demonstrating portal technology - the same concept for Half-Life 2's Portal game. I'm doing less code these days so this demo won't involve game play or fancy graphics, just portals. |
| Late August, 2007 - Circles and Tints |  |  |  |  | | | | I use a texture to apply onto the decal and redraw it in the end with blending to give it a blue tint. I've also found that drawing the level as seen through a portal should have the camera's position centered on the plane of the second portal, contract to transformed as described below. | |
| Mid August, 2007 - Transformed Portals |  |  |  |  | | | | Portals with the rotation parts of the view matrix taken into consideration. I also apply the clip(x) HLSL instruction so that geometry behind a target portal is not drawn. It can be fairly confusing. | |
| Mid August, 2007 - Nontransformed Portal |  |  |  |  | | | | It may look like I'm using a render target applied onto the decal, but that would cause artifacts. Instead, I draw the decal only to the stencil buffer applying a reference of value 1, and then clear the zbuffer and redraw the level from a position that is "behind" the second portal using a calculation that involves the position of both and their tangent and binormal vectors. It works with a point (position), but not a direction so the view matrix is not correct. | |
| Mid August, 2007 - Decals |  |  |  |  | | | | I used to orient the six (or just four) vertexes by precomputed Euler angles depending on the triangle the decals rests on, but now I just offset each vertex and a scalar multiplied by the tangent and binormal of the triangle. There are some differences, but this is faster and is more intuitive. | |
| | A level made by THS back seven years ago. Usually I'd go off and only harvest textures and models, but this time it's going to be the level as well. I still enjoy writing code, but nowadays creating levels just feels like work. | |
| | A Q3 map. I've always stuck to this format because of the number of free maps available and the great tools offered to the public. | |
| Mid April, 2007 - Shaded Triangle (code) |  |  |  |  | | | | Here is some code I wrote that renders a triangle using a shader in 3D. It's pretty much the bare minimal code - probably ugly code for a beginner, but still. It was for my Univ. game developer's club and I thought it'd be useful to the public so I'm posting it here. There are probably a couple hundred other examples out there. | |
| Early April, 2007 - Winamp Spectrum Plugin |  |  |  |  | | | | A little plugin I wrote using some nice base code. It merely outputs the 576 members of the spectrum data as lines, casted from unsigned chars. | |
Non Photorealistic Rendering (NPR) Mostly ink outlines and some cel-shading. I'll be releasing it as an entire package when I'm done.
It's the first time I'm using the base code of a D3D9 SDK sample ;) . The code generally looks pretty nasty, but it works well. |
| Mid Feburary, 2007 - Ink Outlines #1 |  |  |  |  | | | | Two methods that use the back faces that are extruded by the normal vector. | |
demo5 First person perspective puzzle game. It took about three weeks to develop.
I bought textures from DEXSOFT because they look great and I can no longer stand using textures from old games - ones that date back before the programmable pipeline existed. Some of the scifi textures have variations of color maps so I recommend them. |
| Early Feburary, 2007 - Second Level |  |  |  |  | | | | A screenshot of the more challenging level. Those fans do spin around. | |
| Early Feburary, 2007 - Game Decals |  |  |  |  | | | | Some additive decals.. there will be some more additional colors to symbolize the active / inactive states. I bet you can guess how the game is going to be played :) | |
| Early Feburary, 2007 - Post Processing |  |  |  |  | | | The post processing includes screen saturation and bloom using render targets with width and height one-fourth the size of the backbuffer where 2 5x5 passes of a Gaussian Blur are made.
Due to lack of time I cannot go through some of the texture files and alter their alpha channels to control the bloom intensity. This means it's full screen and thereby glitchy when animate (running around). I might keep the saturation and leave it optional, but the bloom is going to be removed. This is one of the last technical things that needed to be written, I'm doing the gameplay now. | |
| Early Feburary, 2007 - Crosshair |  |  |  |  | | | | The crosshair is just a 3D particle effect that can lock onto an object and then spin around while changing colors. I did something similar back in 2004. | |
| Late January, 2007 - Specularity |  |  |  |  | | | I've improved the lighting function so that specular light quickly attenuates using a power function. This is a screenshot up close so the highlight is very visible. If there is no attenuation then they tend to look very smeared from far away, especially with very bumpy surfaces.
The normals are facing the wrong way so the shiny bits are on the wrong side - notice the tiles. This is an easy fix. | |
| Late January, 2007 - Alpha Tested Surfaces |  |  |  |  | | | | Notice the metal grate on the ceiling, it's just a texture. Pixels are clipped away by merely using the alpha channel of the base texture.. though the edges should be fixed up a bit (I did it manually, the texture wasn't supposed to do this). | |
| Late January, 2007 - Light Shafts |  |  |  |  | | | A volumetric light shaft is achieved by first rendering depth to a floating point texture (RED32) from the light's point of view and then rendering about a hundred billboarded quads with alpha blending... Therefore the fill rate is extreme. I first learned about this in 2006 from an ATI paper.
The world positions of the billboarded quads are projected into the light's point of view again and the depths are compared. It's basically projective texturing / shadow mapping with additive layers.
They have a lot of potential, but it'll take a bit more tweaking to get the most out of them. | |
| Late January, 2007 - Glass Objects (Fixed) |  |  |  |  | | | | The glass is now rendered correctly, I knew it didn't look right. Turns out the math was bad in the vertex shader. | |
| Late January, 2007 - Glass Objects (Broken) |  |  |  |  | | | The glass is based off of NVIDIA's Composer example. It looks cool, but I cannot get it to look right. I'm not shooting for photorealism, but it does lack a sense of depth - especially with a model that isn't symmetric since only the front faces are rendered.
The cube map is generated once and only the zone geometry is used. This means no mirror to mirror capabilities. The cubemaps could be generated per frame whenever the camera is close enough, but I'd rather spend the milliseconds on even sweeter eye candy. | |
| Late January, 2007 - Light |  |  |  |  | | | | The basic diffuse lighting solution. It still needs the attenuation and specular terms. Each light is done in an additive pass (currently one pass per light). I'm wondering if the rendering time will be reduced by using alpha testing with the attenuation term. I'm thinking yes because it'll throw out pixels before the blending step where pixels are read from video memory. I'll just have to wait and see. | |
| Late January, 2007 - Collision Hulls |  |  |  |  | | | | The .map is manually parsed and every clip brush is preserved to serve as the collision hulls. The levels are small so doing this in the editor is not a problem. | |
| Late January, 2007 - Map Entities |  |  |  |  | | | Map entities from the zone have their model geometry copied to edicts where they are rendered dynamically. I was going to dump the binary data to the hard drive as the current model format, but instead extended the edict to support both types of draw types.
Edict is an in-game entity, that's all. | |
| Late January, 2007 - Batching |  |  |  |  | | | | The world geometry is batched by surface and then texture, where the arranged triangles are stored in the default pool for performance. Using any scene partitioning such as BSP or octree would actually hurt performance because the targeted hardware is a modern GPU. | |
| Late January, 2007 - Input |  |  |  |  | | | The keyboard and mouse input is remapped from DirectInput DI_ keys to custom enumerated ids. An entire array of data, such as the string of each key's name, is also stored. It was all generated using a C script.
Yeah, those are the same models as seen in the project below. | |
| Late January, 2007 - Static Models |  |  |  |  | | | | I use obj models because they're very simple and I don't need any animation. Like the level zone, the files are converted to binary form and spat out in a different format when running in developer mode. | |
| Late January, 2007 - Framework, Level and Shaders |  |  |  |  | | | | I still use GTKRadiant to create level geometry. | |
| Mid January, 2007 - Direct Coefficients |  |  |  |  | | | | A rendering of models with precomputed direct coefficients using spherical harmonics and scattered sampling. The number of samples per vertex is only 25 and the number of bands is 5. Since the random samples are in polar coordinates, only about 12.5 on average are used per vertex because half the directions face inwards toward their own triangles. | |
| Mid January, 2007 - Multithreaded GrimSim |  |  |  |  | | | I took GrimSim which I made back in 2006 and succeeded in multithreading it by splitting the renderer away from the other systems like the game logic. There were a few problems with DirectInput and the main menu system because it's independent from both threads so it required a bit of refactoring when the device is lost.
It was really interesting to see the random places the game would crash. Overall I'd say the speed is about the same. I won't be writing a patch because the sound would have to be completely rewritten due to the updated version of fmod. | |
Probe Gizmo A little tool that demonstrates several post processing filters. I'm very big on post processing, I think even a mere gamma ramp can dramatically influence the scenery for a game. The basic application was written for personal reasons and I'll be using it to prototype different techniques in the future. |
| Mid January, 2007 - GUI Cursor, Filters, Camera |  |  |  |  | | | | The remaining bits of the application have been finished and the actual filters and materials are ready to be written. | |
| Mid January, 2007 - Camera and Lua |  |  |  |  | | | | I've embedded Lua so I can write new post processing techniques and materials without touching the actual code of the application, therefore this will make it easier for me in the future. The camera was pretty easy, but the win32 cursor is really glitchy so I'll be switching to a manually written GUI cursor that swaps to the desktop cursor as it goes off the client screen's rectangle. | |
| Early January, 2007 - Interface |  |  |  |  | | | | A basic user interface with some buttons of varying types (header, click, toggle). | |
| Early January, 2007 - Obj Models |  |  |  |  | | | | Renderings of the outer sphere and some objects. There are two types of shaders: materials and post processing filters. The current material is drawing (n+1)/2 where n is the normalized vector at each vertex (it maps from XYZ in [-1,1] to RGB in [0,1]). | |
|
|
|