Language: | C++ |
---|---|
Source control: | Git |
Aethyra and The Mana World are a sibling pair of FOSS MMORPGs. The two projects are from a common base, but are diverging in all respects (world concept, artwork, server and client).
Having started playing back in 2007, I felt like making a new map for the game, which sidetracked in to doing some new artwork that my map needed leading on the work in the art gallery.
For the client's codebase, both projects are branches of a common DVCS tree. They go through cycles of diverging (as they are now, and as they did in late 2008). In early 2009, Bjørn merged both clients, and for a while they could quickly copy changes from the other project. While I've used it on other projects, I learnt to use Git on this project.
Starting with graphics optimisation
I didn't start off expecting to write code for this, but have moved from wanting to add a map to being a all-round contributor to the Aethyra project. Still under the mock-knightly name I originally chose for my character; here's discussion of my first code contribution:
[12:29] Octalot | I'm still polishing it, but have an optimisation of my own; realised that OpenGLGraphics::DrawImage is in the client, not in an OpenGL library. |
...[20:46]... | [changes pushed] |
[00:45] Tametomo | Going to see what that change looks like in game. :) |
[00:46] Tametomo | Woot! That's a lot Octalot. |
[00:46] Tametomo | You almost doubled things for me. |
[00:46] Octalot | hehe |
[00:46] Tametomo | 110 FPS on average here now. Used to be 70 FPS. |
[00:47] Tametomo | Was 60 FPS before my last optimization. |
[00:48] Tametomo | BTW, that's including the debug window drawing, which takes 5 FPS. |
As you can see from the times, a nice finish to the night before bed.
(People who compare the art in the gallery to the FPS stats may guess that there are probably further optimisations possible. The devs know where, but we probably don't need to do it). I come back in the morning, and find it's been discussed overnight.
[02:35] Tametomo | I know. I'm throttling the frame rate now. |
[02:36] Tametomo | However, it does translate to better CPU usage. |
[02:39] Tametomo | Probably should cap at 100 FPS or so, cause more than that is ridiculous. |
tmxcopy
Language: | C++ |
---|---|
VCS: | Git |
A data-mover app. Takes a pair of overlapping multi-layer images (actually maps for TMW / Aethyra) and copies the overlapping area from one to the other, layer by layer.
The existing code was written when maps had exactly 4 layers with ridgely defined names and functions. The map developers have been using 4-6 layers for several months, and what's now in graphics development will push it in to double figures. The problem wasn't the number of layers, but the mess that was created when layers were copied without reference to the names.
A bit of STL practise for me, on a small project. Easy to run most of the code paths under the Valgrind memory checker and check that my code was correct (the other STL project that I've work on is Apt, which is not small).
Current involvement
I'm making GUI improvements (C++) to the Aethyra client.