The past weeks where very, very busy for this project.
Since my last post about the ‘time issue’, I got myself motivated enough to spend more time (read, getting less sleep) on the game and see if I could make anything out of the existing codebase. I was wondering why my motivation was so low, and the reason is simple: Refactoring all the time, without making ‘real progres’ is very de-motivating. Especially since the game was so broken already, that it would require a major amount of effort to get it working again. Then again, it would be done in a rush, and that makes you want to refactor further along the road.
To be blunt, it was a dead end.
So what to do then? Rewriting, again? Sure why not. But not from scratch using SDL as I tried before some while back, but instead try to get out the minimals of the old source code, and see if I could make anything from there. It would be a waste to completely disbandon the code that has been written over the past 10 years.
I spent a week orso doing this. Along the way Arjen joined the process and we where talking about what would be good for a game in terms of code design. We built a little engine using a viewport on a map with pixel-perfect scrolling. After that we wanted to refactor something, due the lack of good tooling for C++, it took us half an hour. We had more little frustrations along the way. We knew how fast it could be, because we both had enjoyed the pleasentness of IntelliJ’s IDEA and the world of Java.
After the refactoring process, we both said “wish it could be done like in IntelliJ”. It happens to be that I had tried to write D2TM in Java a long time ago (somewhere in 2009 I tried a little bit). So I knew things could be done in Java. We quickly agreed to give it a shot.
We built the same engine (which took us a week orso) within an hour in Java.
We did not had to think much to decide we would go on with Java instead of C++.
The project is open source, you can grab the source code from here.
Tonight, we realised a multi-module project that knows three concepts:
- The concept of an “engine”
- The concept of a “mod” (the game rules)
- The concept of a “game” (which brings the engine and mod together)
We can draw a map and spawn multiple “viewports” which basically are now “camera’s” watching the map. We can spawn unlimited amount of viewports and give them pixel perfect scrolling.
Because Arjen and I are working on the project together (a lot of time using TeamViewer) we keep each other motivated. I am very happy with the help from Arjen and I hope we can continue working like this for a long time. It is fun to do, and we get great results pretty fast.
Here is the result so far:
- you can run the game, spawn ‘viewports’ (random size, viewing random location at map). You can move what the viewports see at the same time with arrow keys.
Next thing we want to do is get the facing of tiles correct, so the terrain being drawn is looking prettier.
Btw, you can join our programming sessions for fun, or if you want to contribute in anyway. Just get TeamViewer, and stay tuned on our twitter channel. Once we broadcast a new Teamviewer meeting ID you can join in.
Curious how I work on D2TM, want to see how I do it. Perhaps want to give suggestions, or just want to lay back and wonder what the heck I’m doing. Well you can!
Make sure you follow the dune2themaker twitter. Now and then, when a new Development ‘session’ starts, you can join us by using teamviewer. It is a free tool (when used for community project, which this is) for collaboration. You can watch, and you could even participate!
I love working on this project.
In fact, I have so many ideas still, I would love to make them reality. But the truth is, life with two children, a full workweek and such is taking its toll. I do work on this project from time to time, but not at the frequence as I would love to. Rather I’d work on this project every week for a consistent amount of time.
Some of you are wondering if there is anything happening, and I really like that. It tells me you care about this project.
I was thinking about how I’d like to speed up project development, and basicly it means that when nothing changes the pace of the project will be slow for a long time.
If only I could take a day off from time to time to work dedicated on this project.
Taking unpaid leave for a day costs money (~ around $120 USD). And thats a bit too much to do on a frequent basis from my own pocket. So I use the spare time I have.
So I have decided to put up a donate button in order to give you the possibility to donate money, solely so I can buy some time off for this.
Even when nobody donates I will continue on this project. But it would really help if you would donate (even just a little). To give you an idea:
~ $120 USD equals one day of unpaid leave.
~ $60 USD equals half a day of unpaid leave.
~ $15 USD equals an hour of unpaid leave.
Thank you for your support!
If you think there is nothing happening, you’re wrong. I have decided, after much thinking, to rewrite the engine. I will use a different library and I will try my best with makefiles (although my experience with them is virtually zero with them. I am too spoiled with Ant/Maven in Java ).
So recently I was asked about a roadmap of Dune II – The Maker. And frankly, the only thing I had on my mind was just to keep on working and release more often. My ‘roadmap’ looked a lot like this:
I did not really had a fixed scope, or goal for the next (0.5) release.
A lot of time has passed, and a lot of work is done, but yet the amount of releases is not as high as I would’ve liked it to be. And, neither are their feature sets. They are mostly refactoring, and limited new features.
This has to change.
And a roadmap can help me with that.
The roadmap i’ve laid down is pretty straight forward. I came to this roadmap by first writing down a few user stories which I think that should be in the game to consider it ‘finished’. Then, I decided how much work it would be to implement / finish a user story. I did this on a gut feeling basis.
I actually found that the user stories where fairly big. Because of the size of the user stories, I have made the following decision:
The coming stable release will contain only one user story:
The reason for this is simple:
- it gives direction
- it forces me to handle the main menu properly and the skirmish mode properly
- it forces me to have the (in game) engine ready enough to be playable
- it forces me to fix some bugs here and there
Only when I have finished this user story I will look at other big things to do. When I refactor, I will do so in the benefit of this user story. When I throw away code, I do that to achieve my goal set above. All actions should derive from this.
So when will this version be released? Frankly I have no clue. The amount of work is quite a lot, and my time is limited. Nevertheless, I am working on it big time, so just keep visiting and keep yourself updated. You can also follow Dune II The Maker at twitter!
A new unstable has been released. There are a lot of changes under the hood, but you will not find any changes in functionality. In fact, one major functionality is reduced: playing campaign mode.
I have disabled campaign mode because in the previous unstable a crash bug was found in campaign mode. Since I have not worked on that bug yet, I did not want anyone else to experience it.
Another reason is that this is the last unstable release before ‘refactoring the guts out’ of the current engine. I have set up a bit of boiler plate code that will be the beginning of an implementation of a few design patterns. Tearing apart the global state that exists in the current engine. The most obvious design patterns are: Factory, Delegate, Composite and State.
So what does that mean for all you guys in the next unstable:
- the main menu will be drawn properly regardless of the resolution
- the skirmish menu will be drawn properly regardless of the resolution
- state transitions will be better (the current unstable has some flaws in these transitions)
In the previous news message a question was asked about a roadmap. More information about a roadmap will be published soon as seperate page on this website. Stay tuned!
In the mean time, grab the unstable if you’re curious from here
In case you’re wondering if anything is being worked on… Let me shed some light…
You can see for yourself here.
Its a tiny feature, but it will make life easier for development.
The next version will tell what revision number is used, this number is generated from the svn tree when the binary is created.
As reported in one of the comments, the latest unstable release will crash horribly when playing the campaign. Be advised to play the skirmish games only, there are no known crashes there. If you encounter anything crashing, let me know.