This page will gather small and big self-contained additions/modifications that have to be done to Arkana-FTS. These additions are a good idea of something you might do to if you want to really help us. Of course, besides this list you might do whatever you want, or fix bugs.
Every task has an estimated difficulty and a contact person, that is with who you should get in contact to get more informations or help with the task.
Please note that “hard” does not especially mean you have to be a C++ guru, but it means that it can just take a lot of time to complete this or you might need to really know your way around the Arkana sourcecode.
We really need to split our data up into two part:
We need a clear separation of these and an easy interface to access them in-game.
Our image converter definitely needs to be able to convert png images, png is a de-facto standard. For this, you should use LodePNG, it is only one source-file and needs nothing else.
Contact person: Pompei2
Currently being worked on by: Nobody
Every single serious game needs to create its own mipmaps. We may easily embed them into our own image file format. There are already two high-quality resizing algorithms (mitchell & lanczos aka sinc) implemented and tested in graphic.cpp ; All they might need is some refactoring. The image converter tool should be extended to automatically add mipmaps.
Contact person: Pompei2
Currently being worked on by: Nobody
Our image converter should be able to get a greyscale image and just convert it to a normal map.
Contact person: Pompei2
Currently being worked on by: Nobody
This is legacy code. It works but it is messy. It is just a simple config file, you may of course change the format of the file, but one requirement is needed: every option has a default and a description. The game knows a list of every option, default and description it needs and may just add missing ones to the configuration file. The file needs to be human-editable and machine-editable.
One could use the scripting language as format for the config file.
Contact person: Pompei2
Currently being worked on by: Nobody
The operations, like left, right, ... are not UTF-8 aware and just cut-off after the specified number of bytes. Thus, for example if you say left(1) on the thai string “ท”, you’ll get “à”, as ท is “0E01” and à is 0E. This should in fact be number of characters and in the example before, it should result in “ท”.
This task is not too hard, and a lot of other methods (like string searching) are already UTF-8 aware, due to the nature of UTF-8.
Contact person: Pompei2
Currently being worked on by: Nobody
Very soon, we’ll need a quadtree to organize our world. (Read a great tutorial). Here is a list of features it definitely needs:
Contact person: Pompei2
Currently being worked on by: Nobody
The game will need a way of scripting it (and the maps) very soon. This will either be python (preferred) or lua. The task is to add the scripting infrastructure to the game, export some of the classes and make it as easy as possible to export a new class/methods to the script.
Contact person: Pompei2, Kabey
Currently being worked on by: Kabey
Gamers, especially windows gamers, hardly ever look for updates of a game. That’s why we need an updater. We once had one but it’s currently sooo outdated that it is no more useful. You should expose the functionalty in an API and write a console updater program that uses the API, if that works well we might also integrate an updater GUI right into the game. These are the requirements:
how to replace the running executable on windows)
Contact person: Pompei2
Currently being worked on by: Nobody
We definitely need this, optimizing without a profiler is suicide. The Game Programming Gems 3 (GPG3) have an article about profilers in games, that is a great starting point. 0AD have even implemented this so you could take a look (not copy!) there.
The profiler needs to show statistics in real-time during the game (as an overlay), and should also be browsable in real-time.
Contact person: Pompei2
Currently being worked on by: Nobody
Add support to the game for reading and displaying videos. Most probably using Ogg Theora or maybe x264. (But the latter one would probably need tons of 3rd-party libs again, what we hate.)
This would be used to show an intro video and later-on to show cut-scenes in the scenarios.
Contact person: Pompei2
Currently being worked on by: Nobody
The current master-server code is really a mess and highly unreadable, uncommented, non-extensible, monolithic, <add any negative adjective here>. We need a complete rewrite in order to make it clean and extensible, as we need a lot of new features in the future: clans, heroes, world, ...
Pompei2 has already started a rewrite, using the Ice networking library, contact him for details.
Contact person: Pompei2
Currently being worked on by: Nobody
This would be a continuous task. We definitely need a world-editor very soon, not only to test all possible maps, world features, ... but also to have easy content-creation. This is really a hard task as a lot of the Arkana code has been written without this thought in mind, so it may be that we need to embed the editor into the game (instead of a separate program).
You will probably need to work and talk a lot with Pompei2.
Contact person: Pompei2
Currently being worked on by: Nobody
Our current OpenGL code (that is not much!) is completely outdated, it uses techniques that are decades old. We need to get rid of all this and use OpenGL 3.2 only, shaders and all that stuff.
Current research:
Contact person: Pompei2
Currently being worked on by: Pompei2
Singletons are evil. We use a lot of singletons. And the more we use, the harder it gets for us to write new testing code or new tools, because the code becomes more and more interdependent.
Most of our singletons could be replaced by dependency injection. This task is really hard because one needs to know all the various interdependencies. Not every singleton has to disappear, but most of them should.
Contact person: Pompei2
Currently being worked on by: Nobody