Wood Games 3D is offline :(

January 19th, 2015

Sadly I have to annouce that from now on my first and still my only released game baby Wood Games 3D has been taken offline. Meaning it is still playable but the online-functionality scores and competitions won’t work anymore. After the 3rd party onlinescore service scoreloop quit, I had to write an replacement server. Which actually did work but not stable enough. Changing the application to the new server also destablized the whole application and it was too time consuming to keep fixing, which prevents me to go on with my current projects.

I’m actually really sad to take this tough decision, but I promise Lox, the little red haired girl you play in the game, will be back!

Thanks to all 54.951 Players since 09/2011

Want to say good bye? https://play.google.com/store/apps/details?id=org.tt

Emscripten and libRocket

January 19th, 2015

libRocket is one of my ui-systems and it actually did work with emscripten outofthebox for one exception. For some reason rcss was not able to parse em-based values into float-values. It took me a some time to realise that emscriptens sscanf-function sees “0.5em” in opposite to all other compilers tested yet as an invalid value. When parsing the e-character it expects obviously another value afterwards.

Actually I wonder why the other compilers did convert 0.5em to 0.5f without 2nd thought. I changed the libRocket code to remove the suffix on the sscanf-call and now it works.

Here is the pull-request:

https://github.com/libRocket/libRocket/pull/240

Emscripten Websocket <=> Reddwarf Server

January 19th, 2015

I’m in the process of porting my gamekit based engine via emscripten to javascript which works thanks to the ogre3d’s current version 1.10 pretty good (thanks to wolfmanfx for his efforts). I wrote a module for ois to handle the input (mouse/keyboard) not perfect,yet but sufficient for the first tests. Maybe I should have tried to use sdl instead but was not quite sure how to initalize events only.

Still thread- and socket-handling todo. Sockets compiled without any problem BUT they are mapped to websockets in the javascript world. Websockets are slightly different from normal tcp-sockets. The raw data is embedded into a framebased protocol after a http-handshake occured.

I guess there won’t be a problem if I would have had also a c++-server that I would want to compile to js as well (not sure if that is a realtistic scenario :D ). At the moment I’m using a java reddwarf-server(short:RDS and formerly known as sun’s gameserver project-darkstar) which was canceled at once as soon as oracle took over sun and which is obviously not build to accept websockets. Not sure if ws existed at these days at all.

I found a very good java-library which can handle websockets. First you specify a callback handler for different events like onConnectionOpen, onMessage, onWriteDemand and onClose and then you can just pump a ByteBuffer into the lib which handles the decoding and calls the relevant callbacks in which you “just” have to do the right things :D

The only problem is that I didn’t had too much knowledge of reddwarf-servers internal process. RDS is mainly build to be highly multicore but abstract this behaviour from the server-user. So the kernel is mainly build with lots of async-concepts which I first had to learn before I could really extend the server.

Basically there is one main concept of delegating completion-handlers which has a start-method and a completion method. Those are stacked together so that the handler on top only passes its data to the lower one when the resulting data is ready. e.g. there is one handler A to read from a tcp-channel and another one B which is coupled with A and once A has its result B gets informed and can process until its result is ready and can be passed to the next underlying handler.

I basically wrote one such handler that sits between the handler which reads raw data from a socket-channel and the one that reads the raw data until a rds-message is complete. My handler takes the raw data, first checks if it is a websocket at all, if not just pass the data one to one to the next handler, if it is a websocket, make the handshake to the client-websocket,pump all incoming data into the websocket-decoder and then pass this data to underlying handler.

Took me some effort, but first tests are now working. All the unsucessfull attempts were still valueable to get more insights into the server kernel.

gamekit goes browser

January 10th, 2015

Oh, wow! I’m a bit shocked that a very first gamekit-game showed up in my browser! After some struggles and still lots of work to do, but that motivates a lot just to see the beloved default-cube on screen.

:D

Trapped in Emscripten?

January 10th, 2015

Just started trying to port gamekit to emscripten. Beyond other problems I struggled on swig generated lua-layer which threw a for me cryptic “trapped”-exception in the ‘SWIG_Lua_namespace_register’-function.

To make the long story short. Swig 2.0.11 created invalid code with int SWIG_Lua_namespace_register(..) function that did not return a value, which seemed to be the problem. Adding a return 1; manually at the two problematic function fixed the problem.

For a happy ending for this specific problem it was sufficient to upgrade to swig3.0.3…

UPDATE:

Actually swig3 seems to have changed its way of how inhertitance is handled, which somehow broke inheritance of methods at all!? Using the swig-switch -squash-bases let you use the old way, but this brought back the emscripten-problems :D. Ok, there seems no way around to fix it in swig itself.

Update2:

Very cool, posted a pull-request on the swig-changes and they got merged immediately :D
https://github.com/swig/swig/pull/303

Ubuntu-Mate 14.04: Get rid of Alt+Left-Mouse => move window

November 6th, 2014

Since I’m using blender with 3Button-Emulation (really can’t stand using the middle-button for rotation) I’m heayliy using ALT+Left-Mousebtn. There is always a problem with Linux/Gnome/Ubuntu/whatever.

To make the long story short. Using ubuntu-mate it is quite simple:

System->Preferences->Windows->Behaviour->Movement Key: Check Super instead of Alt

Beforehand I tried all kinds of ways for gnome/compiz… Not sure if that did have any effect:

http://askubuntu.com/questions/521423/how-can-i-disable-altclick-window-dragging

LD27 - 10seconds

August 26th, 2013

Ok, normal Ludum Dare Jam. I get a theme think(!) about a concept and start doing it. In the end it turned out, that I couldn’t really make it a fun game, ran out of time and didn’t focus 100% on the goal.

So, a disappointment? No,… this was the first time, that actually my (gamekit-based) game-engine worked very well. Most of the things I assumed to work did actually work (which was not the case in the past) Ok, I found some bugs, but that is okay cause I found other ways around.

Deploying is still a bit fiddly. There is no ‘deploy button’ yet. I could only use the development runtime, but I want code to be included, models to be unreadable. Usually textures can be included to the model-file but I got some problems with that lately on android, so there is now an assets.dat which is at the moment basically an zip file :D Fonts are included in the filesystem’s media-folder.

Again, I’m a bit flashed that it worked out very well. I actually used lots of good stuff like pools and message-managers for internal communication.

About the game: The theme was 10seconds. My plan was to create an environment that is at pause. So the time is not running. You have the control to let the time progress. There are two elements. The ones that go there way when time running at elements you have to choose to be part of the normal time flow. With this I wanted to create tricky levels that use this mechanic.

Still I think the idea is not bad, but it was too hard to find a good level design. The only thing I’m a bit disappointed about, is that I didn’t realize this earlier. Actually I know to avoid games that have puzzle-based levels you have to create manually. But I seem to forget about this (again and again and again) :D Mea culpa.

Nevertheless I packed all the stuff I have and created executables:

WINDOWS | LINUX 64bit | Android-Apk (The name is Ogrekit-Demo)

Now,I’m glad to go on with my current project the remake of triquacir which was basically my ld26-game.

Ludumdare - TriQuaCir

June 12th, 2013

Ok, this time a participated at LD26-Jam which apprantly would have given me 3 days for development…so good time to test how far my engine is. In terms of features I was more or less satisfied. I invested lots of time bringing http especially https request available via libcurl and openssl. That turned out to be easy for all platforms except android. At least if you want to keep a nice sourcecode-only engine.

The game itself is very simple (the theme was simplistic). The are about three shapes you can click and a view that points out what shape to click after each other. Level to Level the behaviour changes. I finished after one day with gameplay, but had some serious performance issues, even though the game itself shouldn’t… I assume I shouldn’t  have taken 3d-meshes for the order-view as the batch-count seems to be to high. No instancing implemented, yet.

Day 2 I tried to eliminate the performance problem and changed some graphics. I turned out that my gui librocket also have too much batches as well, but I decided to leave it as is and went for a highscore-server on day 3. It worked more or less but I didn’t had enough time to finish all the need ui-stuff for that so I deactivated it again.

In the end the game isn’t that bad. I’m fine with my workflow, having a dedicated fileformat now and automatic inclusion of lua-files into the binary code. Crosscompiling windows, android and blackberry-versions under Linux. So I’m fine (eventhough there seems to be a memory-leak somewhere and eventhough I didn’t release for mobiles due to the performance clash).

LD26-Link: http://www.ludumdare.com/compo/ludum-dare-26/?action=preview&uid=479

Btw, I just started to develop the game again, as easy test-case that should work on all platforms.

And again…

February 6th, 2013

…I postponed Carl Cube, because before global game jam started I wanted gamekit to be able to link blend-files or at least group-instances. That should make it possible for teams to work on different blender-file and link objects of the other one. That worked quite well on linux and actually also on windows, BUT during GGJ windows crashed all the time…

Great, just as I imagined… :D In the end it was just some stupid asserts that fired on windows but not on linux (where they seem to be ignored). Compiling windows in release-mode fixed it,…too bad that it took several hours to come to this simple conclusion :D (todo:still have to look at this asserts)

GGJ wasn’t perfect, and in the end it was like the last year. We were more or less ready to start creating some levels just before the deadline. Of course at this time we were already a bit stressed :D And therefore the actual game is a bit crappy.

The result is here(the title screen on the website is the best of the whole project :D):

Btw, the other two guys involved in this were Markus Oppermann and Burak Kahraman.

In the end I have to admit that I still wasn’t as confident with gamekit as I thought, so we actually ignored the physics-engine just because something wasn’t working right from the start. Keeping a cool head and first thinking before coding would have been a bit better for this…Not sure if that would have changed anything though :D

But in the end all about ggj was positive. Getting stuck with gamekit let me know better where and how to improve it… Btw the location in Mülheim(Ruhr) was great and well organized.

When I came back home I started thinking what went wrong and why, and since then I’m working hard to get gamekit more stable and to look more indepth to know what is really going on there. There is still much to discover :D

Works well, especially since I decided to not commit any new feature I built in the official gamekit-trunk (e.g. video-texture, gui-support in lua, linking of blend-files..), I can work much faster. No need to think about how to implement a feature so that it is bullet-proofed for gamekit-trunk or do it perfect before going on.(no that anything in gamekit would be bullet-proofed, except bullet-physics of course :P) Just do as you need,…great! :D Btw, I can’t point out the GIT is the best tool to work on such a project, keeping the own development branch with the official branch in synch,…GIT GIT GIT.

To finally get something done, I started (again ;) ) a simple project and decided to go for a well known old game “SOKOBAN”. (Carl Cube have to wait…)

Game-View

The mechanic is simple but works excellent. I already created most of the framework. Things done so far:

  • simple creation of bricks (for now static and moveable)
  • player controlled by keyboard (but decoupled over message-system, so any other input-device sould be integrated quite easy
  • goal-points (for now just sending an internal message, that all points are mounted ==>level won)
  • editor that let you create and modify the levels at runtime
  • save, load, delete via ui

Editor-View

Editor-View

I want to keep it simple and want to go on with deployment for the different mobile devices. Now I have to create a new gamekit-android-runtime from scratch. That will be a hard fight not to think about iOS.

We’ll see how far I will come.

Actually, I wanted to show a small video, but was too stupid to create a screencast…

Keep on rocking,ToM

Carl Cube reloaded!

January 18th, 2013

Global Game Jam will be started in exactly one week and I decided to remake our first ggj-project Carl Cube and Bobby Ball to check if gamekit can do what I want to do.

Actually I spent some time in fixing gamekit and developing it to a point I would consider usable in a way I want to create games. I just decided to be more centric on developing games now and not that much maintaining the engine (not that I did this fulltime or such…). That means that I will still have an eye on contributing and fixing gamekit but only after I finished a game or if serious bugs occur. (Not sure if I will really do it like this, but I have to concentrate on finishing stuff… keep focused,man! :D)

So, this will be day onepointfive since I already started a bit yesterday:

Stuff I use:

  • Ubuntu
  • Blender
  • Eclipse
  • gamekit
  • git