Skip to main content

Rocks and Hard Places

Committed as I am to trying to put out an entry a week, this is a particularly problematic week for me.  On the upshot, it's not too often I'll get to blog from such a strange mindset.
  • I am on the tail end of a typical two-week-long cold bug.   Most of the symptoms are gone, but I still feel tired, floaty, and generally weird.
  • I just returned a few days ago after being away for almost a month, slumming it at hotels, while my house was being renovated.
  • The house feels pretty alien now.  There's new floors in over half of it, and it will probably be months before all the furniture and clutter is restored to where it belongs.  (I want to throw out most of the clutter, but it's not mine to discard.)
  • Because I am investigating seeing if I can afford to also replace another bit of floor, I have opted to leave my tiny 10x10' room temporarily crammed with more junk than I feel comfortable residing with.  However, since my computer is here, here I reside nonetheless.
  • The cats are quite spooked at all the changes around here.  It's a perpetual source of anxiety if they're going to find and utilize the cat boxes with all these new floors around.
It is hard to think straight with all this going on; how can I get any work done in this situation?

How can I not?  I spend my time at the day job thinking I ought to invest my free time productively so that I can feel creatively fulfilled and maybe make some extra dosh to settle my worries.  Such a thing gives life meaning, and without that...?!

So here I am, first weekend back at the house, discombobulated.  I get Fridays and Saturdays off.  It's my great big chance for productivity.  How do you suppose it went?
Friday, I mostly played Prison Architect.  It just sort of happened.  This was following the tangent of my thought about how Minecraft lacks moral significance.  I started a new medium-sized map with the default budget, thinking to myself I could make this prison work really well, thereby achieving a morally great virtual rehabilitation center... but, instead:
  • I was eager to get to the important bit, so I played the game at high speed, and got sloppy.  I had stopped caring about the game.
  • Many prisoners escaped or were killed no matter how well they were treated.  The NPC don't care about this game.  
  • My construction workers' pathing glitched out.  Apparently, even the developers don't care much about this game.
Despite the overwhelming apathy from all parties involved, Prison Architect is horrendously effective at occupying the mind.  Before I knew it, it was 8pm.

I reserve the last couple hours before bed to wind down for sleep, so Friday was a bust.  I spent the rest of the day watching some newer Angry Video Game Nerd videos.  He actually beat Seaman?  That's pretty awesome.

Saturday, I ended up helping out with an annual family reunion.  With my cold bug, I mostly sat around looking mopey, alone so nobody would catch my bug, and tried to assure everybody I wasn't snubbing them.  Dabbled a little with some of the top games on the 3DS... these games are so good, sometimes I wonder why I bother with the PC.

After that, I got back home at around 4pm and tried to focus on developing in Unity, but the mental exertion of trying to figure out where to start soon sapped my willpower.  Four hours after that, I'm writing this blog entry.  So much for Saturday.

Actually, lets write this down: exactly where am I with Unity that would cause me to get mentally tuckered out so quickly?  The short answer is that I'm trying to figure out how to get it to simulate a virtual world of the specs I want.  The long answer goes something like this:
  • For simplicity's sake, lets say that the environment would be like a Roguelike: everything is turn based, nothing moves until the player does, then it all resolves and the player gets another move.  This frees up a lot of clock cycles while simultaneously giving the player a strong strategic base, although real time game mechanics have their advantages as well.
  • I feel an important feature of my game is to keep instancing and virtualization to a minimum while simulating an overall HUGE world. 
    • Lets say, for example, the entire world of Ultima V were instanced and running at the same time.  To take some data on that, the overmap was 256x256 tiles wide, and each of these tiles simulated an ambiguous space that might be 11x11 in combat or several times the size for a town - a huge world on a few floppy disks: it was a very good use of abstraction!  Well, if I were to completely instance the whole map of Brittania assuming each tile of the world was about 30 tiles wide, I'd need 7,680x7,680 tiles.
    I am thinking about 10,000 by 10,000 tiles would be a good world size.  Nice round number, easy factor of 10, I don't need to think in bytes as much as Ultima V required.  However, can I keep this instanced and active and updating on a turn-based mechanic on a 21st century computer?   That is 100,000,000 tiles, but that is just the largely inactive data backdrop that significantly less actors would be acting on.  If each tile is a byte, that's 100MB, which is not a terrible amount by today's memory standards.
  • Of course, there will be a great deal of procedural generation mechanics involved.  I'm not creating all that content myself!
It is a situation that has proven way too complex for the other IDEs (although I will say that Crashlands was a real surprise coming from GameMaker as it proved a virtually limitless procedural world is possible to get that engine to do).  I have turned to Unity as a last-ditch effort to avoid leaving complete engines and WYSIWYG IDEs entirely.
Now, right off the bat, I can tell you that I can't have a direct tile-to-GameObject relationship here, because you can only run a few tens of thousands of GameObjects before Unity croaks at the memory footprint.  What I could do is have each GameObject handle a "chunk" of tiles, for example a 100x100 tile chunk is 10,000 tiles, meaning I'd only need 10,000 GameObjects with those chunks to realize an entire 100,000,00 tile map.  Even better, however, would be to keep the map data completely in variable form and only instance additional GameObjects to render what the player can see.

That's about as far as I get before I start wondering if maybe Unity isn't the best choice for this.  I might be wiser to jump ship and go to LibGDX framework to build an engine optimized for the job.  Unity undoubtedly has more tricks than I will EVER have time to code but, as I mentioned last entry, there's something backwards about trying to get an advanced 3D engine to emulate the tilemap engine that my design would seem to need.

On the converse side, I can stop being so anal retentive and do some abstraction.  While it is cool to think that everything on a 10,000,000 tile map is being updated every turn, it is really hard to say that is particularly necessary.   There would be a lot of wasted space doing absolutely nothing.  Instead, I could simply have a 250x250 size "overmap", and just instance a few 100x100 size "chunks" of that map for places where things are actively happening while leaving the rest abstracted out of the picture.  That would be a lot easier to handle and would allow me to simulate a larger world with very little loss of meaningful fidelity.  Of course, not simulating everything at once guts a major feature I was excited about.

Okay, having written that out, what's the decision?  What shall I risk the next tens of thousands of free hours of borrowed real life time to do, possibly only to have it crash and burn if it turns out I made the wrong decision?


So, yeah, that's basically how that whole "mental exertion rapidly sapped my willpower" thing comes into play.  There's no best answer here.  However, I can't just charge in without making a decision, either, as this particular endeavor requires one to succeed.
Post a Comment

Popular posts from this blog

Resonant Induction Really Grinds My Gears... In A Good Way

From about 2pm yesterday until 8pm today, I've been dabbling with my latest custom mod mix for Minecraft 1.6.4, which is this time very much Universal Electricity focused.
Aside from the usual GUI enhancers and Somnia, the primary contenders in this mix were:
Calclavia Core - Of course: this is the base of the Universal Electricity system.Resonant Induction - This seems to be largely focused on increasingly more advanced methods of refining ores divided across 4 ages of technological progression.  It also includes some really cool things such as assembly lines.  I'll primarily be talking about just a few blocks out of this mod today.Atomic Science - A mod dedicated to generating more of those lovely universal electricity volts via the power of splitting the atom.  Build your own nuclear reactor!  Deal with nuclear meltdowns!  You maniac!ICBM - A mod dedicated to generating more destruction using those lovely universal electricity volts (and more than a little gunpowder), it cer…

Empyrion Vrs Space Engineers: A Different Kind Of Space Race

In my quest for more compelling virtual worlds, I have been watching Empyrion: Galactic Survival a lot this bizarro weekend, mostly via the Angry Joe Show twitch stream.  What I have concluded from my observations is Empyrion is following in Space Engineers' shadow, but it is nevertheless threatening the elder game due to a greater feature set (the modding scene notwithstanding).

Empyrion is made in Unity, whereas Space Engineers is built on a custom engine.  While this does put Empyrion at a disadvantage when it comes to conceptual flexibility, its developers nevertheless have a substantial advantage when it comes to adding features due to a savings of time spent that would have gone into developing their own engine.  Examples include:
Planets.  Empyrion already has planets and space to explore between them, whereas in Space Engineers planets are in the works but still awhile away (so you just have asteroid fields to scavenge).Enemies.  Space Engineers' survival mode boasts onl…

Ancient Warfare - What Is It Good For?

The Ancient Warfare mod for Minecraft threw me for a loop.  I was looking for "villagers" that would perform useful tasks while simultaneously resolving the glut of food with a need to eat, thereby turning Minecraft into a bit of 4X game you can play from the inside.  Millenaire wasn't quite there, partly because recent updates to Forge had broken its compatibility with Minecraft 1.7.10, and Minecolony's development is not quite fast enough to keep up with the state of mods in general (they probably need to make a core API).
In comes Ancient Warfare, which does indeed provide workers and soldiers who need to eat, you can even order around a little army of them to defeat your enemies.  It has working waterwheels and windmills, something I thought was awesome in Resonant Induction.  It has a warehouse with a built-in sorting system, as well as courier NPCs that can move things from building to building, and crafting NPCs that can create things for you automatically - w…