In 2009 we finished the game FUR, Fast Uber Racer, for the Pascal Game Programming competition Arcadia. This game was supposed to run on an arcade cabinet. Back then we had some plans to build ourself an arcade cabinet, but the lack of space we never started. Now that I had some space I decided to make my own arcade cabinet. It’s not only to run FUR, but also to run other games like Uber Zombie and MAME.
So I started out with a piece of wood and cut out the basic shape of the cabinet and screw and glue it all together. The fairly simple design and good power tools made this an easy job. I’m not going into the build details as the pictures are pretty clear I guess and there are lots of build tutorials out on the intertubes.
For the some technical details on the hardware use for the control panel:
Cabinet size: 180 cm in length, 64 in width (control panel is 70) and ~64 cm in depth.
Total of 18 buttons, 8 for each player and 2 on the side for pinball games
Some development news, I’m currently working on a Paint.net plugin that can communicate with our game engine. There are some thing I wanted to try like getting and setting a texture via .NET remoting framework. So that is what I did. Currently I can get and set pixels on a texture via between paint.net and out Hell Tech Game Engine. It’s implemented as an effect plugin what means that you need to “click” the effect plugin in order to make it work. Not very user-friendly, but according to Paint.net creators you may not interact with other applications, unless you do not release the plugin…
Further more I also created some other plugins that I may release in the future if people are interested in it. It will be called something like NecroSOFT’s plugin suite or something. Here is a list what I have so far:
Patch-based texture synthesis – simple tool to make every texture repeating seamless
Flare – just as it says, generates a simple flare over your image, using 2 colors that where selected
Explosion – same as flare, but with some noise.
I created those plugins a while ago but never released them and recently I moved them into a brand new project so I only have 1 plugin that I need to copy. Also some plugins share some data which makes life easier when in the same package.
I finally moved the whole web server from the engine to the editor plugin and added a screenshot function. This enables a “live” image stream where the 3D engine back buffer is captured and send over to the web client as PNG image. It’s not real time, but it works pretty well. As seen on the screenshot here I had my engine running Uber Zombie 2 (still work in progress) with a screenshot shown in the browser.
This also gave me the idea of some new options: web-based editor. Currently it’s a feature we will probably never use, but still a nice-to-have. Think of just clicking the screenshot and have the event executed in the 3D engine.
Also I managed to make some simple styles like coloring the links to something beter than blue and purple. Here is a screenie of the log which shows it better. The (link) behind the Get File is click-able and makes the engine sent the file over the browser. Maybe in the future it would be need to have a small (text) editor to edit text files… But as for now I’m only working locally I can access all files via explorer.
Was there a part 1? YES! The web server was working, but now I made some changes so it can be pretty useful.
First I added some extra data and colors to the actor detail view, changed and added a filter option to the scene list. This list shows all actors in the current active scene. Furthermore I added a page to view most of the loaded assets (resources) and a page the take a peek at the log… can be pretty useful sometimes :).
I also managed to unroll lists. I do not yet feature a collapse button or something. Next I also manged to catch exceptions. If there are some fields that are pointing to the NULL value it will just show the exception text.
There is still some work to but for now I can manage. I still have the debugger running on in the background :). Also it would be nice to see materials and textures directly in the webpage… (possibilities are endless!)
So as some of you guys may know I created a spline track a while ago use in the racing game FUR. Now I created a new version and so far it’s working because we switched programming language and I was not happy with FUR. Now FUR is working, yes, but still has lack of content and gameplay features, it has a crappy menu, only useful in an arcade cabinet and you need to close it with Alt-F4. Al with all: not finished.
Anyway I will explain a bit on how I implemented my spline track. At first I define the points the track needs to travel trough. For example we have 4 points, creating a round track, 2 red, 2 blue. The red is where we will draw the curved road (green arrow). First I define 2 imaginary points named p1 and p2. From red point 1 we interpolate to p1 and call this result A, from p2 we interpolate to red point 2 and call this result B. Now the final part: interpolate between A and B and you have your curved points.
Vector3 A = Vector3.Lerp(Red1, p1, t);
Vector3 B = Vector3.Lerp(p2, Red2, t);
Vector3 result = Vector3.Lerp(A, B, t);
PointList.Add(result); // add result to some kind of list
Now we have the curved points, we can determine the direction simply by current point – next point, normalize this and extrude it with triangles which is a fairly simple process as you already have the direction. For further use it’s also very easy to implement a banked curve simply by linear interpolating the bank for each point. This way it’s very easy to create a spline based road or race track. Procedural for the win!!
As I mentioned in a previous post, I created a web based debug server (read only). I created mine within 2 evenings and it currently only displays a full actor list with clickable actors. Info displayed so far is the meta data for an actor (entity) and public variables. See the screenshots!!
After I got a tip from a colleague to put a web server in a game engine for debuggin’ purposes. I decided to create my own. So far it opens port 80 and you can connect to it with a web browser. When connected it waits for the GET and then it sends a list of all actors (entities) present in the current scene.
Some things that need to be done is make actors click-able and retrieve info via reflection and have some kind of multiple scene support.
As everyone uses the Sponza model you can freely download from Crytek’s website (CryENGINE -> CryENGINE 3 -> Downloads) for testing radiosity and SSAO we cannot leave behind and have to follow this CG development “rule”. First (and still some do) everybody used the Utah teapot, but other not-so-successful models have been introduced over time.
But anyway, we use it to test our obj-world-loader that is unable to load quads (fuck quads, triangles for the win!!). So converting it to a triangle mesh was the first thing to do. Next we needed to detect and load the material (*.mtl) file next to the .obj file. Not that hard, but it needs some work! After loading the material definition file it’s time to load the corresponding textures and render everything trough the deferred rendering pipeline.
The model has roughly 250.000 triangles and runs fine on me pc with 4 lights (nVidia 8800 GTS 512).
What about radiosity? and SSAO? god rays? Well, maybe in the future…
Well it’s a long time we showed some Wings of Thunder physics gameplay. This time we added a working menu, working shop system and some other small thingies like rockets and enabled deferred shading. Every rocket has it’s own light.
To show off the progress we added a couple of screenies and a small but dark gameplay movie. Have fun!