Prototypes

Graphics

Diffusion 2D

This prototype implements our basic concept of the diffusion on a 2D grid. It allows one to add/subtract energy, which will already have some energy effects (flow for water). We learned that its not that easy to keep the water stable, so we had to include some damping. We also learned, that having one byte per energy channel might be fast to compute, but is limited due to its discrete nature. We will maybe have to change to a float representation.

Diffusion2D.png

Camera

This prototype implements a camera, first-person as well as a third person.

Diffusion 3D

This prototype implements the 2D diffusion into the 3D environment. Already Texture blending and Terraforming is implemented. The 4 blended texture mapping proofed to be easy for a start, but has difficulties at sharp energy discontinuities. So we might have to do it completely on gpu (per pixel energy lookup) or introduce 8 texture blending.

Diffusion3D_1.png

Particle System

This prototype ports and adapts various particle systems found on the www.

Static Camera LOD

This prototype tests a circular buffer with multiple levels of detail... a lot of problems with aliasing.

Quadtree

This prototype ports a quadtree and fixes some issues.

TextureTests

This prototype tests animated textures based on tileable perlin noise. Water and Lava are such examples. Also bumpmapping is implemented. (tb, 8-9.3) Bumpmapping proved hard and is kind of an unsolved problem. We do not want to save the whole frenet frame for every vertex, since it is so dynamic. But the terrain is also highly regularly triangulated, so we try to approximate binormal and tangential vectors on the gpu. Also the water is not an easy issue, since we do not have one advection direction but it could flow to everywhere. We experimented with temporal aliasing and it works.

Perlin.png
Lava.png Water.png

FireTests

Fire is especially challenging. We tried particle systems, but the performance was poor. We then implemented various fires, also the version of Nvidia (Yury Uralsky) with thanks to Mauro Gentile, who provided the flame.png... We must say, that we are really happy with the fire. Now the next challenge is to produce a really BIG inferno!
fire.PNG

TestLOD

This prototype implements a working continuous LOD system with geomorph based on quadtree partitioning.

LOD1.png LOD2.png

Got a version with arbitrary subsampling running. The nice thing with the implemented LOD version is that it doesnt require more memory (except for index buffers, which is nothing) since we do not duplicate any vertices (except for boundary, which we would anyways...) Cache coherency might be an issue though. Hopefully not. Normal and texture popping are still unresolved problems. All in all LOD proved to be a LOT harder than anticipated!

The next step is supersampling...

Supersampling

This prototype demonstrate our ideas how to refine a mesh based on some simple calculations including the normals of the sourrounding points. Even though its not fully correct, it refines our terrain nicely. The Normals are color coded. The normals proved to be hard and once we got them right, it didnt look that much better, so we decided to stick to a simple averaging scheme.

Refine2.png Refine2.png
Refine2.png

RefineGrid0.png RefineGrid1.png
RefineGrid2.png RefineGrid3.png

Render to texture

This prototype was build to find a workflow from 3dsmaxs render to texture function to xna. It shows a model of which the lightning was baked onto its texture in 3dsmax.

renderToTexturePrototype.JPG

What did we learn form this?
How to actually load a 3dsmax texture into our game.

What was harder easier than expected?
This was fairly easy and didn’t make a lot of truble

What did we change due to the Prototype?
We didn’t change anything but we became sure that all the shading and light effects should be done in post processing.

Animation prototype

This prototype was build to port the Animation Component Library to Game Studio 2.0, and to find a workflow for applying motion capture data onto a 3d character using 3dsmax (biped, skin modifier, fine-tuning vertex weights, load mocap data).

AnimationPrototype.JPG What did we learn form this?
We found out how we could load a model and its animations into xna. We were so happy to see the drizzle character moving his feet in the game:-)

What was harder easier than expected?
The hardest part was to make the character disappear after ending the game, and to have a decent drawing order with the character and the terrain.

What did we change due to the Prototype?
We didn’t change a lot but we became aware that we should use mocap data for our game

Sound

Soundtext

I created a Sound test prototype to get to know how to play sounds and stuff in xna. Background and foreground sounds are possible. I need to find out though why 3d sound is not working properly for me.

What did we learn form this?
I found out how sound works in xna.

What was harder easier than expected?
I didn’t get 3d sound to run eventough it should be pretty easy according to the internet sources.

What did we change due to the Prototype?
There was no explicit changes from this prototype to the project it’s selfe.

Networking

Lan Tests

Since our game is supposed to be a multiplyer game we needed some tests with lan. Therefore I got myselfe a crappy Lan sample from the net that was totaly wrong corrected it and got out of it what I needed for the game:
LanSendingSample.jpg

What did we learn form this?
I found out that it can be a pain to work with examples from the internet, this one was totally wrong, so I had a lot of time until I found out that this fellow did not understand the basics of network communication from the xna library. I found out how to use life and how to connect multiple players together.

What was harder easier than expected?
Moreover we found out that it’s going to be easy to implement more than 2 players.

What did we change due to the Prototype?
Due to this test we found out that we need to implement our own protocol for the exchange of data.

Gameplay

First Tests

I tried to find out what I needed to do to add basic 3d models into xna, and how I could scale the 3d models. I therefore used this nice balloon that I stole from the net to test it.:
scaleABasicModel.JPG

What did we learn form this?
How models are put into the xna environment. And how hard it is to set the matrices (projection, view, world) to the right values.

What was harder easier than expected?
It was very hard to get to know the view, projection and world matrix. This was a lot harder than I expected I needed at least 2 days until I got this one running.

What did we change due to the Prototype?
This had no effect impact on the changes of the project.

First shooting character

After Scale testing I went on and wanted some shots in the game for the basic gameplay testing, since it was the goal to shoot at each other. Therefore I added some bullets to a 3d model I found on the net. It was a pain to scale the point sprites.:
shootingball.JPG

What did we learn form this? How I can draw 2 d sprites into a 3d environment, how effect files work. How basic Shaders need to be set up, I had a look at hlsl and understood that it is also checked and compiled by visual studio. Event has a nice error support.

What was harder easier than expected?

It was very hard to find out how the code and the fx files work together, and moreover I was not aware of the fact that point sprites have a defined maximum size.

What did we change due to the Prototype?
We did not change a lot, but we got aware that it is crucial that the player has some sort of creation poison of the shot, such that it looks like he conjures the shoot in his hands. Otherwise it looks quite strange if there are shoots coming out of a 3d model.

Point sprites as Energy Bolts

Since point sprites seamed a big problem I tested the max size of them, and they have one unfortunately.:
ugly_point_sprite.JPG

What did we learn form this?
I found out how particle systems use point sprites to do their effects. I learned how Alpha blending works with these images and some more details about effect files.

What was harder easier than expected?
It was not hard to understand it, as soon as I had understood the concept of point sprites this was very easy I mainly did this to get to know how big you can make point sprites and what the limit is.

What did we change due to the Prototype?
We decided to use some more of these basic effects in the final game since they are pretty easy to use and look nice.

The initial Menu

Since we wanted to play the game after entering some information like which game we wanted to connect to we needed a menu, this is what I got out of a sample and improved it.:
Menutest.JPG

What did we learn form this?
I learned how a Stack Oriented window display manager works. The example that is on the web, is pretty easy to implement into the game. I had no problem to take this example and integrate it into the basic game play test prototype explained next.

What was harder easier than expected?
The structure of the example used was so good that It could be taken with hardly any changes into our project. This is normally not the case with examples. But this one was very nicely structured and the class hierarchy was written in a way that it supports reuse.

What did we change due to the Prototype?
I could very fast integrate the menu that I decided to make the network connection menu early on in the game.

The first Play mode: Fragging

This is the first screen if you start the Frag mode of our game. The host is waiting for players to connect.:
Basicgameplay.JPG

What did we learn form this? How I can dynamcly load in menu screens dependant on the gameplay mode.

What was harder easier than expected?
It was exactly as I expected it

What did we change due to the Prototype?
No big changes did arise from this.

All combined to a first playable game

So I did a lot of work at the initial 3d Terraforming prototype. This is where all the gamplay testing happened on.:
playing_the_lan.JPG

The Ugly ogre is Alive, the 3d model made by Mario, looks damn cool, just the lightening and the colors horrible (colors chosen by Hauri:-P):

ITsAliveFrankensteinsMonsterOgre.JPG

What did we learn form this?
How you can make a character move around in an environment
How the diffusion should be created from user interaction.
What textures are making a good impression as energy representer.
How the gmaeplay actually shall look like as we described it in the following document:
How hard it is to integrate all the other prototypes to one prototype.
How hard it is to work with 3 people on the same code segments.
How tricky SVN can be.
How to put our project to the X-Box

Here the gameplay explained from the view of our main character

some more screenshots of the gamplay prototype to get the feeling of it

What was harder easier than expected?
The most time we where held up by very small problems, such as the draw order of the objects, this was horrible for us. But all in all we did progress very fast such that we are at the moment ahead of schedule, but we don’t want to get too confident so we think there will be some problems that we will encounter later on for sure.

What did we change due to the Prototype?
We changed the whole gamplay, this was the idea of this prototype and we plan to make some game events with our Playskilled friends and family to check weather the gameplay works out for us.
Moreover we decided to introduce gamemodes such as Frag Mode and Capture the Flag. Since this adds to the fun of the game. But we don’t want get them in to early and want the basic environment player and palyer player interation to be good before we start with new modes.

  • Ogre posed rendered with ambient occlusion:
    ogreAmbOcc.jpg

I Attachment History Action Size Date Who Comment
JPEGjpg AnimationPrototype.JPG r1 manage 36.3 K 2008-03-13 - 22:54 UnknownUser  
JPEGjpg Basicgameplay.JPG r1 manage 35.3 K 2008-03-14 - 15:08 UnknownUser This is the first screen if you start the Frag mode of our game. The host is waitng for players to connect.
PNGpng Diffusion2D.png r1 manage 46.2 K 2008-03-10 - 11:27 ThaboBeeler  
PNGpng Diffusion3D_1.png r1 manage 285.0 K 2008-03-10 - 11:27 ThaboBeeler  
PNGpng LOD1.png r1 manage 113.5 K 2008-03-10 - 11:17 ThaboBeeler LOD 1
PNGpng LOD2.png r1 manage 181.3 K 2008-03-10 - 11:17 ThaboBeeler LOD 2
JPEGjpg LanSendingSample.jpg r1 manage 19.5 K 2008-03-14 - 15:02 UnknownUser Since our game is supposed to be a multiplyer game we needed some tests with lan. Therefore I got myselfe a crappy Lan sample from the net that was totaly wrong corrected it and got out of it what I needed for the game.
PNGpng Lava.png r1 manage 499.2 K 2008-03-10 - 11:45 ThaboBeeler Lava Bump Mapped
JPEGjpg Menutest.JPG r1 manage 56.5 K 2008-03-14 - 15:07 UnknownUser Since we wanted to play the game after entering some informations like which game we wanted to connect to we needed a menu, this is what I got out of a sample and improved it.
PNGpng Perlin.png r1 manage 106.2 K 2008-03-10 - 11:45 ThaboBeeler Perlin
PNGpng Refine0.png r1 manage 93.1 K 2008-03-12 - 16:39 ThaboBeeler Refine 0
PNGpng Refine1.png r1 manage 97.9 K 2008-03-12 - 16:39 ThaboBeeler Refine 1
PNGpng Refine2.png r1 manage 99.3 K 2008-03-12 - 16:39 ThaboBeeler Refine 2
PNGpng RefineGrid0.png r1 manage 25.1 K 2008-03-12 - 16:40 ThaboBeeler Refine Grid 0
PNGpng RefineGrid1.png r1 manage 35.7 K 2008-03-12 - 16:40 ThaboBeeler Refine Grid 1
PNGpng RefineGrid2.png r1 manage 50.9 K 2008-03-12 - 16:40 ThaboBeeler Refine Grid 2
PNGpng RefineGrid3.png r1 manage 71.9 K 2008-03-12 - 16:40 ThaboBeeler Refine Grid 3
PNGpng Water.png r1 manage 346.3 K 2008-03-10 - 11:45 ThaboBeeler Water
PNGpng fire.PNG r1 manage 189.0 K 2008-03-27 - 15:26 ThaboBeeler Hot Hot Hot!
JPEGjpg ogreAmbOcc.jpg r1 manage 114.3 K 2008-03-21 - 18:21 UnknownUser  
JPEGjpg playing_the_lan.JPG r1 manage 63.1 K 2008-03-14 - 15:09 UnknownUser So I did a lot of work at the initial 3d Terraforming prototype. This is where all the gamplay testing happend on.
JPEGjpg renderToTexturePrototype.JPG r1 manage 35.9 K 2008-03-13 - 22:44 UnknownUser Render to texture
JPEGjpg scaleABasicModel.JPG r1 manage 20.2 K 2008-03-14 - 15:04 UnknownUser I tried to find out what I needed to do to add basic 3d modells into xna, and how I could scale the 3d modells. I therefore used this nice ballon that I stole from the net to test it.
JPEGjpg shootingball.JPG r1 manage 24.2 K 2008-03-14 - 15:05 UnknownUser After Scale testing I went on and wanted some shots in the game for the basic gameplay testing. Since it was the goal to shoot at each other. Therefore I added some bullets to a 3d moddel I found on the ned. It was a pain to scale the point sprites.
JPEGjpg ugly_point_sprite.JPG r1 manage 20.4 K 2008-03-14 - 15:06 UnknownUser Since point sprites seamed a big problem I testet the max sitze of them, and they have one unfortunatly.

Page URL: https://twiki.graphics.ethz.ch/bin/view/GameClass/TeamEPrototypes
2024-03-28
© 2024 Eidgenössische Technische Hochschule Zürich