Category Archives: Random

I Hate Myself Love

Last weekend, I participated in the Global Game Jam 2012. Together with Jonathan Wehrle, Tilmann Hars I made this game within 48 hours. We are very happy with our submission and you should definitely have a look at it. Also, feel free to vote for our game at http://globalgamejam.org/2012/i-hate-myself

We used LÖVE a super awesome 2D game engine that lets you make games extremely easy. It was wonderful to work with it.

Download

The original submission can be found at: http://globalgamejam.org/2012/i-hate-myself

An updated version with smaller bugfixes can be downloaded here:

*Please note you need LÖVE version 7.0 (at least) to run the game under Linux/Mac/Ubuntu/Whateverix. It can be downloaded here: https://love2d.org/

Source:

Source code and assets can be accessed through github at
https://github.com/joeka/I-hate-myself

Credits

Jonathan Wehrle – Code | Martin Felis – Code, Art | Tilmann Hars – Code, Music

MeshUp!

Last week I started working on a small, yet powerful visualization tool for animations or more generally spoken for any multi-body simulations. It is based on skeletal animation and magic and is called MeshUp!.

The frames for the skeleton are defined in a JSON file (thanks to jsoncpp this was relatively easy to implement). In the same file meshes can be attached to the frames (e.g. some random monkey head to the “Head” frame, etc.) and are then moved with the head bone.

The meshes themselves are Wavefront OBJ files that can be exported by nearly every 3d content creation package. I wrote the importer in about 2 hours which surprised me. I feared that to be a lot more of a hassle.

Furthermore it finally made me play around with Quaternions a bit more. Turns out that they are not as hard and are actually quite efficient. Before that I used some matrix calculations for the rotations but with the Quaternions I basically have the same usage but about 10% performance gain (not that it would matter, but it surprised me a little). The biggest problems I had, was that in my computer animation reference book a formula for a conversion had a typo. Thanks to test driven development this was easy to debug and will not occur in the future! Yay!

Oh, also it is coordinate system agnostic. Meaning you can use whatever angle convention you like! ZYX Euler? Sure! YZX Euler? Why not? Just define the proper coordinate system and rotation order in the model file and that’s it!

I published MeshUp! at bitbucket account. You can download the source at:

https://bitbucket.org/MartinFelis/meshup

So far I havent’t decided on a license. Any suggestions?

 

Android Programming – First Try

Today I felt a bit daring and thought I’d try programming for android.

Here is the result: the NerdRomanceHelper.apk.

Here is a screenshot:

I’ve tried it, it works!

Rigid Body Dynamics Library

Hi there…

some time ago, I posted a video about my C++ implementation of the Articulated Body Algorithm (ABA), one of the best available algorithms available to perform forward dynamics computations on kinematic tree structures (if this sounds weird, replace “forward dynamics computations” by “physics simulations” and “kinematic tree structures” by “human-like figures” and you might be able to get a clue what you can do with it).

I mostly use it for my scientific work, which is funded by the Heidelberg Graduate School of Mathematical  and Computational Methods for the Sciences. I spent quite some time in programming it and making sure it does what it should (91 tests!).

Some highlights:

So far I am very happy with it and thought that maybe other can benefit from it as well.

Therefore I decided to publish it under an open-source license, namely the very permissive zlib license (which is also used by Bullet), which should allow pretty much anyone to do what he/she/it wants with it. However comments, suggestions or acknowledgements are still very welcome.

You can grab it at:

https://bitbucket.org/MartinFelis/rigidbodydynamicslibrary

It does feel a little weird to let it out into the wild, but I hope it is of use for anyone.

Martin

OpenGL is dead! Long live OpenGL! (a.k.a. IFTPOP 0.0.2a)

I think finally tracked the error that made the game crash on some computers. The culprit is OpenGL, more specifically OpenGL 1.X. Since the introduction of OpenGL 2.0 in 2004 there have been a few changes in the way how to do graphics (“it’s called shader baby!”). As my current reference of OpenGL (the OpenGL Super Bible, 5th ed.) tries to break free from the old legacy code (“fixed function pipeline”) I ended up being dependent on this new stuff.

Sorry about that. But if it does not run, you probably should get a new computer anyways.

At least some good news: errors are now nicely reported with a message box. Should your graphics card be incompatible, you will beinformed properly.

Get it from here: iftpop_0.0.2a

A new version with better graphics (OpenGL 2.X!) is coming along as I now finally fixed this error.

Custom Shaders and Material in Horde3D

To simplify scene management and visual effects I looked at various open-source graphic engines that I might use. I briefly looked at the usual suspects such as Ogre3D and Irrlicht until I found Horde3D, which convinced me by its simple looking API and the compiled library was much smaller than of the others. It also seemed to feature various capabilities that might be interesting (scene graph, shadow mapping) or nice to have things (picking, blur, hdr, etc.).

However being an old-school OpenGL programmer, that mostly draws simple geometries such as cubes, spheres, and similar, it is not quite the way I am used to do stuff. Furthermore, the shaders in the examples seemed much more advanced than I need for now, so I am currently trying to make things more basic. Eventually I want to use the scene graph to do some procedural animation and that I am going to do with these simple geometries. Using more sophisticated models created with blender should not be too hard once I got it running.

So far I incorporated Horde3D to my code and using assets from the example to get some experience with Horde3D and implemented a simple shader. As I had the OpenGL Superbible laying around I thought it would be nice to implement the good old Ambient-Diffuse-Specular lighting model (so far only on a per-vertex basis).

Here are some screenshots of the different steps I took:

Now I can easily specify the material in the XML-files that Horde3D is using. Also, I learned a great deal about Horde3D.

Hopefully I’ll soon be able to draw simple procedurally generated geometries and can then start to look at the animations.

Have a better day!

(click for full image)

 

Yesterday I drew something. I tried to capture a very specific mood. It may or may not be iftpop related.

For the game itself there is nothing much to see, as I am currently switching the graphics framework (actually I am switching to *a* framework) and therefore everything is black – yay!

Have a better day!

Martin

Wall Jumps!

Did some work on the controller, which is getting feature complete more or less. It now allows for wall-runs and wall-jumping. Have a look at the new version and try to climb the two pillows.

Also, I added quite a bit of doxygen documentation to btKinematicCharacterController. For the interested I created a repository over at github (https://github.com/martinfelis/bulletphysics2) that contains the changes I made.

There are also improvements to the camera movement. There is no more jittering (thanks to the insights I gained about btKinematicCharacterController) and also the horizontal movement is no more constrained = much more fun!

Oh, and here is the new (windows) version: iftpop_0.0.2. Go Try It! NOW!

Additionally, I spilled some wine over my desktop keyboard.

IFTPOP 0.0.1 for Windows

All right! Windows version of the current code ready!

Grab it from here: iftpop-0.0.1

So far I am working on the controls for both camera and player movement. With the camera I am quite happy, but the player will get some more action features such as wall-jump and duck-slide, etc.

The camera starts to jitter at some point, but I do not yet know why.

Some informations about the game: it will feature some elements from racing games. And platformers. And nightmares.

Cheers,
Martin

New game: IFTPOP! first screenshot

Just a small screenshot of the current state of my next game, called “IFTPOP!” (what it actually means might be revealed at some point). The code so far is based upon my previous asteroids game but with a lot of new development. Biggest change so far: integration of bullet physics.

So long,
Martin