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.
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!
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.
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.
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.
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.