Author Archive
New design and first steps towars being an entrepreneur
by Clemens on Aug.13, 2011, under General
A few weeks ago I tried out ‘elance.com’. Yes, I could design an own logo, yes, I could invest many many hours, but why not do what I can do best, earn more money per hour concentrating on something else and hire someone experienced instead? The result is the new logo you see at the top and the new design (the latter being my own work, further adapting the wordpress ‘Pixel’ theme).
What did I have learned from this? It’s a great way to get your own thoughts straight. You have to define the project and all steps. It’s a great way to put your own thoughts into action and keep being motivated until the project is finished – because there is (hopefully) a motivated worker at the other end
I already have plans for new projects, this time letting someone do some programming for my new database project.
“Fantômas” and modern software production
by Clemens on Aug.12, 2011, under Programming
Fantômas (French pronunciation: [fɑ̃tomas]) is a fictional character created by French writers Marcel Allain (1885–1969) and Pierre Souvestre (1874–1914).
One of the most popular characters in the history of French crime fiction, Fantômas was created in 1911 and appeared in a total of 32 volumes written by the two collaborators, then a subsequent 11 volumes written by Allain alone after Souvestre’s death. The character was also the basis of various film, television, and comic book adaptations. In the history of crime fiction, he represents a transition from Gothic novel villains of the 19th century to modern-day serial killers.
The books and movies that came out in quick succession anticipate current production methods of Hollywood, in two respects:[1] First, the authors distributed the writing among themselves; their “working method was to draw up the general plot between them and then go off and write alternate chapters independently of each other, meeting up to tie the two halves of the story together in the final chapter.” This approach allowed the authors to produce almost one novel per month. Second, the movie rights to the books were immediately snapped up. Such a system ensured that the film studio could produce sequels reliably.
The novels were spoken at the same time in different rooms and recorded on wax cylinders which then were evaluated by two groups of stenographers. Only with this method it was possible to fulfill the quota of one book each month. In preliminary talks both Souvestre and Allain allotted the chapters that had to be written. Because of the time pressure both authors usually did not read the other author’s chapters and sometimes even didn’t proofread their own works.”
wikipedia
wikipedia (emphasis added)
Modern software production is not much different. It is interesting to learn that source version control systems / project management systems have a long history, way before computers even existed.
Doing it right – the first time!
by Clemens on Mai.23, 2011, under Programming
Whenever you are in the situation of having the choice to rush to a working milestone or put some extra-effort into ‘doing it right’ take a moment to think. Sure, there are deadlines, but there is also the deadline after the deadline. Putting all your effort in reaching an early first deadline will earn you some extra-cash, but the same cash you have to reinvest to re-structure and re-build your code. Next time when you are in the situation of planning a new milestone try to insert some extra time for ‘doing it right’. If you are the manager get your team motivated by giving them a week for cleaning up the code. It will help future releases, make the programming experience for your workers more enjoyable and maybe even find a bug or two.
Grow organically!
Myself I’ve just decided to properly implement the whole layout thing which is essential to any user interface once it reaches a certain complexity. When you have to deal with multiple objects on the screen and maybe even multiple resolutions you have to have a layout class which updates the positions and sizes of the windows accordingly. Hard coding the positions in your database (or even code) is a swift solution but it will bite you the first time you want to ‘also support his other system’. Especially in the time of the web and mobile devices you have to be very flexible. “Hey, let’s port this to our mobile phone, how long will it take? A day or two? You *just* have to change those widths and heights…”
Progress and new (sub-)project
by Clemens on Mai.15, 2011, under General
I finished my work on the tabs, buttons and windows of the GUI, now I’m thinking about the next project. While there are still about about 6-8 months of work ahead for EF2 I find it important to plan the next steps. This is an important lesson from project management / marketing. People who find your product great want something to look forward to. If you can already present the next product a few months after the first you can ride on the momentum of public interest the release of your first product has generated. Otherwise people will simply forget about you and move on.
I did a lot of work in the Java2EE / Web UI field in the last year at work so I will program the “EF2 premium” version in Java. While the EF2 user interface looks great it lacks many of the advanced features that Java2EE in connection with GWT provides (a dynamic grid with SQL connection, authentication features, RPC client/server communication, browser integration). Thus I have split the project into two parts: An optimized main module in C++ that does the actual calculations and that runs locally on your computer to display the colorful graphical user interface and a more complex configuration interface in your web browser to individually configure the 30 interconnected tables required to run Evolution Forge 2. It gets more exciting every month, stay tuned!
Progress :)
by Clemens on Mai.10, 2011, under General
Banging my keyboard against the -Wall I took up the challenge to cut down all warnings. My motivation / coding strategy usually is that whenever I’m stuck with some programming issue I try to beautify the code. Most of the times I find a number of bugs I will encounter sooner or later, so every hour invested is worth it! Plus the statistics look good
I still have a bug to fix but the menu bar and the window handling is already working. I’m looking forward to a full working base application (well, it starts, shows buttons, hides/displays windows) at the end of the months.
Update
by Clemens on Apr.18, 2011, under Evolution Forge 2, Programming
In the last weeks I have completed the sound integration (music and sound effects, marvelous!) and completed the basic GUI including internationalization (german and english for now). Buttons are already working, here and there are still some issues with transparent graphic objects but all in all my main task is now to design the interface, especially to assign proper coloring to all GUI objects. I also have to write an editor sooner or later, editing XML files by hand becomes difficult when you are dealing with inter-related tables… Let’s hope I can finish these things quickly so that I can get to re-implementing the evolutionary algorithms. According to my plans this should start in July. My current status:
- Audio
- Build
- Core
- Games
- Geometry
- Goal
- Gui
- GuiCore
- Lang
- Main
- SDL
- Simulator
- UI
– FMOD/SDL_mixer support
– Evolutionary algorithms, processing of the building queue
– Rules, Units, Locations etc.
– Game Rules (finished for StarCraft)
– Coordinates, distances, Rectangles, math
– logic to handle user defined goals, finished but needs some testing
– Logic for GUI elements (window, buttons etc.)
– Data elements describing gui objects (colors, size, animations, bitmaps etc.)
– Internationalization, dynamic text elements, parameters
– Startup code, main configuration
– Drawing, refreshing screen, calculation of parts of the screen to update
– Main simulator program, executes the game rules and the building queues for all players
– Need to be refactored to new architecture
All in all ~50k lines of code (2,5mb) and about 0,5mb XML files. Looks good!
Graphic Engine is done!
by Clemens on Apr.03, 2011, under General
After lots of tweaking and fixing the graphic engine is finally done! All the GUI elements (windows, buttons etc.) are also complete, now the main task is to add them all to the user interface. A few features of the engine:
- Platform independent (based on SDL)
- On the fly changes of language/background/bit depth possible (no restart of the program necessary)
- Super fast (even without OpenGL), only necessary parts are redrawn each frame (sounds simple but quite a lot of geometric algorithms and logic is needed for that)
- Dynamic placement of objects (all objects slide over the screen to their target position)
- Fully configurable via XML files
Next I will add some basic windows and complete the sound/music part of the engine. After adding some settings windows I will finally include the middle ware for the core algorithms you all waiting for

(Wallpaper (c) Blizzard Entertainment)
How (software) companies work, in pictures
by Clemens on Mrz.04, 2011, under General
This is a very first draft of a software company, a lot of things are missing but I found the idea intriguing to make a picture. One way or the other all (software) companies need to look like this, although very often multiple positions are held by a single team member. This might be ok sometimes, but might cause conflicts in certain situations. I think it is important to put all connections in detail down to paper and analyze them. And that is basically the job of one of the missing entities in the graph – the entrepreneur
Source code
by Clemens on Mrz.01, 2011, under General
A little insight into EF2s structure:

Currently the ‘Test’ seems a little small compared to the rest of the program, that’s because the old code I took over from EF1 was untested. I’m still amazed how it was possible for me to develop EF1 without test driven development
Features of Evolution Forge 2!
by Clemens on Feb.22, 2011, under Evolution Forge 2
Leave a Comment more...


