Monday, January 9, 2012

68 – Snapshots

Happy New Year! I already said it on Twitter but not everybody is on Twitter. So Happy New Year!

December sure was a month to my liking. I like to have my Decembers free. In 2010 I did not post too much on the blog. In 2011 I did not post at all, but at least this time you had a warning. Anyway, December was great and lazy. It is actually hard to get used again to working!

But I had time to do some thinking and plot a future for this project. Developing the 3D engine took a lot of time and it kind of became an endeavor in which I try to learn and incorporate as many 3D technologies I can without regards to the needs of the game. It also became a race to see how many fricking objects I can fit into a scene. Right now I have a relatively small portion of the code that is the 3D engine and a huge chunk of it that does nothing right now. Pathfinding, scheduling, plant growing, item management and all other things the 2D engine could do are basically dead code right now. It still works, but the 3D engine is not using these features. Time to fix that!

So I have two goals for the immediate future. The first one is to make the 3D engine capable of doing every single thing the 2D one could (that I posted about). This is a pragmatic and achievable goal. The second is to provide proof of concept that the formula of the genre could potentially transcend the limits of ASCII "graphics" and be feasible in a 3D environment. This goal is more symbolical than anything. I'll try my approach and reach a certain conclusion, but I'll leave others to be the judge.

So how are we going to achieve goal number one? Back to basics, that's how! The idea of larger tech demo and versions that have a lot of features and are perfect is dead. I'll do small incremental updates. I'll cut back all the GUI and fancy 3D engine stuff and create a fixed top down camera starting point. Extremely minimalistic.  After a few weeks I'll add back the isometric camera. And so on. But here comes the good part: incremental updates. Starting from this first version I'll keep reenabling and testing features, making sure I never break anything intentionally. And I'll try to achieve weekly updates. Even if an update only consists of some bugfixes or other minor stuff, if it brings me closer to my goal it is worthwhile to include in the weekly update.

And all updates will be public. Once a week I'll package a snapshot of my version (unless I break something and am unable to fix it in time) and upload it somewhere. As said, the first version is very minimalistic, so it won't feature the editor and launcher. There won't be a main menu. You'll boot it up and if it works you'll basically have a 3D visualizer. Also, because this is the first version and the first tech demo was supposed to be a stress test, snapshot 1 will be a stress test. It will be very resource intensive (relativity speaking compared to what the normal game load would be). Every single free cell will be occupied by a random object and LOD switching is disabled. I can't imagine a more stressful scenario. If this runs on your machine you are probably set for life.

And speaking of system requirements, here they are:
  • CPU: A fairly modern but not necessarily powerful CPU is required. Snapshot 1 does not use a lot of CPU but future updates will bring tasks and path finding back.
  • GPU: The engine needs a lot of pixel pushing power, but it does simple things, so most dedicated GPUs should work. Special note to integrated GPU users: the engine should work but it is not meant to on cheap integrated solutions. The worst case scenario I managed to get on the worst machine I could find was 8-12 FPS with snapshot 1 when zoomed out and camera scrolled to a busy portion of the map. Then again, integrated GPU has lower visual quality an can negatively impact game stability. Also the lack of dedicated GPU RAM makes the engine compensate with system RAM, increasing the RAM requirement.
  • Memory: 1 GiB RAM dedicated for the game. Plus what you need for you OS. And integrated GPUs can increase this further.
So what is the snapshot system, and precisely snapshot 1 about:
  • It marks the philosophical shift from developing until it is done and providing quality at the expense of nobody else seeing the game for years to release early, release often. Weekly (if possible) public snapshots. This also means bugs, stability issues and stuff sometimes breaking. It also means that people who are interested in the final game should not download any snapshots, or if they do once every few months is enough. For other people who want to try stuff and experiment, they can do so and the project is no longer a total secret, with 100% of the information you get cumming from me. 
  • It marks the shift from developing something that is meant to at point be finished and become commercial to developing something and whatever. It may become commercial. It may not. I don't know and I don't care right now. Until I flip the coin again, this is a strictly "not in it for the money" thing. This is so I can develop at my own pace and without any pressure.
  • Snapshot 1 is the "blank slate". An intentionally minimalistic and stripped down of all unnecessary distractions first version, a 3D visualizer if you will. From this blank slate, each update will carve out the game, reenacting the first year of 2D history in 3D and at a much brisker pace. So if you want to see the game grow up, snapshots are for you.
  • Snapshot 1 is a stress test. System requirements are a lot higher. If snapshot 1 does not work at all, future snapshots that are no longer a stress test might.
And on to the content of snapshot 1, together with instructions:
  • You will get a zip file that you must unzip anywhere. The location agnostic resourse locator is something I just finished a few minutes before starting this post, so it may fail under weird circumstances. Comment if it fails :). You launch the demo with "DH.exe". In a couple of seconds it should be loaded and functional.
  • The engine launches by default using DirectX as a back end, with a resolution of 1280x720x32 in windowed mode with vertical synchronization turned on.
  • "data/dh.ini" is you ini file where you can change settings. In the "screen" section you can find a few options that should be fairly self explanatory. You are about to download a strange piece of software from a stranger and are probably a DF player. You can handle it! The only option I'll talk about is "driver": 3 is Directx, 4 is OpenGl.
  • A new random world will be generated each time. Completely random. Normally there are some geological rules governing layering. Not so in snapshot 1.
  • The camera may be looking at stone section, so all you will see is a colorful checkerboard. Try scrolling and zooming.
  • Use the cursor keys to scroll the map.
  • F5/F6 zoom in or out. At minimal zoom you screen width will be enough to see around 4 cells. At maximal zoom you can see almost half the map.
  • F7/F8 control the camera tilt.
  • Try zooming in very close and increasing the tilt to maximum to get a floating camera. The scroll around. Zooming and tilting are interconnected and sometimes you get a nice transition when playing with both.
  • , and . keys change the current level.
  • Right click and drag to do a selection. For snapshot I disabled item selection because of a bug that only happens with such high item count as in this stress test, so it only works on walls right now. Right click on an unselected wall section and drag a selection. Right clicking on a selected section and dragging erases selection.
And now for known bugs:
  • Some mip mapping errors. You'll find them if you know what to look for, otherwise it shouldn't bother you.
  • Scrolling can sometimes be weird and jerky. I don't really know how to fix this, maybe I'll get some suggestions.
  • On integrated GPU without dedicated video memory graphical quality can vary a lot and system stability is bad. On dedicated GPUs it should never crash but on integrated ones it is practically guaranteed that you will get some crashes.
  • On one test system I have encountered some mouse lag. If this happens to you contact me.
  • There is a small bug if you do right click selections and scroll the map at the same time.
I repeat: tech demo 1 was supposed to be very hardcore and of no interest to the general public. Snapshot 1 is even less of interest. I expect snapshot 5 to start becoming slightly interesting. But I do appreciate any feedback or bug reports.

And be very careful. As said, you are downloading something from a stranger on the Internet. If you have any suspicions or reason to be weary it is best that you leave it alone. Having up to date antivirus, antispyware and antimalware is a must. Also don't run on critical machines.

Needless to say, what you are running is provided as is without any warranty. You are solely responsible from any damage caused by the use or misuse, accidental or intentional of this software. By downloading you agree to these terms. If you don't, don't download.

The package is copyrighted to the Flavor Of The Month Group, the development group responsible with the creation of the package. And to DwarvesH with several incarnations across  different social media. A full list of members, materials and said aliases/incarnations is not necessary at this moment but will be provided.

I opted to use bold and color rather that upper case letters since people tend to dislike it. I also avoided copy pasted legal speak. Just and English explanation.

So that's it. Update days should be around Monday. So next Monday should be the next update. I'll continue to write about development process as usual, not just on Mondays, but now you will also have the chance to try out what I have written about.

So if you are interested in seeing this unremarkable 3D engine become capable of all the stuff you've read in the past, keep up with the snapshots. Starting with Dwarves & Holes (0.2-snapshot001), unceremoniously dumper to MegaUpload. I'll need a better place.

PS: I can has bugreports?


  1. You're finally back.
    Are you a student? Unemployed? How old are you?
    Just being curious, so you aren't an internet stranger anymore and I can download your stuff.

  2. Works decent for me (zooming out to much drops fps realy fast, wait for LoD)
    Needed some time to fiddle out the keys.
    my findings:
    Arrow Keys: Moving
    F5 and F6: Zoom
    F7 and F8: Change view
    Other things: under data/dh you can change window size and full screen

    bugs: -"s" and "d" stop the game from taking any reaction + "s" makes the screen black
    -had one fail start(white screen) and one shut down (while moving)
    -does not regain the fps from start(60FPS) after zooming out to much(2FPS) an in again

  3. Hi Joe!
    No, I'm 28, graduated a few years ago and been employed since then.

    Hi Phil!
    Thanks for the report! I addressed some of the issues in post 69 and snapshot 2 should work a lot better. I hope!

  4. Works fine under Wine, that's good information... at least for me :)

    1. That's absolutely astonishing! I though that it would be more likely that I get my own unicorn as personal transportation that it running under Wine. Anyway, good to know!

      BTW, Linux version is probably going to happen. I have some minor compilation issues to solve (GCC and VC are not 100% compatible; I am aware of the incompatibilities but I prefer some of the VC peculiarities, but I'll fix this sometimes) and if Irrlicht cooperates and works fine under Linux, I don't see why not to release Linux version too.

      Soon, probably today, snapshot 2 is going out. When you have time I would appreciate if you can tell me if it works too and a maybe give me your system specs so I can get an idea what kind of machine you need to run it under Wine.

  5. OMG!!!!!!!!

    There is a reply feature now on Blogger! Personal reply! With indentation! Is this a new feature? It would be really awkward if I missed it for so long!