Showing posts with label Snapshot. Show all posts
Showing posts with label Snapshot. Show all posts

Tuesday, February 14, 2012

Snapshot 6 Changelog (and it's private)

The new streamer is working surprisingly well. I just put it to the test under some interesting test scenarios which I am going to describe soon in another post and it has proven both stable and advanced enough to handle stuff it was not designed for.

Still, it is too early to release it into the public and since this eat up most of my time I still didn't bugfix Snapshot 5 100%, so Snapshot 6 will be kept private. It is feature complete, but buggy and I don't want to knowingly release buggy software if it can be avoided.

Here is a screenshot with it:


This screenshot was done on a computer with and integrated cheap Intel GPU without any dedicated RAM. The new engine has higher requirements but it can just about manage to slug along on such low hardware. So the upgrade in requirements is minor. 

Actually, I would like to do an experiment soon. Model only 2-4 objects at the standards of (the end of) 2012, with a polygon count perfectly suited for the complexity of the object and 2048x2048 textures. Try the engine in first person mode and see how it looks. And how it performs. I'll try with an 8800 GT and a 540M GPU.

Here is the changelog for Snapshot 6 (I won't go into detail because I've talked about a lot of this stuff in previous posts):
  • Uses the second generation 3D engine
  • Graphics overhaul. The current level and the one bellow are rendered with high quality blending to create the illusion of a less cube based terrain. Most meshes have been fine tuned for for better visuals and better LOD behavior.
  • Up to 60 levels can be rendered.
  • Streaming biased LOD switcher implemented. The system uses some simple heuristics to try and prioritize changes that have the potential to create a better image, while changes that don't have such impact or only free up resources are pushed to the back. Item building almost two times faster.
  • Crafted items have quality ranging from poor to epic (when it makes sense).
  • Cleaned up and bugfixed the item description panel.
  • Quick navigation keys: press "]" to go to the highest level of the current map, thus rendering the entire map. Press "[" to go to the lowest level of the map, thus rendering only that level and the one bellow.
  • Trees are back. They are still too high poly and represent a massive performance bottleneck. Animations had to be turned off. You can toggle the rendering of tree canopies on or off with the "T" key. Turning them off offer a performance boost and can even help you navigate the map easier because canopies are quite large.
  • Implemented wall smoothing.
  • Fixed horrible screen tearing in full screen mode with vertical synchronization turned off.
  • Smoothed out jerky movement when scrolling or zooming. Actually, this effects everything, from time passage to animations, but scrolling was where it was the most visible. Currently bugged if vertical synchronization is on.
  • When in first person mode and the game window is not active the mouse cursor is no longer grabbed and continuously repositioned at the center of the screen. Furthermore, while the window is not active the game is paused and the game will display the last render it had without consuming any resources except for RAM.
  • Better terrain generation: wold is made out of random thickness layers. A layer is predominately a single kind of material but has random chunks of other materials inside. The system still isn't as sophisticated as the one present in the 2D version.
  • New containers: armor stand and weapon rack.
  • New furniture: wooden chair, table and bed.
  • Improved item interaction consistency. Placing block on top of items used to work, but placing items on top of blocks didn't. Now all items and block are considered to be in the same category, so you can replace anything with anything without having to delete something from a given location.
  • Zooming now works with numpad +/- too.
  • Mouse wheel scrolling support to the engine. Scroll with the mouse wheel to zoom and hos shift and scroll to tilt the camera in tot down mode. In first person mode you can control the camera FOV with mouse wheel scrolling. 
  • Introduced a new super safe API for common tasks. This new API is very slow but it checks for most inconsistencies and reports them. I started using this API for most interaction tasks that are not performance critical. This is a developers tool meant to keep the number of bugs low and as the engine matures this new API will be slowly phased out.
  • The "X" key now also deletes all walls in selection, not just items.
  • When starting a new map the engine will try to position the camera upon an interesting location with a clearing rather than randomly in the middle of nowhere. Alternatively it is capable of placing you on the highest point of the map. But most of the time it will just put you in a corner with a clearing.
  • A few extra options added to the launcher to control mip mapping and filtering.
  • Experimental: The game can now be compiled and executes correctly without having to modify the Irrlicht package.
  • BUGFIX: When replacing a block with a block of the same type but a different texture, sometimes visually the update would only trigger after a secondary block has been replaced.
  • BUGFIX: Placing new blocks would not always update the height map.
  • BUGFIX: Items would sometimes be created over the upper border of the map if the map was too high.
  • BUGFIX: Placing items at world geometry seems can cause visual issues and even a crash.
  • BUGFIX: When changing levels in first person mode the camera no longer behaves in a disorientating way.

Tuesday, January 31, 2012

73 – When it comes to coding I am!

Here it is, Snapshot number 4:


Better than ever :P!

Let's go thought he changelog:
  • New LOD system. I talked about it extensively. I get he feeling that this system will serve me well for a long time. But I've been mapping out the weight of the nodes in my mind as I was testing and I think I've discovered a counterproductive pattern. I really need to write a quick real-time LOD level visualizer for the entire map, like a mini-map, so I can prove this theory. If it turns out to be true, I already know what he new weights should be in order to improve visual quality even further, but I am not going to do it now. Untextured objects have quite obvious LOD transitions. Here is a video I recorded earlier this week, so check it out and it's ample annotations:



  • The Options dialog now has an extra LOD setting: Ultra.
  • Recreated all the low LOD meshes for items to be better suited for the the new LOD system.
  • As traditional for a new snapshot, a new GUI. I'll talk about it in detail another time, after I make sure it is stable.
  • Keyboard bindings have changed around quite a lot.
  • Optimized shallow item population algorithm probably to the max!
  • Optimized floor building algorithm.
  • Because I am trying to finish floors 100%, this update focuses on floors. Walls are thus temporarily removed so you can interact with floors.
  • Stone floors are back. You can change between stone and soil floors with a few new tools.
  • Implemented shallow floor building. While shallow building can't always be used, when it can it stacks with the above mention floor optimization, giving an impressive boost in performance. By combining these two techniques the floor system is 90% there at catching up to the item system. I still need to re add smoothing/engraving and add roads. All mouse based selection updates on floors greatly benefit from this stacking.
  • Using the above two mentioned optimization, I mad grass growth about 100 times smoother. Updating the entire surface of the map (grass only grows on the surface) when every cell can have grass takes a single digit number of milliseconds, depending on CPU power. If in the long run it still turns out to be too slow, I can always break the update process into two. As said in this video, grass is still a little bit simplistic, but it is a good start:



  • BUGFIX: Fixed crash when releasing the right mouse button outside of the main window.
  • BUGFIX:  Hopefully fixed most of the weird behavior when releasing the right mouse button outside of the main window by implementing a rudimentary mouse capture system. Only time will tell if this is enough. And testing. Test it!
  • Implemented middle mouse button click support (still no mouse wheel support, so no zooming with the mouse wheel).
  • Made the window (when not running in full screen mode) resizable. The GUI does not scale or reposition yet.
I also made a quite random video:



I am fairly confident that by snapshot 5/6 I'll have most of the wold interaction tools in place. One more snapshot after that for workshops and I can get started on them dwarves.

Tuesday, January 24, 2012

Snapshot 3 is up!

Yes it is!


Approval went though OK, but I don't know exactly what they do with an upload. Could be anything from a cursory glance at the description to a virus scan to an extremely thorough test and in a few hours I am going to get the most comprehensive and complete bug report collection from my entire career as a programmer from the IndieDB staff. I am OK with all variants except the first one :). Anyway, I checked with Avira for viruses. Indeed, snapshot 2 seems to have been infected with a trojan but my system is not infected, so I guess that the infection took place on the way from my dev computer to the MegaUpload upload. Mega!

Don't have any feedback yet and I hope that everything works smooth. I had to upload twice. Remember when I had the strange bug of FRAPS not working with DirectX and horribly crashing OpenGL. Well, it was back and present in my first upload. I think I tracked it down to mixing a MSC9 compiled DH with the Irrlicht.dll from the official repository. Compiling with MSC8 fixes the problems and FRAPS is working again and I have no random crashes.

I also couldn't help myself, and a few hours before upload I wrote a mesh importer/exporter for a blob archive. Now all meshes are imported from the same file, making my life as a packager a lot simpler. It was easy to write the importer and exporter and geometry worked fine, but I couldn't get it to shade properly. It took me over an hour to fix this and now I have much better understanding of Irrlicht materials. Using my new hard earned knowledge, I adjusted lighting a little. It is not a new lights setup, just the parameters were adjusted and the world seems to be just a little more alive. Lighting is subjective and some may not like this change, but I think it is a nice first step. No screenshots for you. You'll have to download and see it in action.

Friday, January 13, 2012

Snapshot 2

This weekend I need to go to the town where I grew up a pick up an important member of my family: my cat. So I won't get to work during this period.

So I decided there is no use sticking to the Monday release date this time, so I'll upload snapshot 2 today. Feature wise it should be similar, but since I am missing 3 days of development it will be less polished.

Let's see the changelog, new features and key bindings.


The launcher is making its debut
In a not quite complete form:


The important part is that it has an options button:


Using this self explanatory dialog you can now more conveniently configure the game. More options will be added in the future.

Unfortunately due to cut time, the launcher is not actually a launcher. The "Launch Game" button does not work yet. In order to use it, you need to start "DHEditor.exe", click on "Options", configure to your desire, click "OK", exit the launcher and start the game manually using "DH.exe". I'll will fix this soon.


New lighting
The previous snapshot was too dark. This one is more bright. I'm really bad when it comes to lighting, so it will take several iterations to get it right.


Creation mode is starting to shape up
Last post I wrote about item deletion. To reiterate, right click somewhere and drag the mouse to define a rectangular selection area. If you right click on an uselected square and drag, you will draw a selection area. If you right click on a selected square and drag you draw an area that will unselect items inside once you release the right mouse button. You can select as any objects as you want with as many areas you want.

Press "x" to delete all selected items, even the ones that are not in view right now.

Added to this is item creation. I wanted to have the GUI ready, but read the first paragraph. So I used a quicker solution for this snapshot. Left clicking cycles though item types. Left click on an empty square to get the first item type, left click on the first to get the second and so on, until you left click on the last item type and the item gets deleted so you can start the cycle from the beginning.


First person camera
It is a little bit too early to add this camera and I'm only doing it to show off my awesome draw distance.

Press "F1" to activate the top down camera. Press "F3" to activate the first person camera. Both cameras have a tendancy to drop you in the middle of nowhere. If this happens with the first person camera you will wind up in the middle of the mountain. Use the mouse to look around until you see some objects in the distance and walk to that location. There is no collision detection so you can walk though the cliff-side/objects.

But the fun part is when you combine first person camera with creation mode. Adding object from a top down view is fine and what I want. But from first person camera: instant Minecraft! Without cubes! Well, at least a very rudimentary Minecraft.




This version was produced in a hurry and it might be buggy. But item density is lower so it should run on a wider selection of machines and stability should be increased because I greatly improved item generation. It is probably not uncrushable, but it should be pretty hard to do so. But please go for it! Crash it to hell and back and then submit detailed bug report :).

Known bugs:
  • Right clicking and going wild with the mouse sometimes fails to select/unselect a few items. Harmless.
  • Unseelcting tables causes the plates on top of tables to maintain their green selected highlighting. This is only visual, pressing "x" won't delete the plates, so the bug is harmless.

Be very careful. 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 getting 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.


Download link: Dwarves & Holes (0.2-snapshot002)

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?