ABOUT

ABOUT ME
Hi I'm Robert aka Pyrdacor and I love to create games.

Born in 1985, I fortunately got a glimpse of the good 'ol retro gaming back then.

My brother in law gifted me his Amiga. With it I also got Monkey Island, Serf City, Lemmings, Shadow Lands, Fate of Atlantis and of course Ambermoon. Aka the good stuff!

I was immediately hooked and I guess my parents didn't see me much after that day. I was just fascinated by those games and became a nerd.

But as much as I loved playing, I always was very curious of how this all was done. So I wanted to know how to create such games. But the time wasn't right at that point. I was still around 8 or 9 years old.

On a trip to Tunesia in 1999 I got a game magazine for the plane. It was the PC Action 11/99. I picked it because Age of Empires 2 was showcased (I swear not because of the cover!). Moreover there was a small section about creating levels for Half-Life which I loved at that time. I could not stop reading the map editing section and imagined how I would create my first own map on return. The trip now became something that was in the way. I wanted to create maps!

Back home I created my first Half-Life map. It was a room with a single purple light source. It was nothing, but for me it was awesome. I felt like the king! On that day I finally decided to become a game developer. I said to my parents: I want something to create games for Christmas. Back then I didn't even know what this "something" is.

So my journey as a game developer started with a Christmas present in 1999. I began programming C++ without knowing what programming actually was and without the world wide web as a resource. So one could say: I learned it the hard way. :D

I also created many maps for Age of Empires I and II, Half-Life, Counterstrike and eventually started playing the Quake3 Mod DeFRaG where I created many maps and also provided some code later. Of course I started nearly a thousand private game projects. A few simpler ones were actually finished.

So here I am today, putting two major parts of my life together: my love for games and my skill in programming which evolved over the years. It is a great feeling to be able to write an old game like Ambermoon from scratch and bring it back to life again. Huge parts of my life were dedicated to arive at this point. So I'm very happy to finally be able to achieve this.
Contact Me
AMBERMOON & ME
Some people asked about my reasons and background. So I started to write a bit of the story and process of developing this remake. It is not complete but should give a little bit of insight.

About the "How" and the "Why" I have to tell a lot. Unfortunately my time is very limited to document all this. Some things about the "How" are indirectly documented inside some "Issues" of the github issue tracker. Especially here, here and here.

The motivation behind this project is easy. I got the Amiga and Ambermoon as a child. It was my first RPG ever and what should I say. I loved it and was totally fascinated by the huge world and its atmosphere. I started to write walkthroughs, books and even planned a sequel ages ago (I guess my earliest plans for a sequel are at least 15 years old if not much older).

So Ambermoon was always a part of my life and I always wished to create a game like it. What kept me away from porting it to PC was the deep belief, that it is just not possible. I didn't have any source code, I didn't know anything about Amiga programming and architecture and I knew that recreating a whole game is too much of work for one person.

But a few years ago I stumbled on a port of The Settlers by a swedish guy called Jon Lund Steffensen called freeserf (http://jonls.dk/freeserf). The Settlers was another game which fascinated me as a child and I also wanted to create such a game. :D So seeing this project I realized that it is possible somehow. I invested most of my free time into a port of freeserf from C++ to C#. I know, a bit unconventional, but I liked C# very much at that point and I can do stuff very fast with it. Another reason for the port was, that freeserf missed the AI component. And I wasn't into C++ anymore at that time (even though I did C++ for several years since I was 14) and didn't want to develop the AI in C++. So I ported to C# in a short amount of time (it was kind of a fulltime job, and I guess I managed to do my real 40h job as a sideline for months without someone noticing). Finally I could implement the AI and I even started to implement a multiplayer mode. I mean a real one! Not a split screen. So you can play The Settlers in a multiplayer game via LAN or Internet. It is not finished until today because of ... you know ... Ambermoon. :)

At that time I still considered Ambermoon to be too hard to port. And then (as I still was a fan and read much about Ambermoon on fansites like the one from Alex) I stumbled onto an article which talked about the data driven development of Ambermoon. It was written by Jurie Horneman :).

I was extremely interested. Data driven means that lots of the game logic, which is normally implemented in code, is represented by pure data. I also found that Karsten Köper came up with this idea at the age of 17? I immediately became a fan of him. And a fan of data driven development. I even started writing down ideas about a new data driven programming language. :D Those damn Thalion influencers. ;)

I knew I was pretty good at analyzing data and making sense out of it. So I searched the web for resources of Ambermoon. I found the AmberWorlds project by Oliver Gantert and slothsoft by Daniel Schulz which both decoded parts of the data or even provided tools. The projects seemed rather dead. And I found an Ambermoon project on gitlab by Nico Bendlin which also provided valuable resources. It became a direct resource for my research. Especially his text lists eased looking stuff up, finding map IDs etc. I wanted to preserve the efforts of all the projects and contributors and extend the game data decoding.

So I thought, maybe I can decode some data as well. And so I did. Quiet successful imo. I started to create a map loader and displayed my first map. Luckily I could reuse great parts of my freeserf.net engine (which I implemented from scratch before).

It took not too long until I could render all 2D maps of Ambermoon. The visual parts of 2D maps were already decoded to a great extend before I started and displaying tiles with my engine wasn't that hard anymore. Then I decoded more and more stuff like map characters, map events, the UI layout and all kind of graphics. Some through testing and looking which bytes change and some through just looking at bytes and make sense out of it. For example when you see some bytes in character data you can compare the characters and try to guess what it could be. Then you change the byte and see what happens in the Amiga version to be sure. I continued this process and so finally I could implement all features and decode all game data. There is not much left which is not yet decoded. And if so, those bits and bytes mostly are unused by Ambermoon (maybe Amberstar used some of them, as they share some parts of the formats).

One of the hardest part were the 3D maps. It took me quiet a while but finally I also managed to decode the whole 3D map data, skies, lighting, 3D monsters and objects, move paths and so on. Back then there was no information of the lab data (labyrinth data) which basically stores all data for the 3D environment. Not even the textures were decoded or extracted. I am very proud of that part as it was pretty hard and I did it nearly without any reverse engineering but just by wrapping my head around bits and bytes and playing with ideas.

Ah yeah speaking of reverse engineering. I never saw m68k before. I have a book about x86 Assembler in my bookshelf but that's it. Luckily a guy called kermitfrog joined the project on github and offered some help. He managed to setup a debugger and was in general very good in finding code locations. He analyzed some things for me, that were not clear and also pointed me in the right directions. With my pieces of knowledge about assembler I finally also started reverse engineering. Again I could make good sense out of code fragments and found many things. Sometimes it was also guessing and assuming but in the end all dots were connected. Together we found many things (even original bugs nobody found before) and could correct the game mechanics so that it really behaves like in the original. There are hundreds of tiny aspects we adjusted through reverse engineering. There is a huge thread about it on GitHub if you are interested (link).

So here we are now. Ambermoon.net is released and beside some minor bugs it is quiet stable and runs on multiple platforms. I always was a fan of open source and cross platform development. It isn't always easy but I deeply think that the world is there to share ideas, resources and joy. :)

With Ambermoon.net I fulfilled a dream of mine, which I never really thought to come true. And there is more. My knowledge about Ambermoon has grown a lot. So I feel to be capable of creating mods and even a sequel now. Maybe I can even be a full-time game developer some time in the future. That would be awesome.
Visit the project
Share by: