Development

Would you like to become involved? Enigma is developed by a small group of volunteers. We all work on it in our spare time, which is naturally scarce. If you would like to help out, you're always welcome.

Up Development Mailing List

If you are interested in contributing to Enigma, please subscribe to Enigma's development mailing list. Listen and ask your questions. Answer questions of others, publish own contributions like levels or patches, or offer your help.

Please note that due to the international group of developers all mailings to the list have to be written in English. If you need to attach files to your mail, check that the size does not exceed the mailing list limit of 300 kBytes. Posts that are larger than the limit will just be discarded!

Up Open Tasks and Wishes

Even though Enigma reached release 1.00, a long list of open tasks remain to be done. Often we do not have the resources or the skills to tackle them. Here is a list of open tasks, for which we definitely need your help. If you have the necessary skills and some spare time, please consider helping us out.

Non-Programming Tasks

  • Translation. Enigma has proper support for languages other than English. If you would like to localize Enigma to your native language concerning application menus and levels, the manuals, this homepage or the level developer wiki, please contact us.
    Easy
  • Better graphics. We're currently lacking in the arts department, as you may have noticed. If you have more talent than we have, we'd be only too glad to replace our sprites, logos, and other images with better ones.
    Medium
  • Sounds. Sounds are currently incomplete, and some of the existing ones might (do!) need some polish.
    Medium
  • Tech Support. The more popular Enigma gets, the more technical questions and problems arise on mag-heut.net and the developer mailinglist. Some questions may have already been answered in thread or even be listed in the FAQ's. Any Enigma power user with experience of the installation on one or several operating systems can help us figuring out the reason of the problems and answering the questions. New FAQ should arise of repeating questions.
    Easy-Medium
  • Open License Consulting. We try to integrate as many useful additions to Enigma as possible. But we want to ensure that Enigma can always be distributed without restrictions. However, the involved licenses are sometimes hard to interpret and difficult to combine - and we have already been banging our heads against the wall dealing with little nuisances of this kind. We wish we had a contact person who is familar with this topic and could advise us from time to time.
    Easy-Medium

Programming Tasks

  • Levels. Enigma lives from a constant stream of new (good) levels. Do not wait until you have played all levels before writing your own ones. Collect your ideas, look for help in the Level Development section and do not forget to publish your results!
    Easy-Medium
  • Ports and Packaging. Are you familar with application development and packaging on a platform? We would like to improve the packaging for the already supported platforms (Windows installer, Linux packages for more distributions,…). We need programmers who constantly test and maintain the development versions of Enigma on as many platforms as possible (Mac OS X, Visual Studio,…). Would you like to port Enigma to a new platform like game consoles or handhelds?
    Easy-Difficult
  • Automization of score upload. We would like to offer an auto upload of new scores and ratings like the automatic download of the evaluated ratings. Client and server parts are needed.
    Medium
  • Keyboard Input Method, Pasteboard Access. Enigma is based on SDL which does not support a proper input of umlauts or non-ASCII characters. Uniform support for the input of all characters on all operating systems would be desired. We are also looking for a support of copy and paste, too.
    Medium
  • Level editor. As the existing editors are not up to date and are not as portable as Enigma we think of a Java based editor, an extension of the XML level format and an interface to Enigma. A useful editor is a good deal of work and not at all easy.
    Medium-Difficult
  • Network game. This is a major and non-trivial undertaking, as Enigma has not been designed for a networking game mode from the very beginning. Thus the main tasks are internal reengineering. If you like challenges and like to dig into the C++ core part of Enigma, feel free to join us.
    Difficult

Please offer your help on the developer mailing list. There are much more open tasks than listed above and of course you are invited to submit your own ideas and contributions.

Up Level Development

Even though Enigma does not include a level editor and you may have to dig into the simple script language Lua, developing a level is easier than you may assume.

The Enigma reference manual explains the level format and all objects you can use in detail. You should at least cross read chapters 1 - 3 and remember that you can look up details about every object.

You will find help on the developer mailing list as well as in the forum. As soon as you think that your level is finished, set the level XML attribute 'status' to 'stable' and publish the level to the mailing list and/or to the forum. People will test and comment your level. When no shortcuts are found and you finish the development of a level, you should set the status to 'released' and republish this version. We collect the levels from these sources and will contact you on remaining issues.

Up Application Development

If you want to download the leading edge version of Enigma you need to check it out from our git source code repository at GitHub. For anonymous access, simply run

  git clone https://github.com/Enigma-Game/Enigma.git

to download the current master branch of the next major Enigma release. Please note that this will be a snapshot of development and the revision might be incomplete and still unstable.

For the development we recommend a Unix platform as the compilation and installation is as simple as typing

  ./autogen.sh && ./configure && make && make install

For information how to compile the application for Windows read the file doc/README.mingw32. For Mac OS, the file doc/README.macosx. Note however, that some instructions inside these files might be outdated by now.

Please contact us via the mailing list if you need write access to the repository.

Up Localization of the Application

Nearly all aspects of Enigma are internationalized. You can help in the localization of Enigma to your native language by supplying translation updates. All you need is a simple unicode supporting text editor and a tool that processes your translations for direct testing purposes.

First check that you are working on the most recent Enigma version. Please check the Development Mailing List for the current stable milestone, alpha or beta release and announce your translation effort to avoid conflicting duplicate work.

Next you need the source file containing the translations for your native language. These files are located in the project's subdirectory 'po' and are named by the international language code with the extension '.po'. E.g. the Spanish translation source file is named 'es.po'. You can check out the most recent version via svn from the trunk as described in section Application Development, or you simply ask for a copy on the Development Mailing List. In case you start the translation of a new, not yet supported language you should ask for an initial source file on the mailing list anyway.

The 'po' file can be viewed and completed by any pure text editor. Do not try to edit it with word processors like 'Word' which try to format the text. The text editor should be able to support UTF-8, which allows you to insert all characters of your language. E.g. one of many such editors is jEdit, a Java based editor.

Within the 'po' file every translatable text is given as a block of several lines. First one or several lines starting with a hash sign '#' will give you some information. The subsequent line starting with "msgid " contains the English original text, and the translation follows in the line starting with “msgstr ”. Both, the original text and the translation, are enclosed in double quotations marks '“' being not part of the text itself. Both texts can be split to several lines, the text part on each line being enclosed by double quotations marks. In case you need to insert a double quotation mark within the text you need to enter the two characters '\”'. In case you need to force a line break you need to enter the two characters '\n' into the translation. The initial hash comments give you helpful information. Texts originating from levels identify the title and author. Level texts are less important than menu button texts of the application. For some texts the authors provide translation comments that give important hints for the translation. In case a comment of type “use” is given, the level author himself did provide a translation for your language. Best pratice is to copy this string to the msgstr line. You will find additional information in the reference manual in subsection Internationalization (i18n).

Now that you have added translations you should test your work. Especially menu strings need to fit into the given space on buttons. The required tool set is the GNU gettext software. Windows users can download from GnuWin32 gettext the binaries and the dependency packages. You need just the file 'bin/msgfmt.exe' from the binaries package and the dll libraries located in the 'bin' subfolder in the dependency package. Copy them to a folder out of the execution path. Now you are ready to format the translation from the command prompt. Change the current directory to the directory containing your 'po' file and issue, replacing the prefix 'pl' standing for Polish by the prefix of your language:

  msgfmt -c --statistics -o enigma.mo pl.po

The resulting file 'enigma.mo' can be directly used by Enigma. Windows users just need to locate the folder of the application executable and replace the original copy at the subfolder 'data\locale\pl\LC_MESSAGES', where 'pl' is again the prefix for Polish, which needs to be replaced by the code of your language. Do not forget to publish your 'po' file after finishing your translation work.

Copyright © 2003 - 2022 by Daniel Heck and contributors. The textual content is available under the Creative Commons License.