<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6395743605854105890</id><updated>2012-02-16T02:08:27.017-08:00</updated><category term='kickstarter'/><category term='fluiddynamics'/><category term='tools'/><category term='wisdomofstone'/><category term='coindoorinterlock'/><category term='bug'/><category term='bugs'/><category term='compilers'/><category term='development'/><category term='testbed'/><category term='visibility'/><category term='art'/><category term='goal'/><category term='array'/><category term='diary'/><category term='minecraft'/><category term='cursor'/><category term='cython'/><category term='flag'/><category term='tiles'/><category term='rewards'/><category term='worries'/><category term='gas'/><category term='continuity'/><category term='video'/><category term='collisiondetection'/><category term='launch'/><category term='frustration'/><category term='worldbuilding'/><category term='newproject'/><category term='sort'/><category term='notes'/><category term='narrative'/><category term='boulders'/><category term='simulation'/><category term='sonic'/><category term='caves'/><category term='gameplay'/><category term='inprofundis'/><category term='fluids'/><category term='graphics'/><category term='argh'/><category term='imbackbaby'/><category term='etc'/><category term='inventory'/><category term='algorithm'/><category term='gravity'/><category term='game'/><category term='ideas'/><category term='platforming'/><category term='boring'/><category term='numpy'/><category term='welcome'/><category term='swimming'/><category term='panic'/><category term='optimization'/><category term='design'/><category term='dev'/><category term='direction'/><category term='screenshot'/><category term='project'/><category term='slopes'/><category term='boooo-riiing'/><category term='pyglet'/><category term='generation'/><category term='exploration'/><category term='worldgen'/><category term='randomness'/><category term='sandbox'/><category term='caverns'/><category term='solids'/><category term='inspirations'/><category term='updatelists'/><category term='ipad'/><category term='map'/><category term='playabledemo'/><category term='youtube'/><category term='pitch'/><category term='demo'/><category term='voiceover'/><category term='fundraising'/><category term='regions'/><category term='mayflight'/><category term='substances'/><category term='woohoo'/><category term='water'/><category term='description'/><category term='ios'/><category term='opengl'/><category term='statechanges'/><category term='cellularautomation'/><category term='python'/><category term='compilation'/><category term='planning'/><category term='updatelist'/><category term='pushing'/><category term='background'/><category term='physics'/><category term='integers'/><category term='ceiling'/><category term='update'/><category term='python unladenswallow'/><category term='rendering'/><category term='idea'/><category term='contextsensitive'/><category term='vision'/><category term='roguelike'/><category term='basic'/><category term='mazes'/><category term='maze'/><category term='static'/><category term='random'/><category term='gamasutra'/><category term='engine'/><category term='matrices'/><category term='videos'/><category term='thanks'/><category term='gruntwork'/><category term='crawling'/><category term='website'/><category term='reddit'/><category term='fallingsand'/><category term='publicity'/><category term='items'/><category term='ordering'/><category term='liquids'/><category term='equipment'/><category term='cellturn'/><category term='partialupdates'/><category term='pygame'/><category term='article'/><category term='rescue'/><category term='backstory'/><category term='progress'/><category term='jumping'/><category term='heightmap'/><title type='text'>COIN DOOR INTERLOCK</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>90</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-2935296050086706546</id><published>2012-02-13T00:49:00.000-08:00</published><updated>2012-02-13T00:49:10.183-08:00</updated><title type='text'>I exist....</title><content type='html'>I'm still banging around.  Unfortunately there are other necessary things going on right now, but I'm still here.  I realize that it's been slow going, and it gets embarrassing to say "it's been slow" too often.  We're approaching ten months since the Kickstarter project made, and I realize that's pretty sorry.  There is no need to remind me of that fact.I have gotten some inventory stuff and tool stuff put in.  The big thing that's been worrying me so far is that I'm thinking random fluids, as they're currently implemented, may not be as interesting as I had projected.  It's not that random properties are bad, but when you have several kinds of fluids all mixing in a big basin, I'm not sure they interact in ways that are too clean.Graphics are another thing that's been worrying me lately.  They're okay in a kind of makeshift kind of way, but I haven't really spent much time on making sure the stone looks nice.  I'm not talking about photorealistic nice, but in a wasn't-knocked-up-in-thirty-minutes-in-MSPaint nice.Well, those are the things on my mind concerning the project at the moment.  More before long, I expect.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-2935296050086706546?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/2935296050086706546/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2012/02/i-exist.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/2935296050086706546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/2935296050086706546'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2012/02/i-exist.html' title='I exist....'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-409719648625025217</id><published>2011-12-30T09:23:00.000-08:00</published><updated>2011-12-30T09:23:31.849-08:00</updated><title type='text'>In Profundis design (12/30)</title><content type='html'>So, here is how tools that have a visible extent in the game world should work.  Maybe someone can suggest something if they spot a potential pitfall.  This is the system used for ropes and spanners, and will probably be extended for other things.&lt;br&gt;&lt;br&gt;The tool itself exists in one cell of the world.  That cell "is" the tool for purposes of recollecting and destroying.  A rope hanging from a piton "is" the cell containing the combined object.  Spannners, portable, extendable platforms (not what are sometimes called wrenches -- maybe I should find a better name) have a central point from which they extend, and that point "is" the spanner.  Make sense?&lt;br&gt;&lt;br&gt;Once placed, "shadow" objects get placed through the CA system.  I call them shadows because they are "cast" by the primary objects, but to the CA they can still have interactions.&lt;br&gt;&lt;br&gt;On the primary object's turn, it checks in the spread directions (down for rope, left and right for spannners) and sees if it's empty and suitable for spreading.  If so, it places the appropriate object (rope tile, extended platform for spannners) in the place.  It also sets a "strength" value on the tool.&lt;br&gt;&lt;br&gt;When a shadow object's turn comes up, it first checks in the direction to grew from, to see if a matching source object or stronger matching shadow object is there.  If it is, and has a strength greater than 1, it tries to spread itself, and if it can produces a clone of itself at one point less strength.  If for some reason it doesn't have a matching object, it removes itself from the game world, the "source of the shadow" has gone away, it isn't casting anymore.&lt;br&gt;&lt;br&gt;Advantages to this system:&lt;br&gt;- Quick.  The processing required for each cell remains light.  While tools will probably not become very common objects in the game world, it's important that, if the player were for some reason to buy lots of them and string rope everywhere, the game engine could handle it.  This avoids a particular Minecraft problem; there, liquid is handled in a similar source-and-shadow manner, but when a source tile is removed, on slower systems the computer becomes very laggy for a while, while dependent fluids are recalculated.  (When I shut off or on the water flow in my multi-story mob grinder, which has many forks, long cascades of liquid, and collecting streams at the bottom leading to the output trough, it's several seconds before I can do anything else.)&lt;br&gt;- Self-correcting.  Every shadow object checks for a source every turn; if the source disappears for some unexpected reason, it does to, and so thus do objects that depend on it.&lt;br&gt;- Fun to watch.  Multi-tile objects don't appear instantly, but over a short period of time as the shadows propagate through he world.&lt;br&gt;- Has a certain elegance.&lt;br&gt;- Respects 'c', which is important for avoiding subtle CA calculation problems.  'c', or the "speed of light," is a bit of cellular automation jargon -- it refers to the maximum rate at which changes may propagate through the system.  In Profundis' speed of light is one tile/frame.  At the moment, no tile can affect the game world more than one immediate space in each direction.  If placing a rope instantly placed all the rope tiles into the world, it would break the speed of light.  Currently, In Profundis calculates its world in a square spiral pattern emitting from the player's location, skipping every other square, but starting on an even or odd square in successive turns.  The result is that a checkerboard-like layout of tiles is calculated every turn.  Since no tile can produce and effect that extends out further than one tile orthogonality, we can be sure that changes aren't propagated too fast, producing results like instantly-falling water.  This doesn't matter so much for example tools, but might be important for other tools later.&lt;br&gt;&lt;br&gt;Disadvantages:&lt;br&gt;- Inherently tile-based.  I was worried before about the game's strict grid-based presentation; I've brainstormed ways to effectively implement sloped rock tiles that still handle water effectively for instance.  I've spent too long trying to figure that one out however.  The project has gone on long enough, and I think now I'm not going to worry about the limitations of the grid-based CA.  It certainly hasn't hurt Minecraft any.&lt;br&gt;- May result in circular, self-dependent shadow objects if those objects aren't designed well.  Could a situation arises where multiple-placed primary objects interact in a way that a self-reinforcing system of shadows could set up?  Not in the simple situations I have described, I think, but more complex objects might have branching shadows, and if somehow a shadow object can produce another shadow of greater strength than itself this situation could arise, where all sourcing primary objects could be removed but surviving shadows keep each other refreshed.&lt;br&gt;- Has a certain lack of realism.  Imagine a case where a spanner platform extends several cells out into the air, and a boulder falls through the middle of it.  When it falls through the platform (spanners aren't strong enough to support such weight) the next platform over will no longer have a source, and will vanish the next frame.  But the boulder will then continue to fall, and so the spanner it destroyed will be recast the next frame.  The result is a one-tile gap that moves down the spanner like a wave, a behavior that isn't mirrored in real life.  Similarly, what if gravity affects spanner sources?  If the source is unsupported, it will effectively create a V-shaped platform shadow through the world as it falls, as it created new platforms around it as it descends, while those left behind it by its fall both spread and disappear outward through the route from where the spanner passed.&lt;br&gt;&lt;br&gt;Still though, I think the mechanism solves more problems than it causes, especially if I keep tool designs under control, and it may be applicable to simulating non-tool objects as well.  Remember, it's always best to keep CA effects as simple as possible; the more work you do on each cell, the more likely the whole simulation may, in some situations, start to drag.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-409719648625025217?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/409719648625025217/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/12/in-profundis-design-1230.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/409719648625025217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/409719648625025217'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/12/in-profundis-design-1230.html' title='In Profundis design (12/30)'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-7518484694680158939</id><published>2011-12-29T14:16:00.000-08:00</published><updated>2011-12-29T14:16:14.595-08:00</updated><title type='text'>In Profundis progress</title><content type='html'>Yep, I'm still alive, although right now I don't quite feel so definitely on the "alive" side, due to a cold that's lingered around a few days.It's been a hectic month overall.  Distractions abound.  I presented my final paper for my Master's degree and it went very well.  A cousin unexpectedly died in a motorcycle accident.  And I've been trying to work in bits on a prototype for a friend's game.I haven't forgotten about In Profundis though.  Hell no.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-7518484694680158939?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/7518484694680158939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/12/in-profundis-progress.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/7518484694680158939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/7518484694680158939'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/12/in-profundis-progress.html' title='In Profundis progress'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-5237192134112862505</id><published>2011-11-19T05:16:00.001-08:00</published><updated>2011-11-19T05:16:26.206-08:00</updated><title type='text'>In Profundis Progress: Tools, Inventory and personal coding deficiencies</title><content type='html'>This is about the place where my general lack of experience with modern (that is, post Commodore) development is biting me hard.Something I've been worried about is the representations of user-placed items in the world.  There are three general possibilities here, and I've messed around with each one to some degree.Possibility one is to implement them as sprites, that is, as moveable objects that can move independently of the cellular grid, like the player can.  This is what I tried first, but after a bit of that I realized that it really wasn't a good solution.  Part of what makes tools interesting is how they can interact with the game world, and every object that isn't part of the basic world model, even if it's grid-aligned, complicates the code.However, it gives rise to the problem with possibility two, which is, define special tiles for in-world tool objects.  It looks weird when water flows around a piton as if it was a full-block object.  And a lot of tools are like this.  It's the existence of liquids and gases, which are just cheat analogues for sub-grid-level phenomena, that makes this an issue.The nature of the game is such that, if push came to shove, I could probably get away with doing it that way anyway, but instead I'm opting for possibility three, which is to give each cell a tool field that can contain its own object.  This way liquid can flow past a piton without overwriting it or flowing around it, and objects in lakes can rest there without making an air bubble around them.Now the better programmers out there are probably wondering why I'm spilling words on such a decision.  It's because, really, this is the most complicated project I've ever worked on.  Mayflight's world builder was more complex, but its world simulation was just a platforming engine.  I'm somewhat out of my depth here.  At least writing this in Python means I don't have to muck around with (overt) pointers and worry about the myriad bugs those can introduce.I visit anna anthropy's blog pretty frequently, and I've been known to chuckle to myself when I read about her aversion to coding.  I really can't imagine doing a whole game using, say, Game Maker's abhorrent drag-and-drop scripting functionality -- I always tie each event to a text script.  But really, I'm just one step further along the path than she is, and there's a dozen ahead of me.What is funny is that I was a quick study back in programming classes, but there's something about &lt;i&gt;pointers&lt;/i&gt; that screws me over.  It's not that I don't understand them -- far from it, I have a strong processor-level understanding of the things.  I did a fair bit of assembly programming back on the C64.  But something about the way C-style languages approach them trips me up hard.  I'm constantly confusing where I need to use * and where I need to use &amp;.I know that * is a pointer to some value, and &amp; is the value that a pointer points to, but I don't seem to have it internalized to the point where I can write code with those symbols confidently.I wouldn't be surprised if I had some form of dyslexia tripping me up there.  The language is such that you must know what is a value and what is a pointer to a value, but I nearly always get them mixed up.  This, coupled with the fact that I was continually stymied by import errors, was probably what sabotaged my attempts at restarting In Profundis in C++.  Game Maker is really not that different from C in syntax, but its garbage-collected, reference-counted scripting was the breakthrough feature that got me productive with it.I'm just blabbing here really; I felt guilty that it had been a little while since I made a post here.  Anyway, working in inventory and tool simulation now.  I hope to start putting in the backer treasure data before long, so that'll be fun at least.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-5237192134112862505?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/5237192134112862505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/11/in-profundis-progress-tools-inventory.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/5237192134112862505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/5237192134112862505'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/11/in-profundis-progress-tools-inventory.html' title='In Profundis Progress: Tools, Inventory and personal coding deficiencies'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-6674353323908645002</id><published>2011-11-07T23:02:00.001-08:00</published><updated>2011-11-07T23:02:10.342-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='idea'/><category scheme='http://www.blogger.com/atom/ns#' term='flag'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='exploration'/><category scheme='http://www.blogger.com/atom/ns#' term='continuity'/><title type='text'>In Profunds ideas: Flags</title><content type='html'>&lt;p&gt;So here's something big that I'm playing around with....&lt;/p&gt;&lt;p&gt;In Profundis gives you a limited inventory for carrying around equipment.  You tend to use up resources while you're exploring the game world, placing pitons, hanging ropes, and so on.  Eventually you have to travel back to base and resupply.&lt;/p&gt;&lt;p&gt;A concern that I have for the game is that this travel back and forth, between base and the frontier of exploration, could get annoying, or worse, boring.  But the resource and time costs of getting around the game world are the primary obstacle to exploration.  How do I reconcile the two?&lt;/p&gt;&lt;p&gt;My idea is a special inventory item: &lt;i&gt;flags&lt;/i&gt;.&lt;/p&gt;&lt;p&gt;After you explore for a while and figure it's time to return to base to resupply/get some rest/buy new stuff, what you can do is plant a flag at a place you'd like to return to later.&lt;/p&gt;&lt;p&gt;After this is done, the challenge is this: &lt;i&gt;return to base without using any other items in your inventory&lt;/i&gt;, in order to "establish" the flag.  It's like a mini-game in a way.  It is okay to use items you've &lt;i&gt;already&lt;/i&gt; placed, so you can sort of pave the way for your return trip.  If you're forced to use an inventory item the only thing lost is the establishment run.  In that case the flag remains where it is, and you can try it again just by returning to it.&lt;/p&gt;&lt;p&gt;The reason this has to be done is because the game is recording how long it takes the player to do it, in order to figure out a realistic travel time, and using resources along the way that might not be available later would spoil the experiment.  (It's possible that this might just be "shallow travel" equipment, like jetpacks, rather than things that change the game world to make it easier to traverse, like pitons and spanners.)&lt;/p&gt;&lt;p&gt;After you've established the route, you can later "instantly" warp between base and the flag.  Instantly is in quotes because this is only immediate to the player -- the game clock is set ahead by the amount of time it took to make the trip.  Since the expedition is charged rocketship rental by the amount of time spent on the planet, this is a substantive cost, but it's your character who has to pay it, not you.  The character is still making the trip, in effect, on autopilot.  (In fact, I'd like there to be a "montage" of still shots of the trip, that takes a few seconds to play out, whenever warping.)&lt;/p&gt;&lt;p&gt;Continuity of the game world is very important I think.  The problem with teleporters is that they basically make a mockery of the spatial extent of the world.  I consider this bad because, as the player makes longer and longer expeditions, the increasing time required to get from base to the exploration frontier is, itself, an increase in difficulty.  Exploring the other side of the map takes more time, which incurs more spaceship rental costs, which means the player can't afford to waste as much time.&lt;/p&gt;&lt;p&gt;Some of you are no doubt reading this and thinking something along the lines of: WTF?  I think I can understand that.  But I look at it this way: I've played hundreds, if not thousands, of video and computer games, and I've never known a game to do something like this.  Maybe there's a reason for that.  But it's a very interesting game mechanic to think about, and I think that will transfer to play.  What do you think?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-6674353323908645002?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/6674353323908645002/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/11/in-profunds-ideas-flags.html#comment-form' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/6674353323908645002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/6674353323908645002'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/11/in-profunds-ideas-flags.html' title='In Profunds ideas: Flags'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-3449332920239835033</id><published>2011-10-30T17:16:00.000-07:00</published><updated>2011-10-30T17:16:06.973-07:00</updated><title type='text'>In Profundis Problem: Continually flowing water</title><content type='html'>One of the reasons there was a bit of a delay in work on the game was because I was mulling over for a while solutions to certain problems with the game as envisioned.&amp;nbsp; Here I explain one particularly annoying problem that I'd really like to see fixed, but currently don't have a very good solution for.&amp;nbsp; Maybe one of you might have an idea.&amp;nbsp; At the very least, maybe some of you might find thinking about this interesting.&lt;br /&gt;&lt;br /&gt;In Profundis uses a cellular automation system for flowing water, yet because of the closed nature of the game world, most flow is ultimately user-initiated.&amp;nbsp; Liquid tends to pool and collect and remain as low as it can get, and remain there collected.&amp;nbsp; It doesn't actually end up flowing much except at the start of the simulation.&amp;nbsp; Once it gets to the lowest point it can reach, there it remains until something disturbs it.&lt;br /&gt;&lt;br /&gt;This is not particularly interesting from a gameplay perspective.&amp;nbsp; What would be more interesting is if water could enter and leave the map, or at least flow through two locations in the world, repeatedly and endlessly.&amp;nbsp; Then the player might have to find some other way around it, or maybe divert the liquid to give himself a safe path.&lt;br /&gt;&lt;br /&gt;The problem is that, because of the size of the game world, we can't compute the whole thing every frame and keep within an acceptable speed.&amp;nbsp; Some distance outside of the visible screen we have to abandon calculations.&amp;nbsp; This causes liquid to "pile up" when it flows outside the border.&amp;nbsp; If we recycle liquid between two "portals," unless both of them are within the calculation region at the same time, the flow will stop.&amp;nbsp; And as the player scrolls around the map the calculation region changes, meaning while approaching the area there will almost always be a time when one portal is in the region and one is outside.&amp;nbsp; If they are far enough apart, there could result in instances where the player is suddenly beset by a rush of liquid that has "backed up" because of the simulation border, then suddenly uncorked by the scroll.&amp;nbsp; (This could actually be interesting from a gameplay standpoint, but it goes against the philosophy of the game.)&lt;br /&gt;&lt;br /&gt;I'm not sure there is a viable solution to this problem, but here are some possibilities:&lt;br /&gt;* One thing I could do is consider the region between the two portals an "all-or-nothing" region for calculation; if one cell of the rectangular region between the pair is calculated, then do the whole thing.&lt;br /&gt;* The larger the simulated region, the less evident the problem becomes.&amp;nbsp; If we work on enlarging that area (maybe by slowing down the rate at which fluids flow, which I've been considering for a while), the problem will become less visible.&lt;br /&gt;* It's possible that the problem won't be perceivable to the player most of the time.&amp;nbsp; Because his range of vision is limited, even on-screen backups won't be too apparent so long as they're outside his field of view.&lt;br /&gt;* The real-world solution to this would be a evaporation/condensation cycle, but that would probably require a scale larger than what we're looking for here.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-3449332920239835033?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/3449332920239835033/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/10/in-profundis-problem-continually.html#comment-form' title='16 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/3449332920239835033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/3449332920239835033'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/10/in-profundis-problem-continually.html' title='In Profundis Problem: Continually flowing water'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>16</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-7361812512184537383</id><published>2011-10-30T08:01:00.000-07:00</published><updated>2011-10-30T08:01:37.093-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>In Profundis Progress (10/30): Tools and Flags</title><content type='html'>Still working on the in-world representation of tools.&amp;nbsp; I've decided that they need to be simulated on their own "layer," that is to say, a given space can contain both a tool or other object and more substantial world simulation elements like water and gas. &lt;br /&gt;&lt;br /&gt;What do I mean by a tool?&amp;nbsp; Tools are objects the player can interact with, place in inventory, but also change the world to his liking.&amp;nbsp; Changing the game environment is a major theme of the game; the pitons and ropes you place to get around don't go away over time unless something removes them.&amp;nbsp; Since you can only carry so much at a time, exploring is an iterative process of placing equipment, over multiple expeditions, letting you get further each time.&lt;br /&gt;&lt;br /&gt;One thing I'm worried about is that the process of traveling back and forth in the game world, between base for resupplying and the edge of exploration, could end up being boring.&amp;nbsp; One solution to this problem I'm considering is the use of player-positioned checkpoints.&amp;nbsp; The idea is, the player could obtain "flags" that he could place in the field.&amp;nbsp; After planting a flag, the idea is to then "validate" the flag, by traveling back to the base without placing any more equipment.&amp;nbsp; If this is done, the flag is validated, and the player can then warp from the flag to the base at the cost of the amount of game time it took to make the trip.&amp;nbsp; Likewise, the return trip can also be validated for reverse travel.&lt;br /&gt;&lt;br /&gt;This system isn't perfect; after a flag has been validated going one way or the other, it is possible for the terrain between the two to change and make the route impassible.&amp;nbsp; This could be partially solved by keeping a list of the cells traversed in the route, and upon teleporting checking each of them to see if they've been modified since the route was validated.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-7361812512184537383?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/7361812512184537383/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/10/in-profundis-progress-1030-tools-and.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/7361812512184537383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/7361812512184537383'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/10/in-profundis-progress-1030-tools-and.html' title='In Profundis Progress (10/30): Tools and Flags'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-8572017952337405589</id><published>2011-10-28T14:06:00.000-07:00</published><updated>2011-10-30T08:28:09.271-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='static'/><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='cellturn'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='imbackbaby'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>In Profundis Progress (10/28)</title><content type='html'>I haven't been doing nothing on the project exactly, but I'll admit there's not a lot of actual programming work to show for it lately.&amp;nbsp; I've been thinking.&amp;nbsp; Thinking about things like this.&amp;nbsp; If this seems a little incoherent it's because I'm writing this as I work it out in my head.&lt;br /&gt;&lt;br /&gt;One of the ideas of the game is that the player has to manipulate the game world to get around in it.&amp;nbsp; What you do changes the world, and changing the world is dangerous.&amp;nbsp; Like, putting a piton in a wall could crack the wall, causing liquid to drip through, possibly weakening the wall further, eventually destroying the rock face the piton is in.&lt;br /&gt;&lt;br /&gt;It's not good enough to use a new cell type for each type of tool, because otherwise things like pitons and ropes will block fluids, which is no good.&amp;nbsp; Instead, each cell needs its own Tool field.&amp;nbsp; That adds a little overhead to the cell structure and cellturn(), but isn't too bad.&lt;br /&gt;&lt;br /&gt;A rope can be tied to a piton.&amp;nbsp; The question is however, how to represent this rope? Do we arbitrarily plop it down when the piton is placed?&amp;nbsp; What if the piton is removed then, how will we know to remove the rope?&amp;nbsp; If multiple pitons are placed vertically so their ropes overlap, how will we know to remove the right ones? &lt;br /&gt;&lt;br /&gt;Another thing is, I've learned a bit more about how Python handles recently, particularly I've cleared up in my head how it handles static class variables, which stands to simplify the code a bit and make it more maintainable, but requires going back and redoing some of my old work.&lt;br /&gt;&lt;br /&gt;So work is continuing, and in fact should speed up now.&amp;nbsp; I find my energy for project work tends to come and go, based both on internal and external factors.&amp;nbsp; Updates should be frequent again, at least for a while to come.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-8572017952337405589?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/8572017952337405589/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/10/in-profundis-progress-1028.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/8572017952337405589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/8572017952337405589'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/10/in-profundis-progress-1028.html' title='In Profundis Progress (10/28)'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-325887157844730239</id><published>2011-10-19T16:51:00.000-07:00</published><updated>2011-10-19T16:51:33.485-07:00</updated><title type='text'>Not forgotten....</title><content type='html'>Other projects and such have been vying for my time lately, and I've kind of let them for a little while because I'm wondering if what I have so far is "fun."&amp;nbsp; It has the capacity to &lt;i&gt;be&lt;/i&gt; fun, I recognize, the question is if the world builder can take advantage of the potential to create interesting situations.&amp;nbsp; That is a hard problem; I've got some ideas in that direction, but there's&lt;br /&gt;&lt;br /&gt;There's also the matter of some weird bugs that have cropped up in the fluid code with the random fluids.&amp;nbsp; Notably, when walkable fluids float atop swimmable ones, it's kind of wonky.&amp;nbsp; The platforming routines need a lot more work.&lt;br /&gt;&lt;br /&gt;There's a thousand things left to do, but I'm working on them!&amp;nbsp; I am sorry it isn't going as quickly as I hoped.&amp;nbsp; I'm afraid I might not be as good a programmer as I had hoped -- the project is reaching the edges of my capacity to keep it all in my head at once, and that slows things down.&amp;nbsp; Please bear with me in this difficult phase of the project.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-325887157844730239?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/325887157844730239/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/10/not-forgotten.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/325887157844730239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/325887157844730239'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/10/not-forgotten.html' title='Not forgotten....'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-7738601690102194285</id><published>2011-09-29T01:03:00.000-07:00</published><updated>2011-09-29T01:03:50.582-07:00</updated><title type='text'>In Profundis Progress 9/29</title><content type='html'>Ah, been slow going for a couple of weeks I'm sorry to say. &amp;nbsp;I keep getting caught up by stupid bugs. &amp;nbsp;This time, it was an out-of-bounds error that turned out to be caused by some debug code I had put in and forgotten about.&lt;br /&gt;&lt;br /&gt;In positive news, a change to the way the game decides which cells to calculate has increased the range it looks at while simultaneously bringing a framerate improvement. &amp;nbsp;The change was actually suggested by someone in the comments to Gamasutra article I wrote about cellular automation; specifically, not to calculate every cell around the focus, but just those in a checkerboard pattern around it. &amp;nbsp;Reverse polarity of the checkerboard every turn. &amp;nbsp;Calculating fewer cells means I can calculate a further range, but the result isn't a noticeable decrease in fluid flow speed because I was already ignoring cells after they flowed one space until the next frame anyway, so as to prevent moving objects from teleporting. &amp;nbsp;I think even now fluids might be flowing a bit too quickly, so I might ease up on spending so many cycles on calculating. &amp;nbsp;Having a better frame rate means I can put in more gameplay features and/or graphic effects, so it's a very good thing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-7738601690102194285?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/7738601690102194285/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/09/in-profundis-progress-929.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/7738601690102194285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/7738601690102194285'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/09/in-profundis-progress-929.html' title='In Profundis Progress 9/29'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-3152317826970688117</id><published>2011-09-17T13:19:00.000-07:00</published><updated>2011-09-17T13:20:08.861-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><category scheme='http://www.blogger.com/atom/ns#' term='argh'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='frustration'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><category scheme='http://www.blogger.com/atom/ns#' term='cellularautomation'/><title type='text'>In Profundis Progress 9/17</title><content type='html'>ARGH&lt;br /&gt;&lt;br /&gt;There is a bug in the game, an infuriating one that has got me, at the moment, stumped. &amp;nbsp;It has to do with the system the game is using to keep track of cells that potentially need updating. &amp;nbsp;In one specific circumstance, that being when fluids hit the edge of a platform and flow down off the side, some of it is often refusing to remain mark active long enough for all the fluid to flow off the ledge; it just pools up there, unsupported. &amp;nbsp;If something happens next to it it causes it to "wake up" long enough for some more of it to flow away, but only for one frame.&lt;br /&gt;&lt;br /&gt;I'll figure it out eventually. &amp;nbsp;Just wanted to expose you all to my current personal hell.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-3152317826970688117?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/3152317826970688117/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/09/in-profundis-progress-917.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/3152317826970688117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/3152317826970688117'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/09/in-profundis-progress-917.html' title='In Profundis Progress 9/17'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-3456020825176837897</id><published>2011-09-15T19:46:00.000-07:00</published><updated>2011-09-15T19:46:08.125-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='solids'/><category scheme='http://www.blogger.com/atom/ns#' term='fluids'/><category scheme='http://www.blogger.com/atom/ns#' term='generation'/><category scheme='http://www.blogger.com/atom/ns#' term='graphics'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>In Profundis Progress 9/15</title><content type='html'>The last time I posted a picture of a game map the region styling code wasn't working properly.  Have a look at a random game map now:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-QxkievPHMPc/TnKwDU49AfI/AAAAAAAAA8A/SfSm8dp-d_4/s1600/ipmap2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://3.bp.blogspot.com/-QxkievPHMPc/TnKwDU49AfI/AAAAAAAAA8A/SfSm8dp-d_4/s400/ipmap2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Looking at this, I feel excitement for the project building again.&amp;nbsp; For randomly generated platforming terrain, I think this is very good.&amp;nbsp; Keep in mind that fluids aren't even generated in the random maps at the moment, and there will be gasses in the final version too.&lt;br /&gt;&lt;br /&gt;Here are some in-game images:&lt;br /&gt;&lt;br /&gt;1. This is just outside the "base" area.&amp;nbsp; When done, the player's rocketship will be in this area, which serves as base camp.&amp;nbsp; Notice the character design has changed a bit: her head is more realistically proportioned, and there's now a spaceman's bubble around her head.&amp;nbsp; Also notice the faint colored backgrounds; these are colored from leftover data from terrain generation, so they tend to suggest the platforms are extending from background features.&amp;nbsp; (Well, that's how I describe it.&amp;nbsp; Maybe there's a better way to explain it, but I haven't thought of it yet.)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-KCr_E3Ih-Vk/TnK3WzB2JQI/AAAAAAAAA8Y/LEoMOjhrFEU/s1600/ips1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="315" src="http://2.bp.blogspot.com/-KCr_E3Ih-Vk/TnK3WzB2JQI/AAAAAAAAA8Y/LEoMOjhrFEU/s400/ips1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;2. The colors of the walls will be important; they represent different types of stone.&amp;nbsp; Unfortunately they're fairly blocky at the moment.&amp;nbsp; I've thought a lot about how to remedy that without spending extra rendering time for edge effects, haven't come up with a good solution yet though.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-c7MxcfxJS4o/TnK3XOGyk6I/AAAAAAAAA8g/xqtF-8QipBs/s1600/ips2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="318" src="http://3.bp.blogspot.com/-c7MxcfxJS4o/TnK3XOGyk6I/AAAAAAAAA8g/xqtF-8QipBs/s400/ips2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;3. A tunnel.&amp;nbsp; Currently the background being drawn for out-of-sight areas so long as the player has seen them before; this is a bug.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-ghhbrk1K6Jc/TnK3XOI5VWI/AAAAAAAAA8o/bot-6Qt7XVE/s1600/ips3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="238" src="http://2.bp.blogspot.com/-ghhbrk1K6Jc/TnK3XOI5VWI/AAAAAAAAA8o/bot-6Qt7XVE/s400/ips3.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;4. I put some liquid into this image.&amp;nbsp; Note that the blue substance here looks and flows like water but it isn't; it can be stood upon!&amp;nbsp; This is a property of this liquid, generated randomly.&amp;nbsp; I'm not sure what the gameplay consequences of this will be however; what if the player falls into an underground sea, but floating atop that is a layer of "solid" liquid?&amp;nbsp; Should "solid" liquids always be heavier than swimable types?&amp;nbsp; I'm currently thinking that, in most cases, it should.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-uZLUOD9O6I4/TnK3Xmtti0I/AAAAAAAAA8w/6ptSnYHHJ34/s1600/ips4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="327" src="http://4.bp.blogspot.com/-uZLUOD9O6I4/TnK3Xmtti0I/AAAAAAAAA8w/6ptSnYHHJ34/s400/ips4.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-3456020825176837897?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/3456020825176837897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/09/in-profundis-progress-915.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/3456020825176837897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/3456020825176837897'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/09/in-profundis-progress-915.html' title='In Profundis Progress 9/15'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-QxkievPHMPc/TnKwDU49AfI/AAAAAAAAA8A/SfSm8dp-d_4/s72-c/ipmap2.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-2392684959485661096</id><published>2011-09-13T09:25:00.000-07:00</published><updated>2011-09-13T09:26:01.128-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='graphics'/><category scheme='http://www.blogger.com/atom/ns#' term='background'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>In Profundis Progress 9/13</title><content type='html'>More news!&amp;nbsp; I've put in some background graphics now.&amp;nbsp; They're faint, indistinct and essentially huge pixels, but I think it kind of fits in with the art style.&lt;br /&gt;&lt;br /&gt;It takes me a fairly extensive amount of work to create a demo video, since I have to record it, encode it, upload it to YouTube, get links to it, etc., but I hope to have something new for you guys to see soon.&amp;nbsp; Current work is focused on fleshing out the region terrain templates and getting fluids generating again.&amp;nbsp; Slowly, bit by bit, it's coming together.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-2392684959485661096?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/2392684959485661096/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/09/in-profundis-progress-913.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/2392684959485661096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/2392684959485661096'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/09/in-profundis-progress-913.html' title='In Profundis Progress 9/13'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-5137891971381317758</id><published>2011-09-10T22:10:00.001-07:00</published><updated>2011-09-10T22:10:56.510-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><category scheme='http://www.blogger.com/atom/ns#' term='items'/><category scheme='http://www.blogger.com/atom/ns#' term='inventory'/><title type='text'>In Profundis Progress: 9/11</title><content type='html'>&lt;p&gt;Not a lot of progress the past week unfortunately, DragonCon got in the way of things and morale is kind of low right now.  Have managed to pull myself out of my funk enough to start work on inventories and object simulation though, and done some of the art for those objects.  Just generic stuff so far though, haven't gotten any of the backer-sponsored items started yet, but those are in sight.  It'll be nice to get some of those things off the list.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-5137891971381317758?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/5137891971381317758/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/09/in-profundis-progress-911.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/5137891971381317758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/5137891971381317758'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/09/in-profundis-progress-911.html' title='In Profundis Progress: 9/11'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-8439899412774939083</id><published>2011-08-29T12:12:00.000-07:00</published><updated>2011-08-29T12:12:49.998-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='map'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><title type='text'>In Profundis Progress 8/29: The map!</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;We have maps now!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-YwN7xbxcVPQ/TlviM9qaPDI/AAAAAAAAA7I/OM-ItP37iCk/s1600/inprofundismap1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/-YwN7xbxcVPQ/TlviM9qaPDI/AAAAAAAAA7I/OM-ItP37iCk/s320/inprofundismap1.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;This is a large image; the above is just a thumbnail.&amp;nbsp; It's not the complete map; it's one part of it, roughly two-thirds the whole thing I think.&amp;nbsp; This should give you some idea of the scale of the game.&amp;nbsp; It's so large that I'm actually starting to think that maybe multiple worlds in a single game is overkill; there is a lot of room in this map to hide things, and it wouldn't feel arbitrarily limited to not go on to a new planet after searching an area this large.&amp;nbsp; In fact, it might grow tedious if, in a single game, players had to explore many maps this big.&amp;nbsp; By this way of thinking, each game would be a single world, with a single map.&lt;br /&gt;&lt;br /&gt;This isn't giving away any secrets because, of course, the world is randomly generated each play.&amp;nbsp; Note there are no liquids in the above map because they currently aren't being generated in world generation; putting those in is on the list of the next things to do.&amp;nbsp; Still lots of work to do of course, but figured I'd give you guys an idea of how things were progressing.&lt;br /&gt;&lt;br /&gt;This also shows the different types of stone in the game, which serve the important functions of giving players another thing to learn about and giving different regions of the map their own visual identity.&amp;nbsp; Not pictured here is the updated character art, which I'm much happier with; it's kind of a mix between the previous art and the silhouette I used for Mayflight.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-8439899412774939083?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/8439899412774939083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/08/in-profundis-progress-829-map.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/8439899412774939083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/8439899412774939083'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/08/in-profundis-progress-829-map.html' title='In Profundis Progress 8/29: The map!'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-YwN7xbxcVPQ/TlviM9qaPDI/AAAAAAAAA7I/OM-ItP37iCk/s72-c/inprofundismap1.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-8371171236404413467</id><published>2011-08-21T19:16:00.000-07:00</published><updated>2011-08-21T19:16:56.752-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='substances'/><category scheme='http://www.blogger.com/atom/ns#' term='worldgen'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><category scheme='http://www.blogger.com/atom/ns#' term='worldbuilding'/><title type='text'>In Profundis Progress 8/21</title><content type='html'>I think I'm finally coming out of the woods regarding world generation.&lt;br /&gt;&lt;br /&gt;DragonCon is in a week and a half.&amp;nbsp; What I would &lt;i&gt;like&lt;/i&gt; is to make another prototype available to play around with before then.&amp;nbsp; It'll be difficult, but just barely possible I think.&amp;nbsp; We'll see anyway.&amp;nbsp; More before long I hope....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-8371171236404413467?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/8371171236404413467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/08/in-profundis-progress-821.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/8371171236404413467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/8371171236404413467'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/08/in-profundis-progress-821.html' title='In Profundis Progress 8/21'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-5330792390999774050</id><published>2011-08-17T17:32:00.000-07:00</published><updated>2011-08-17T17:32:58.139-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='generation'/><category scheme='http://www.blogger.com/atom/ns#' term='substances'/><category scheme='http://www.blogger.com/atom/ns#' term='planning'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><category scheme='http://www.blogger.com/atom/ns#' term='worldbuilding'/><title type='text'>In Profundis Progress 8/17</title><content type='html'>Been a few days since the last post.&amp;nbsp; This stuff isn't really very interesting, but just to fill you in....&lt;br /&gt;&lt;br /&gt;Still working on world generation.&amp;nbsp; The key now is setting up the materials, and the "personality" of each region, and getting the materials to generate properly in each region, and giving the materials their own properties that can affect the player and each other.&amp;nbsp; This is taking a long time; I seem to have a mental block concerning the algorithms necessary for the kind of random generation of properties needed here.&amp;nbsp; I'm making lists of substances, and lists of properties, and tying the properties to the substances, and lists of regions, and lists of substances in those regions, and deciding which substances should go in which region by depth and difficulty... and it's not something I can easily hold all in my head at once.&amp;nbsp; In other words, I'm having organizational problems.&amp;nbsp; I think it's time to sit down and just plot this part out, then implement that from off the paper.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-5330792390999774050?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/5330792390999774050/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/08/in-profundis-progress-817.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/5330792390999774050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/5330792390999774050'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/08/in-profundis-progress-817.html' title='In Profundis Progress 8/17'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-2770368862879495063</id><published>2011-08-11T19:09:00.000-07:00</published><updated>2011-08-11T19:09:17.398-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bugs'/><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='worldgen'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><category scheme='http://www.blogger.com/atom/ns#' term='regions'/><title type='text'>In Profundis Progress 8/11</title><content type='html'>Gah.&amp;nbsp; World generation work continues, although haltingly.&amp;nbsp; I had a couple more annoying bugs.&amp;nbsp; I seem to remember programming being easier than this.&amp;nbsp; I continue to forge ahead.&lt;br /&gt;&lt;br /&gt;The feature I just added, and took me so long, is world regions.&amp;nbsp; That is to say, each world won't be a homogenous area of similar terrain, but will be "themed."&amp;nbsp; This allows the game to tweak area creation by contiguous areas of the map in an intelligent way.&lt;br /&gt;&lt;br /&gt;Man, when I see Tarn Adams chugging away, adding new features &lt;i&gt;daily&lt;/i&gt;, I get intensely jealous.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-2770368862879495063?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/2770368862879495063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/08/in-profundis-progress-811.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/2770368862879495063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/2770368862879495063'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/08/in-profundis-progress-811.html' title='In Profundis Progress 8/11'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-1875748453150120464</id><published>2011-08-07T10:59:00.000-07:00</published><updated>2011-08-07T10:59:52.063-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='mazes'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><category scheme='http://www.blogger.com/atom/ns#' term='worldbuilding'/><title type='text'>In Profundis Progress 8/7</title><content type='html'>It's still rolling along.&amp;nbsp; Here I'm going to detail some of the finer steps in the world creation algorithm I'm working on.&lt;br /&gt;&lt;br /&gt;The steps (partly restated from last time):&lt;br /&gt;&lt;br /&gt;1. Define random material properties.&lt;br /&gt;2. Make an array of sectors (each representing a 12x12 area of world tiles).&lt;br /&gt;3. Build a maze in that array, with each element holding which adjacent elements it's connected with in bitfields.&lt;br /&gt;4. Perform processing on that maze (this is what this post is actually about -- see below).&lt;br /&gt;5. Take maze, indexed into heightmap influence templates, and apply that to an array matching the size of the world.&amp;nbsp; (This is what I talked about last time.)&lt;br /&gt;6. Turn heightmap into wall cells in game world array.&amp;nbsp; Along the way, apply any special codes in the templates that produce special features - &amp;lt;i&amp;gt;ignoring liquids&amp;lt;/i&amp;gt;.&amp;nbsp; (This part is new.&amp;nbsp; I'll have more to say about it later.)&lt;br /&gt;7. Perform "flow experiments" to find good liquid flow paths through the world and create "wormholes" (actually, grates) that moves liquids from lower to higher points.&amp;nbsp; I'm handling this process by putting in some simulated liquid into the world and running some turns to see what it does, then cleaning up the liquid afterwards.&lt;br /&gt;8. Apply the liquids skipped back in step 5.&lt;br /&gt;9. Later processing, tile smoothing, sediment laying, etc.&lt;br /&gt;&lt;br /&gt;Mazes are intrinsically interesting structures to explore, but have some problems, especially related to their use in random world generation.&amp;nbsp; A proper maze has only one way to get to any location in the maze, meaning if there is a difficulty in getting through a section, it makes it correspondingly more difficult to get to any location beyond that section.&amp;nbsp; By putting in more ways to get to a place, the gameplay experience is made more robust.&amp;nbsp; At the same time it actually simplifies navigation, due to the existence of tricks like the "left/right hand rule," a.k.a. the wall follower trick.&amp;nbsp; (More on maze solving algorithms at &amp;lt;a href="http://en.wikipedia.org/wiki/Maze_solving_algorithm"&amp;gt;the Wikipedia page&amp;lt;/a&amp;gt;.)&lt;br /&gt;&lt;br /&gt;My idea is to put loops in the maze that allow the player to find ways around trouble spots.&amp;nbsp; (It's possible that the other ways have troublespots as well, but we're not trying to hand them the victory here.&amp;nbsp; They will have to sweat sometimes.)&amp;nbsp; I used a system like this in Mayflight, but I didn't care much about where the loops went.&amp;nbsp; This often meant the loops were trivial, like connecting two already-connected rooms.&lt;br /&gt;&lt;br /&gt;I had already come up with a way to solve this problem many years ago however in an old Commodore program.&amp;nbsp; The solution is to make an intermediate pass and record each spots' minimum distance, traveling through the maze, from a random starting point.&amp;nbsp; Then look through the maze and find the adjacent spots with the greatest difference in distances from that point, and connect them.&amp;nbsp; To make additional loops it's then best to refigure distances, taking the new path into account, from a new random point.&amp;nbsp; The result (if memory serves) is a more satisfying maze to explore, with longer paths and more work to do to find alternate access routes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-1875748453150120464?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/1875748453150120464/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/08/in-profundis-progress-87.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/1875748453150120464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/1875748453150120464'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/08/in-profundis-progress-87.html' title='In Profundis Progress 8/7'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-581004784744022163</id><published>2011-08-03T13:12:00.000-07:00</published><updated>2011-08-03T13:12:58.031-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='matrices'/><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='generation'/><category scheme='http://www.blogger.com/atom/ns#' term='heightmap'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><category scheme='http://www.blogger.com/atom/ns#' term='worldbuilding'/><title type='text'>In Profundis Progress 8/3</title><content type='html'>Still working on the world builder. &amp;nbsp;Here, I'll lay out the scheme I'm planning for the maps produced by the game, and what I'm aiming for concerning the overall metagame. &amp;nbsp;I am open to comments and suggestions here; I have a strong view of what the game should be about, but the specifics I'm still thinking about.&lt;br /&gt;&lt;br /&gt;1. To start with, the game divides the world into &amp;lt;i&amp;gt;sectors&amp;lt;/i&amp;gt;, which are 12x12 tile units.&lt;br /&gt;2. Then the world runs a maze generation algorithm on those units to create a "true" maze, that is, one with no dead-ends. &lt;br /&gt;3. It's not implemented yet, but eventually some more high-level processing will be done on this maze, to create loops providing alternate access to some areas, and also divide it into &amp;lt;i&amp;gt;regions&amp;lt;/i&amp;gt;, each of which will have different generation properties, such as large block obstructions, seas with a specific type of fluid, narrow tunnels, etc. &amp;nbsp;Right now, I'm defining the &amp;lt;i&amp;gt;templates&amp;lt;/i&amp;gt; for each type of region.&lt;br /&gt;4. Once regions have been set, we change the sectors contained within each region to that region's template. Most of the templates are laid out in lists according to a 16-unit scheme, indexed by the bits connecting from that sector or'd together. &amp;nbsp;(Up=1, right=2, down=4, left=8. &amp;nbsp;Embarrassingly, confusion between two different bit schemes I was using in two different places caused a mysterious world creation bug it cost me a day in tracking down.) &amp;nbsp;Since each region type has the same kinds of templates laid out in the same order, it's a simple matter to drop them in as replacements.&lt;br /&gt;5. Additionally, any sectors left out of a region can be randomly "tweaked," just changed to one of the possible templates matching its connections.&lt;br /&gt;6. Once all of the templates are set and decided on, it's time to &amp;lt;i&amp;gt;render&amp;lt;/i&amp;gt; them out to the game map. &amp;nbsp;Each space in each template has an integer value and (optionally) a code. &amp;nbsp;A random number in the range [-8,8] is generated for each space in each template, matching its location on the gamemap that added to that template. &amp;nbsp;The integer amount is added to each of the cells surrounding its corresponding location on a matrix &amp;lt;i&amp;gt;heightmap&amp;lt;/i&amp;gt;, of the same size as the gamemap. &amp;nbsp;The result is, places that templates say should have walls spread out "wall influence" from their locations, and places that should have empty space spread out "space influence." &amp;nbsp;Wall influence is represented by positive numbers, and space influence by negative numbers.&lt;br /&gt;I realize this is hard to picture. &amp;nbsp;I wrote a column on this algorithm for GameSetWatch some time back (scroll down to "room building"). &amp;nbsp;As that column notes, the result looks like what happens if you apply a blur filter to a field of noise in a paint program. &amp;nbsp;Each random pixel is "spread out" across adjoining pixels. &amp;nbsp;The spreading-out actually introduces some order into the random field.&lt;br /&gt;7. Finally, we go through each cell of the heightmap. &amp;nbsp;Cells that are 0 or less produce spaces in the corresponding cells of the game map, and cells that are positive produce walls. &amp;nbsp;That is, unless the template had a special code for that space; those codes can override the heightmap and produce "hard" spaces or walls, or other special tile types, or instead they can work with the heightmap and produce fluids or gases if the space is ordinarily empty.&lt;br /&gt;&lt;br /&gt;One advantage offered by the gameplay (eventually) is that, since the player has equipment that can dig through stone, it isn't strictly necessary to ensure every sector of the maze turns out to be accessible through space, although neither is it particularly friendly if large sections of the maze are commonly locked off requiring a pick to access.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-581004784744022163?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/581004784744022163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/08/in-profundis-progress-83.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/581004784744022163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/581004784744022163'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/08/in-profundis-progress-83.html' title='In Profundis Progress 8/3'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-8714882923502172839</id><published>2011-07-31T01:35:00.001-07:00</published><updated>2011-07-31T01:35:17.904-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='generation'/><category scheme='http://www.blogger.com/atom/ns#' term='maze'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>In Profundis Progress 7/31</title><content type='html'>&lt;p&gt;Work on the game has been rather hard as of late, but I have basic level building working now.  What this means is, the game will now construct a roughly naturalistic-looking maze to explore.  Getting around in the maze is for when equipment is implemented, which is moving closer.&lt;/p&gt;&lt;p&gt;Although the game has maze-like caverns now, they aren't very interesting yet.  Next is to flesh out the world builder a bit.  This is a multi-stage process involving dividing the maze up into regions, styling each region according to a generation theme, tweaking passages, making the ends of the maze into places worthy of discovery, and making loops in the maze so as to give players multiple ways of access in case one proves too difficult.&lt;/p&gt;&lt;p&gt;More soon.  I intend to post a new video once caverns become more interesting looking.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-8714882923502172839?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/8714882923502172839/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/07/in-profundis-progress-731.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/8714882923502172839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/8714882923502172839'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/07/in-profundis-progress-731.html' title='In Profundis Progress 7/31'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-6072154141771008456</id><published>2011-07-29T16:18:00.001-07:00</published><updated>2011-07-29T16:18:24.910-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='array'/><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='generation'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><category scheme='http://www.blogger.com/atom/ns#' term='numpy'/><title type='text'>In Profundis Progress 7/29</title><content type='html'>&lt;p&gt;Still working on generation.  Spent today tracking down a mystery bug that turned out to be caused by my misunderstanding of numpy's workings.  Hopefully more to show you guys soon.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-6072154141771008456?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/6072154141771008456/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/07/in-profundis-progress-729.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/6072154141771008456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/6072154141771008456'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/07/in-profundis-progress-729.html' title='In Profundis Progress 7/29'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-4555345758386072641</id><published>2011-07-24T16:03:00.001-07:00</published><updated>2011-07-24T16:03:23.854-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='random'/><category scheme='http://www.blogger.com/atom/ns#' term='generation'/><category scheme='http://www.blogger.com/atom/ns#' term='substances'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><category scheme='http://www.blogger.com/atom/ns#' term='physics'/><title type='text'>In Profundis Progress 7/24</title><content type='html'>&lt;p&gt;Been a few days since the last report.&lt;/p&gt;&lt;p&gt;The big thing I've been working on has been random substance support.  Part of this means retrofitting the fluid physics code to generalize a number of prior assumptions.  At the moment there are five fluids: water, sand, oil, "fire" (which doesn't burn anything yet, and burns out almost immediately) and "sediment" (a kludge to create smoothed rock floors).  Under the new system, water and fire, and maybe sediment, will be the only hard-coded substances.  (And I'm considering towards removing water's privileged position.)  The others would be possible options that could be randomly included in a world, or could be "mutated" so that it works with different physics, or there could even be entirely random fluid types, made of different properties like density, flow mode and interaction types.  Gas and stone would be similarly scrambled, although their workings would be less complex than fluids.&lt;/p&gt;&lt;p&gt;A second thing I've broken ground on has been the world generation.  At the moment the "Terrain" world generation has been surprisingly interesting, but it's time to construct some actual play territory now, bringing in a semblance of game design to what up until now has looked more like a tech demo.&lt;/p&gt;&lt;p&gt;I've started on building the world "pieces" that the game will piece together to make worlds.  The terrain generator is a further elaboration of the stuff I did for Mayflight, which is in place unfettered as the current generator.  So, the "world pieces" I'm talking about are more accurate described as &lt;i&gt;influence templates&lt;/i&gt;.&lt;/p&gt;&lt;p&gt;One problem that lies in this direction is that while the Mayflight terrain generator is awesome at producing nicely corrugated terrain, it's not so great at producing solid, pre-set puzzle areas.  I like of like that though.  I want the game to be more about making terrain which might sometimes be too easy or too hard that taking a strong design hand and making a bunch of pre-made situations, situations that might be interesting in themselves but by their very nature are still finite in number.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-4555345758386072641?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/4555345758386072641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/07/in-profundis-progress-724.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/4555345758386072641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/4555345758386072641'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/07/in-profundis-progress-724.html' title='In Profundis Progress 7/24'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-3109305454381113492</id><published>2011-07-21T17:05:00.001-07:00</published><updated>2011-07-21T17:05:37.539-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='randomness'/><category scheme='http://www.blogger.com/atom/ns#' term='gas'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>In Profundis Progress 7/21</title><content type='html'>&lt;p&gt;I've got gases partly reimplemented, they aren't displaying properly at the moment though.&lt;/p&gt;&lt;p&gt;I'm also putting in some of the infrastructure for randomized material properties.  To explain:&lt;/p&gt;&lt;p&gt;One of the basic ideas of the game is that you encounter liquids, gases and even walls with unusual properties.  They might be bouncy, or sticky, or flammable, or explosive, or poisonous, or have any of a number of other possible attributes.&lt;/p&gt;&lt;p&gt;Here is my plan for implementing this.&lt;/p&gt;&lt;p&gt;First, there is one of each type of substance (fluid, gas, stone) that is not random, but is otherwise boring.  For fluids this is water, for gas this is "breathable," for stone this is "inert."  My idea is that this substance is the most common of its type in each world, except maybe in the weirdest areas, just to keep down player confusion.  (If everything you touch immediately explodes it doesn't make for a very interesting game.)&lt;/p&gt;&lt;p&gt;There are also a number of other predefined substances.  Sand and oil are the two major types of these we've seen to date, both holdovers from World of Sand.&lt;/p&gt;&lt;p&gt;Each world also bears a difficulty value, which increases as the player explores more worlds.  As difficulty goes up, at world generation time the game will randomly switch out more of the stock substances.  So a game might not have sand, but another fluid.  It might clump like sand, or it might slide around the ground, or it might slowly eat through stone, etc.  Higher difficulty values also make it more likely that dangerous attributes are selected.  Later on it would be possible for each substance to actually have &lt;i&gt;two&lt;/i&gt; such attributes.&lt;/p&gt;&lt;p&gt;My problem here is: will this make for interesting gameplay?  This is the biggest question of the design.  My hypothesis is that it will if the player is given a limited number of ways to figure out what substances do, akin to the rogue like scroll of identify and Nethack's many ID tricks.  I think this should be balanced so that players can't test out *everything*, just some things, forcing him to put up with whatever special attributes other things turn out to have.&lt;/p&gt;&lt;p&gt;Even if it's interesting, will it turn out to be enough to carry the game?  The exploration aspects, the navigation and treasure seeking, and the resource management game of making efficient use of your equipment, all of these things together are what I consider to be In Profundis.  If that turns out to be fun by itself then we can make an initial release and add in stuff like fighting/communicating with aliens later.  If it doesn't, well then we might have to add in other actors earlier rather than later.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-3109305454381113492?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/3109305454381113492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/07/in-profundis-progress-721.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/3109305454381113492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/3109305454381113492'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/07/in-profundis-progress-721.html' title='In Profundis Progress 7/21'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-4081769953035115791</id><published>2011-07-17T06:06:00.000-07:00</published><updated>2011-07-17T06:13:03.331-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='slopes'/><category scheme='http://www.blogger.com/atom/ns#' term='engine'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>In Profundis: New Video</title><content type='html'>The work on the graphics engine has borne a bit of fruit.&amp;nbsp; Have a look:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://1.gvt0.com/vi/JBdauy4GaHU/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/JBdauy4GaHU&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/JBdauy4GaHU&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=JBdauy4GaHU"&gt;http://www.youtube.com/watch?v=JBdauy4GaHU&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Notes:&lt;br /&gt;This is the first time I've shown off the engine using larger tiles.&amp;nbsp; Of course the graphics for walls are fairly plain right now.&amp;nbsp; What isn't shown is that there are now up to eight kinds of stone, which will have randomized properties.&lt;br /&gt;&lt;br /&gt;The big thing that's visible here is that sand and water now has a smooth surface.&amp;nbsp; In particular this looks nice when a single level of water is moving around at the surface of a pool.&amp;nbsp; At the moment this is only cosmetic, and a bit glitchy at that.&amp;nbsp; Notice how, when water meets up with sand at about the same level, the sand angles down but the water stays level, and so it looks like it's being held up by air.&lt;br /&gt;&lt;br /&gt;Also, the known "map" areas out of sight but still onscreen are now displayed using outlines.&amp;nbsp; There is some intelligence there that outlines the edges of the region but not the tiles in the middle.&amp;nbsp; It's not perfect yet; you can see some dots in regions where aborted walls are drawn, and the line isn't complete at the right-hand sides of slopes.&amp;nbsp; Not to mention, in some cases where sand is underwater, a black corner is drawn on the sand.&lt;br /&gt;&lt;br /&gt;The update engine now uses a hybrid of the first system, which was a simple for loop, and the second system, which kept a list of all the tiles that might change this turn and iterated through them.&amp;nbsp; Now it iterates through the cells in a spiral pattern from around the "focus," which is either the player's location or the cursor.&amp;nbsp; It keeps a "dirty" flag on cells that might need updating next frame, allowing the game to avoid looking at every cell with complex interactions, like fluids, just to determine that they don't have anything to do this frame.&amp;nbsp; There are a couple of bugs with this too at the moment: sometimes the game forgets about liquids on "steps" and they are left to just pool there, and in edit mode placed fluids don't do anything until an adjacent space is modified.&lt;br /&gt;&lt;br /&gt;I've also started planning out how gasses will be returned to the game.&amp;nbsp; They probably won't be updated as often as liquids, which befits a more diffuse way of spreading.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-4081769953035115791?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/4081769953035115791/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/07/in-profundis-new-video.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/4081769953035115791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/4081769953035115791'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/07/in-profundis-new-video.html' title='In Profundis: New Video'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-8769013335709067914</id><published>2011-07-15T20:03:00.001-07:00</published><updated>2011-07-15T20:03:48.112-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ordering'/><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>In Profundis Progress 7/15</title><content type='html'>&lt;p&gt;1. Considering redesigning the character some more.  It's not that it's not okay, but it's more like, we already have a CA-type game with graphics of sort of that style (Terraria).  I'd like to distance this game as much as possible from that.&lt;/p&gt;&lt;p&gt;2. Abandoning the "coordinate list" more of keeping track of updates.  The sort is just too much of a performance penalty.  Someone MeMailed me a while back and suggested using a quad tree to keep track of which cells needed to be updated, but I frankly don't see how I would get substantial advantage from that.  I will admit I am no expert on the structure though.  It seems to me that any advantage gained from that wouldn't be greater than just iterating through them and using update flags to rapidly skip by any cells that don't need calculation.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-8769013335709067914?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/8769013335709067914/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/07/in-profundis-progress-715.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/8769013335709067914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/8769013335709067914'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/07/in-profundis-progress-715.html' title='In Profundis Progress 7/15'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-6533388962628361885</id><published>2011-07-13T07:57:00.001-07:00</published><updated>2011-07-13T07:57:46.353-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='fluids'/><category scheme='http://www.blogger.com/atom/ns#' term='graphics'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>In Profundis Progress 7/13</title><content type='html'>&lt;p&gt;Some heartening progress over the past couple of days!  I've somewhat successfully gotten the graphics rendering to display more smoother graphics for liquids without resorting to making hundreds and hundreds of tiles covering every possible liquid state.  I'm not sure as to what the performance hit is for it yet, more news soon.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-6533388962628361885?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/6533388962628361885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/07/in-profundis-progress-713.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/6533388962628361885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/6533388962628361885'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/07/in-profundis-progress-713.html' title='In Profundis Progress 7/13'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-8533221713474437830</id><published>2011-07-12T03:06:00.001-07:00</published><updated>2011-07-12T03:06:48.768-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='compilers'/><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='python unladenswallow'/><category scheme='http://www.blogger.com/atom/ns#' term='liquids'/><category scheme='http://www.blogger.com/atom/ns#' term='ios'/><category scheme='http://www.blogger.com/atom/ns#' term='graphics'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><category scheme='http://www.blogger.com/atom/ns#' term='ipad'/><title type='text'>In Profundis Progress 7/11, pt 3</title><content type='html'>&lt;p&gt;I think I've discovered the best way to smooth over the liquid tiles.  It does require a fair amount of extra tiles to be generated, but it shouldn't be any slower than the current system.&lt;/p&gt;&lt;p&gt;I did a bit more looking into the state of Python.  There are some very promising avenues on the horizon for it, that should be of interest to other Python game developers:&lt;/p&gt;&lt;p&gt;1. There is an optimizing compiler for Python coming up called, in the style of Monty Python references, Unladen Swallow.  It's developed by Google so it has some strong support behind it, and the word is that eventually it will make it into the stock CPython distribution.  That, coupled with the existence of Cython, make it clear that there is strong hope for dropping Psyco in the future.&lt;/p&gt;&lt;p&gt;2. There is some murmuring in the community about creating a version of Python for iOS.  That's a target platform for me.  I don't know what the performance will be like (word is that it's not bad), and anyway the "gold rush" phase of iOS development seems to be over, but it's still a bit of a vanity thing for me to make an iPad version.  We shall see.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-8533221713474437830?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/8533221713474437830/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/07/in-profundis-progress-711-pt-3.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/8533221713474437830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/8533221713474437830'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/07/in-profundis-progress-711-pt-3.html' title='In Profundis Progress 7/11, pt 3'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-1735195392533151525</id><published>2011-07-11T12:14:00.001-07:00</published><updated>2011-07-11T12:14:48.097-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vision'/><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>More In Profundis Progress 7/11</title><content type='html'>&lt;p&gt;Additionally, I reimplemented an extra little quirk of vision: you can no longer see through sand or sediment more than a full layer (meaning, for example, you can no longer see the stone floor beneath sand dunes), and full tiles of other liquids halve vision range through them.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-1735195392533151525?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/1735195392533151525/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/07/more-in-profundis-progress-711.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/1735195392533151525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/1735195392533151525'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/07/more-in-profundis-progress-711.html' title='More In Profundis Progress 7/11'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-5196665281205116881</id><published>2011-07-11T09:26:00.001-07:00</published><updated>2011-07-11T09:26:18.825-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tiles'/><category scheme='http://www.blogger.com/atom/ns#' term='pygame'/><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='graphics'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>In Profundis Progress 7/11</title><content type='html'>&lt;p&gt;Today, I'm working on a bit that will simplify liquid tiling.  Instead of drawing each tile and referring to them all one at a time from the source, I'm just loading in a mask for the liquid, colorizing and saving it for later use at startup.  This means, instead of having 16 tiles for every liquid in the game (8 for visible, 8 for map), I just have to have 16 tiles, period.  The game makes the colors itself.&lt;/p&gt;&lt;p&gt;This is important because one of the biggest complaints with the videos was the blocky graphics.  Smoothing them out is not as simple as some people seemed to think it would be.   The easiest/fastest way to do it would be to create tile graphics for every possible slope of liquid surface, but with at least 8 possible liquids in a world, maybe more, that quickly runs into many, many tiles, which would take a long time to draw.  This way, I just have to draw a basic set of tiles and colorize them ahead of time.  The biggest drawback is that adds up to a lot of tiles; over 1,000 by my reckoning per liquid, but compensating for that is that each is only 32x32 pixels.&lt;/p&gt;&lt;p&gt;Well, we'll see how it turns out.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-5196665281205116881?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/5196665281205116881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/07/in-profundis-progress-711.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/5196665281205116881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/5196665281205116881'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/07/in-profundis-progress-711.html' title='In Profundis Progress 7/11'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-3666363024760138504</id><published>2011-07-10T09:42:00.001-07:00</published><updated>2011-08-03T12:32:04.578-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><category scheme='http://www.blogger.com/atom/ns#' term='platforming'/><title type='text'>In Profundis Progress 7/9</title><content type='html'>Current work on the game concerns mainly refining the platforming.  One of the complaints people had upon seeing the videos was that the world looked blocky, especially falling water.  While I haven't decided on the best solution to illustrating falling liquids yet, the platforming change should make sloped surfaces a little more feasible.  Emphasis on "should;" it's going to take some work regardless.  Sloped surfaces are deceptively tricky to implement in the way one would expect (which is largely based upon Mario 3) in a tile-based world.&lt;br /&gt;Also, I've switched the internal representation of the world fro a Python list-of-lists to a numpy array.  The result is a very slight performance boost coming from reduced overhead, but more importantly it simplifies the code a bit, and should be easier to optimize in Cython.&lt;br /&gt;Both these things took rather longer that you might expect, from tracking down bugs and charting out code.  Still, progress is such that morale is up at the moment.&lt;br /&gt;&lt;br /&gt;(EDIT: Fixed date, which was incorrect [again] due to confusion over the current Peanuts Roasted date.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-3666363024760138504?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/3666363024760138504/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/07/in-profundis-progress-59.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/3666363024760138504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/3666363024760138504'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/07/in-profundis-progress-59.html' title='In Profundis Progress 7/9'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-7061169010941422581</id><published>2011-07-07T15:05:00.001-07:00</published><updated>2011-07-07T19:52:25.262-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='integers'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><category scheme='http://www.blogger.com/atom/ns#' term='platforming'/><title type='text'>In Profundis Progress (7/7)</title><content type='html'>More bug fixing in the wake of the switch to more integer-based math for platforming.  Internally actor coordinates are switching from pixel-based math, with decimals handling sub-pixel movement, to 16 subdots per pixel.  This means tracking down a few places where values are translated between pixel-level representations and cell-level.&lt;br /&gt;The next thing I'm working is making platforming as bulletproof as possible.  Sorry if it seems like it's going slow, I am but one person.  It &lt;i&gt;is&lt;/i&gt; happening though.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-7061169010941422581?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/7061169010941422581/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/07/in-profundis-progress-57.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/7061169010941422581'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/7061169010941422581'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/07/in-profundis-progress-57.html' title='In Profundis Progress (7/7)'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-1032556287670676563</id><published>2011-07-06T06:25:00.000-07:00</published><updated>2011-07-06T15:45:31.577-07:00</updated><title type='text'>In Profundis Progress 7/6</title><content type='html'>The past two days of work have been oriented towards ripping out as much of the floating point math as is convenient from the platforming engine, and switching it to integer.&amp;nbsp; It's a general code improvement thing; relative to the amount of time the game spends updating the world state, the performance gain from removing floating point math is slight, but it'll make collisions simpler to detect and handle by not having to worry about piddling small decimals riding on the value.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-1032556287670676563?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/1032556287670676563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/07/in-profundis-progress-56.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/1032556287670676563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/1032556287670676563'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/07/in-profundis-progress-56.html' title='In Profundis Progress 7/6'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-8052218004275667856</id><published>2011-07-03T20:56:00.000-07:00</published><updated>2011-07-06T15:45:39.402-07:00</updated><title type='text'>In Profundis Progress 7/3</title><content type='html'>I had a bright idea.&amp;nbsp; What if we didn't draw every tile every frame?&amp;nbsp; What if we just scrolled the image from the last frame, and drew in tiles that changed, those scrolling in from the edge, and those around actors?&lt;br /&gt;&lt;br /&gt;Today I tried this out.&amp;nbsp; And you know what?&lt;br /&gt;&lt;br /&gt;It really didn't make all that much difference, while it cluttered up the code with drawing flags and checks to see if the tile scrolled in.&amp;nbsp; I think the scrolling, even though handled by SDL, end up taking almost as much time as it took to just draw the tiles anew each frame.&amp;nbsp; D'oh!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-8052218004275667856?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/8052218004275667856/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/07/in-profundis-progress-53.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/8052218004275667856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/8052218004275667856'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/07/in-profundis-progress-53.html' title='In Profundis Progress 7/3'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-255613158329954562</id><published>2011-07-03T16:03:00.000-07:00</published><updated>2011-07-03T16:03:12.432-07:00</updated><title type='text'>In Profundis Art: Character Idea</title><content type='html'>To replace Placeholder Guy as protagonist, here's a sprite I've worked up.&amp;nbsp; Tell me what you think:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Nu_PfFKV5p0/ThDzW75tdJI/AAAAAAAAAtw/blGc-ZT_uvI/s1600/ip_char1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-Nu_PfFKV5p0/ThDzW75tdJI/AAAAAAAAAtw/blGc-ZT_uvI/s1600/ip_char1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Points of interest:&lt;br /&gt;&lt;br /&gt;It's a girl, but not ostentatiously female.&amp;nbsp; In the final game there might be a gender choice, depending on how much time it takes to make alternate versions of every frame of animation.&lt;br /&gt;&lt;br /&gt;Shoes are a bit oversized.&amp;nbsp; I like to think of them as "clompy boots," in the style of the Iron Boots in Ocarina of Time.&lt;br /&gt;&lt;br /&gt;Realistically proportioned body, with a big head.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Orange backpack, ala Earthbound, explains freakish carrying capacity.&lt;br /&gt; &lt;br /&gt;Clothes functional, a bit baggy. &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-255613158329954562?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/255613158329954562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/07/in-profundis-art-character-idea.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/255613158329954562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/255613158329954562'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/07/in-profundis-art-character-idea.html' title='In Profundis Art: Character Idea'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-Nu_PfFKV5p0/ThDzW75tdJI/AAAAAAAAAtw/blGc-ZT_uvI/s72-c/ip_char1.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-3778336723785759364</id><published>2011-07-03T15:19:00.000-07:00</published><updated>2011-07-03T15:19:15.873-07:00</updated><title type='text'>Dammit Blogsy</title><content type='html'>Sorry about the Peanuts post here.&amp;nbsp; Been trying out a blogging client, and it makes it easy to get blogs mixed up.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-3778336723785759364?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/3778336723785759364/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/07/dammit-blogsy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/3778336723785759364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/3778336723785759364'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/07/dammit-blogsy.html' title='Dammit Blogsy'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-2991156675892432687</id><published>2011-07-01T16:10:00.001-07:00</published><updated>2011-07-01T16:10:46.656-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='compilation'/><category scheme='http://www.blogger.com/atom/ns#' term='opengl'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='direction'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><category scheme='http://www.blogger.com/atom/ns#' term='cython'/><title type='text'>In Profundis Progress, DIrection</title><content type='html'>&lt;p&gt;So, here is where we are:&lt;/p&gt;&lt;p&gt;I have changed the graphics loading mechanism to use "atlases," large images separated into tile blocks, instead of the many individual images used before.  This will make improving the graphics a lot less annoying.  The tile size has also been increased to 32x32, which fits less onscreen at once but gives a better view of the world.  We'll see if it's a good change with play testing, it won't be hard now to change it back.&lt;/p&gt;&lt;p&gt;The two most promising leads for performance improvements are Cython, a Python-to-C converter, and OpenGL.  In the first case, that is something best saved for much later.  In the second, the PyOpenGL library has a bug that prevents its installation under Python 2.6, so that's going to have to wait for now.&lt;/p&gt;&lt;p&gt;Today is mostly devoted to graphics work.  I'm considering character designs for the main guy.  I might temporarily import Aurora from Mayflight to fill the role, but she's 16x16 anyway.  She'd make a good placeholder though.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-2991156675892432687?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/2991156675892432687/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/07/in-profundis-progress-direction.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/2991156675892432687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/2991156675892432687'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/07/in-profundis-progress-direction.html' title='In Profundis Progress, DIrection'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-2720934620427394162</id><published>2011-06-30T05:38:00.001-07:00</published><updated>2011-06-30T05:38:25.497-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>In Profundis Progress (6/30)</title><content type='html'>&lt;p&gt;Ah, progress!  Basic support for larger tiles is in now.  In fact, I might make the tiles much larger but just display scaled-down versions during the game, which would allow for smooth scaling of the playfield between scales.  I used a trick like that fscaling smooth-scaling map screen in Mayflight (a particular favorite effect from that game).  I'm not sure I can do this with Pygame however -- one of the reasons I tried moving to pyglet is it can blit images while scaling them in transit.  Pygame only scales through the creation of a new surface, which must then be blitted to the destination, which might be too much overhead for me.&lt;/p&gt;&lt;p&gt;One benefit of using larger tiles is the game doesn't have to blit so many images, which is worth another modest framerate increase.  The disadvantage, of course, is that less of the world fits on the screen.&lt;/p&gt;&lt;p&gt;In design news, I've started planning out in detail how the random substance properties will work.  There are planned to be three kinds of substances: liquids, gases and solids.  Liquids are flowing materials like, but not limited to, water.  Sand is also a "liquid," for instance.  Gases hang in the air and slowly spread out.  Both may or may not end up having pressure support, if I can figure out a relatively inexpensive implementation (which is one of the reasons I obsessed over finding ways to speed the game up for a while).  The third type, solids, are basically stone walls, which are more reactive in their properties.&lt;/p&gt;&lt;p&gt;So what do I mean by a random substance?  The idea is that, at the start of the game, in addition to substances with fairly obvious attributes, there would also be some with unknown properties that must be deduced through observation and experimentation.  From the promo video, this is like throwing a torch into a pool of unknown liquid to see if it's flammable.  My idea is that the first world the player explores in a campaign would have little or no random substances, but each one after that would have a little more randomness.  Another idea, which I mentioned in an interview, is that the planets explored by the player would be divided into solar systems, and each system's would have its own "elements."  So, different planets would have different maps and layouts of substances, but the behaviors of those substances would be the same throughout.&lt;/p&gt;&lt;p&gt;If I do this right it could be one of the most interesting aspects of the gameplay.  I find that many of my favorite roguelikes are the ones with randomized equipment, which turns figuring out what your stuff does into a logic game.  However, it is also true with many of those roguelikes that the identification game isn't as interesting as it could be, or is only a real requirement in the early phases of the game, as once the player learns what everything is there is nothing left to learn.&lt;/p&gt;&lt;p&gt;Anyway, all this is still some time off in the future.  I'm going to work on the graphics a bit and fix up the platforming engine before then, I think.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-2720934620427394162?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/2720934620427394162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/06/in-profundis-progress-630.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/2720934620427394162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/2720934620427394162'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/06/in-profundis-progress-630.html' title='In Profundis Progress (6/30)'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-292323490835829315</id><published>2011-06-29T17:45:00.001-07:00</published><updated>2011-06-29T17:45:14.774-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>In Profundis Progress (6/29)</title><content type='html'>&lt;p&gt;Current work is devoted to increasing the tile size and consolidating the tiles into atlases on disk, for ease of editing.  Along the way I'm putting in the beginning of different stone types, which will have random properties like gases and liquids.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-292323490835829315?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/292323490835829315/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/06/in-profundis-progress-629.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/292323490835829315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/292323490835829315'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/06/in-profundis-progress-629.html' title='In Profundis Progress (6/29)'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-751052772456679410</id><published>2011-06-27T15:29:00.000-07:00</published><updated>2011-06-27T15:29:47.436-07:00</updated><title type='text'>In Profundis Progress (6/27)</title><content type='html'>A bit of real progress!&amp;nbsp; Profiling revealed that, anomalously, most of the processor time was being taked up by one particular lambda.&amp;nbsp; I've avoided lambdas in the code mostly, partly because I knew the various machine code compilers don't tend to optimize them well.&amp;nbsp; It didn't help at all that this lambda was being called in the coordinate sort function as a key.&amp;nbsp; Profiling revealed that this lambda was being called millions of times over the course of a short run of the platform engine.&lt;br /&gt;&lt;br /&gt;I replaced it with a class method, and the result is a good 4-5 fps increase.&amp;nbsp; Further optimization is needed I think, but it's a solid improvement!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-751052772456679410?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/751052772456679410/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/06/in-profundis-progress-627.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/751052772456679410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/751052772456679410'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/06/in-profundis-progress-627.html' title='In Profundis Progress (6/27)'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-1460896224991230886</id><published>2011-06-27T05:05:00.000-07:00</published><updated>2011-06-27T05:05:05.587-07:00</updated><title type='text'>In Profundis Progress</title><content type='html'>So I made a backup copy of the code and spent an hour or two trying out Cython.&lt;br /&gt;&lt;br /&gt;Cython (which is different from CPython) is another compiler for Python.&amp;nbsp; Unlike Psyco or PyPy, it isn't a JIT compiler; it turns Python code into C, and it works on the module level, which requires some elementary reorganization to use.&amp;nbsp; Not only does it promise some basic speed increase just from the conversion, it is possible to supply some explicit type information to optimize the resulting code still further.&amp;nbsp; Since that type info is added to the language in the form of new keywords, that has the disadvantage of making the code no longer runnable as pure Python.&lt;br /&gt;&lt;br /&gt;The big surprise with Cython is: I got it to work.&amp;nbsp; There are no Python features in my code that it doesn't support.&amp;nbsp; This, by itself, is a surprise, and after my latest failures in getting outside code working it gives me a warm feeling to use one of these tools and not be faced with any error messages that I can't fix myself.&lt;br /&gt;&lt;br /&gt;Unfortunately, I didn't get any observed speed benefit from it; the framerate actually dipped a little bit.&amp;nbsp; Still, the relative lack of impossible-to-fix errors is encouraging, and I might play around with this a bit more later.&lt;br /&gt;&lt;br /&gt;In the meantime, the thing I can do to improve performance the most is probably to either optimize the cell sort or switch to a different cell calculation selection mechanism.&amp;nbsp; That's what I'll be working on tomorrow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-1460896224991230886?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/1460896224991230886/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/06/in-profundis-progress_27.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/1460896224991230886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/1460896224991230886'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/06/in-profundis-progress_27.html' title='In Profundis Progress'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-1158059472167376750</id><published>2011-06-26T18:48:00.000-07:00</published><updated>2011-06-26T18:48:25.927-07:00</updated><title type='text'>In Profundis (6/26, 2)</title><content type='html'>Profiling has revealed that it's not so much the sort that's taking all the time as the lambda function that determines distance from the player's location.&amp;nbsp; Hmmm.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-1158059472167376750?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/1158059472167376750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/06/in-profundis-626-2.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/1158059472167376750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/1158059472167376750'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/06/in-profundis-626-2.html' title='In Profundis (6/26, 2)'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-4229530796388130053</id><published>2011-06-26T16:44:00.000-07:00</published><updated>2011-06-26T16:44:55.384-07:00</updated><title type='text'>In Profundis Progress</title><content type='html'>Actual work has been light the last few days, as I investigate a couple more possibilities towards speeding it up: eliminating the sort portion of the update loop (mentioned last night), checking into Cython and PyPy in terms of compilers, and trying to get Python's profiling tools to obey me -- I find they are not as simple to use as the documentation on the Python site implies.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-4229530796388130053?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/4229530796388130053/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/06/in-profundis-progress_26.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/4229530796388130053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/4229530796388130053'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/06/in-profundis-progress_26.html' title='In Profundis Progress'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-5424697416108372988</id><published>2011-06-26T07:27:00.000-07:00</published><updated>2011-06-26T07:27:55.174-07:00</updated><title type='text'>In Profundis Design (6/26)</title><content type='html'>Recently the queue for processing cells changed.&amp;nbsp; Before it was a simple nested pair of for loops that went through every cell in a rectangular region slightly larger than the screen.&amp;nbsp; After it uses a substantially more complicated system, where the changed cells from the previous frame are added into a list, the list is sorted by the distance to the player's location, and the first few hundred closest cells are handled, with potential changes from those cells added back into the main list.&lt;br /&gt;&lt;br /&gt;This is good for some things, and bad for others.&amp;nbsp; It makes the preliminary world simulation (two of the generation steps) &lt;i&gt;much&lt;/i&gt; faster, and means, if there's nothing much happening near the player, we automatically simulate progressively further areas of the map.&lt;br /&gt;&lt;br /&gt;However there is a problem, and the more experienced programmers probably already see what it is.&amp;nbsp; It's that sort.&amp;nbsp; Before the change it didn't matter much how large the world was; if it was 2x2 or 100x100, it took the same time to calculate.&amp;nbsp; The sort operates on every change-flagged space on the map, and it makes a function call for every flagged cell on every frame.&amp;nbsp; That's roughly 7,000 cell coordinates in a newly-generated terrain world, every frame.&lt;br /&gt;&lt;br /&gt;You can actually see for yourself, a bit, how much time the sort takes up.&amp;nbsp; When you start playing in the prototype, if you turn on the debugging HUD you'll be told the framerate.&amp;nbsp; On my low-end, single-core laptop, I generally get framerates in the mid-to-high 20s.&amp;nbsp; The simulation tends to find an equilibrium over time though, and as water pools fewer nearby cells are calculated each frame, meaning the range that gets calculated expands, ultimately decreasing the size of that sort list.&amp;nbsp; The result is, over time, framerates slowly increase.&lt;br /&gt;&lt;br /&gt;This is my primary development concern at the moment.&amp;nbsp; I'd like to increase framerates by a bit more so that I have more processor time to do effects (maybe related to making fluids less blocky), increase the complexity of the simulation, and perhaps draw a background layer.&amp;nbsp; Right now I'm getting a handle on Python's profiling tools to make sure my suspicion is correct, but even if it turns out not to be THAT bad I can't help but think I could design this better.&amp;nbsp; Maybe going back to the rectangle, but increasing its size as visible activity decreases. &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-5424697416108372988?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/5424697416108372988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/06/in-profundis-design-626.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/5424697416108372988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/5424697416108372988'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/06/in-profundis-design-626.html' title='In Profundis Design (6/26)'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-4792255161319429730</id><published>2011-06-23T17:35:00.000-07:00</published><updated>2011-06-23T17:35:17.830-07:00</updated><title type='text'>In Profundis stuff</title><content type='html'>$10-and-up backers have had messages sent out informing them of how they can obtain a "playable" copy of the prototype I made the videos from.&lt;br /&gt;&lt;br /&gt;More research is being done while I work on the game, in the continued hopes that I can break the code free from reliance on Psyco, a dead-end in terms of Python development.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-4792255161319429730?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/4792255161319429730/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/06/in-profundis-stuff.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/4792255161319429730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/4792255161319429730'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/06/in-profundis-stuff.html' title='In Profundis stuff'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-8419764144173073556</id><published>2011-06-23T05:24:00.000-07:00</published><updated>2011-06-23T11:51:17.769-07:00</updated><title type='text'>In Profundis Question</title><content type='html'>Talking it over with Simon a bit, this business with chasing C++ may be taking too long.&amp;nbsp; I may go ahead and develop the Python version some more, do some releases of that, and see if it ends up being good enough.&amp;nbsp; In the meantime I'll read up on C++ and try to get the kinks out of my head concerning it.&lt;br /&gt;&lt;br /&gt;The thing about that I'm most worried about is it might turn out to be a dead-end.&amp;nbsp; A reliance on Psyco almost certainly is; it's been dead in the water since 2009, and hasn't had an official release since 2007.&amp;nbsp; Going with its successor PyPy is perhaps possible, but I've so far been unable to get Pygame working under PyPy.&amp;nbsp; I'm pretty sure it works since PyPy has an important profiling tool that uses Pygame for graphics output, but that site is weirdly lacking on details for installing it.&amp;nbsp; The Windows installer for Pygame refuses to recognize PyPy as Python 2.7 and easy_install seems to work at first but in interactive mode refuses to import it.&lt;br /&gt;&lt;br /&gt;Any of you have experience with PyPy?&amp;nbsp; I apologize this is all taking so long.&amp;nbsp; I never promised you an instantaneous rose garden, although I dare say you deserve something soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-8419764144173073556?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/8419764144173073556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/06/in-profundis-question.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/8419764144173073556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/8419764144173073556'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/06/in-profundis-question.html' title='In Profundis Question'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-517966920154961901</id><published>2011-06-22T08:48:00.000-07:00</published><updated>2011-06-22T08:48:59.828-07:00</updated><title type='text'>In Profundis Progress (6/22)</title><content type='html'>Did I make a mistake in picking C++?&amp;nbsp; I know it sounds like I'm dithering between languages, but coming to it from something as luxurious as Python makes C++ seem really... what's the word I'm looking for... Aspergery?&lt;br /&gt;&lt;br /&gt;In any case, the development timeframe for this thing is such that I don't think I can become proficient enough in C++ quickly enough to make effective use of it.&amp;nbsp; But fast-enough Python code relies on either using an out-of-date library (Psyco ceased development with Python 2.6) or a special interpreter which is probably not compatible with the breadth of Python modules I require (pypy).&amp;nbsp; Further, packaging Python into executables seems to be generally hacky.&lt;br /&gt;&lt;br /&gt;I just want to code in peace, and I can't seem to write anything right the first try in C++.&amp;nbsp; Someone in comments a while back suggested Java.&amp;nbsp; Maybe I should consider that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-517966920154961901?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/517966920154961901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/06/in-profundis-progress-722.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/517966920154961901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/517966920154961901'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/06/in-profundis-progress-722.html' title='In Profundis Progress (6/22)'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-3507444325396127115</id><published>2011-06-21T17:57:00.000-07:00</published><updated>2011-06-21T17:57:53.799-07:00</updated><title type='text'>In Profundis Progress (6/21)</title><content type='html'>Still trying to muddle through.&amp;nbsp; I have a question for you more experienced C++ programmers.&lt;br /&gt;&lt;br /&gt;The Python version is implemented procedurally.&amp;nbsp; That is my way of saying, there are multiple loops.&amp;nbsp; In this way, program state (title screen, menus, gameplay, edit mode, etc.) is basically kept in the instruction counter.&lt;br /&gt;&lt;br /&gt;It's a comfortable way to program, basically how I would implement things back on the old Commodore 64, but is hard to convert to an event-driven paradigm, which is why the pyglet and, maybe, the C++ versions are bothersome to develop.&amp;nbsp; (Well that and the fact that C++ is maddeningly finicky.)&amp;nbsp; I'm trying to design this one using a master event loop that switches off depending on the program state.&amp;nbsp; Which is not how I ordinarily would do this, but it seems to be what is expected from a more professional program, and when it comes time to make an iOS version would potentially pay off there.&lt;br /&gt;&lt;br /&gt;Or will it?&amp;nbsp; I'm making assumptions that might not be borne out by practical considerations.&amp;nbsp; It is an alien way for me to code, a method that requires a bit more forethought than I'm used to.&amp;nbsp; In the past, I've coded in a kind of iterative way: I know generally where I'm going, I think out what will be necessary, then I try to get a bit of the way each time.&amp;nbsp; This seems like something more architectural.&lt;br /&gt;&lt;br /&gt;Or is it?&amp;nbsp; Does this make sense to any of you?&amp;nbsp; Is there a better way to do this that I haven't considered?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-3507444325396127115?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/3507444325396127115/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/06/in-profundis-progress-621.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/3507444325396127115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/3507444325396127115'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/06/in-profundis-progress-621.html' title='In Profundis Progress (6/21)'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-2127726245080599687</id><published>2011-06-18T16:17:00.000-07:00</published><updated>2011-06-22T08:48:53.251-07:00</updated><title type='text'>In Profundis Progress (6/18)</title><content type='html'>I continue to bash my head bloody against the brick wall of C++.&amp;nbsp; I have an annoying problem where I try to define a variable in a header, and other files that include that header complain about multiple definition errors despite the presence of a header guard.&amp;nbsp; This is annoying for me since one design pattern I frequently use is to use one file as a place to store essential global values, like gravity and friction values, for easy reference/changing later, but if I just use that file for those variables the linker balks.&lt;br /&gt;&lt;br /&gt;I asked a programmer friend for help and his suggestion managed to resolve the problem (basically to move the values into a different source file), but the reason he gave that it works uses a development metaphor that is nonsensical to me, I don't grasp its context, and so I'm resigned, for the time being at least, to doing it just because it works, not because I understand it, and that makes me nervous.&lt;br /&gt;&lt;br /&gt;As for the stuff I'm implementing, I'm working on the data structures used for holding graphics data right now.&amp;nbsp; Fun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-2127726245080599687?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/2127726245080599687/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/06/in-profundis-progress-418.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/2127726245080599687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/2127726245080599687'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/06/in-profundis-progress-418.html' title='In Profundis Progress (6/18)'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-1480947462066041602</id><published>2011-06-18T02:46:00.000-07:00</published><updated>2011-06-18T02:46:01.557-07:00</updated><title type='text'>In Profundis Progress (6/17, #2)</title><content type='html'>I hate C++ a little less.&amp;nbsp; It still has much to atone for, however.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-1480947462066041602?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/1480947462066041602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/06/in-profundis-progress-617-2.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/1480947462066041602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/1480947462066041602'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/06/in-profundis-progress-617-2.html' title='In Profundis Progress (6/17, #2)'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-6624327478576746322</id><published>2011-06-17T15:42:00.000-07:00</published><updated>2011-06-22T08:49:08.997-07:00</updated><title type='text'>In Profundis "progress" (6/17)</title><content type='html'>Grar, I hate C++!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-6624327478576746322?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/6624327478576746322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/06/in-profundis-progress-417.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/6624327478576746322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/6624327478576746322'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/06/in-profundis-progress-417.html' title='In Profundis &quot;progress&quot; (6/17)'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-8787527402958469283</id><published>2011-06-16T19:33:00.000-07:00</published><updated>2011-06-16T19:56:20.299-07:00</updated><title type='text'>In Profundis progress (6/15)</title><content type='html'>After fixing the sight bug, I broke ground on the C++ port.&amp;nbsp; Getting in the way is the fact that although I'm generally familiar with C-style languages I've never done a major project in it or C++ before, meaning I'm going through that phase where every file has 20 different errors, sometimes due to a problem halfway up the page from where the compiler caught it.&amp;nbsp; In other words: uphill climb.&amp;nbsp; Still, going faster than I expected.&lt;br /&gt;&lt;br /&gt;I am considering releasing the Python version as a curiosity for the alpha-level backers to mess around with.&amp;nbsp; It is kind of fun to plop down liquids and sand in edit mode, but it looks real primitive and isn't a real game at this point.&amp;nbsp; What do you guys think?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-8787527402958469283?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/8787527402958469283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/06/in-profundis-progress-415.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/8787527402958469283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/8787527402958469283'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/06/in-profundis-progress-415.html' title='In Profundis progress (6/15)'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-5513761592275631170</id><published>2011-06-14T00:52:00.000-07:00</published><updated>2011-06-14T00:55:37.870-07:00</updated><title type='text'>In Profundis Progress (6/13)</title><content type='html'>The source has been reverted back to the Pygame version.&amp;nbsp; The spectre of performance continues to hang over my head though.&amp;nbsp; I am beginning to plan the switch to C++.&lt;br /&gt;&lt;br /&gt;Back to normal design issues, the switch a couple weeks ago to keeping a cell change list broke vision, since visibility propagation was handled through the CA engine.&amp;nbsp; Today I worked on fixing that.&amp;nbsp; Another bug has come to light (ha ha) in the process, which is causing some out-of-vision cells to show incorrectly. Fixing that is the immediate objective.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-5513761592275631170?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/5513761592275631170/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/06/in-profundis-progress-613.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/5513761592275631170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/5513761592275631170'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/06/in-profundis-progress-613.html' title='In Profundis Progress (6/13)'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-3488637583558423349</id><published>2011-06-12T17:29:00.000-07:00</published><updated>2011-06-12T17:36:50.387-07:00</updated><title type='text'>In Profundis Progress</title><content type='html'>Ah, the problem that has been holding me up for almost a solid week now has been tracked down.&amp;nbsp; It was a lot of sweat to discover this fact so I'm going to use very large text.&amp;nbsp; It is this:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;big&gt;&lt;big&gt;&lt;big&gt;PYGLET IS NOT COMPATIBLE WITH PSYCO&lt;/big&gt;&lt;/big&gt;&lt;/big&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;When I tried attaching keypress events to the window they became unreliable.&amp;nbsp; Removing the call to the psyco compiler causes them to become reliable again.&lt;br /&gt;&lt;br /&gt;I feel like I've wasted a week but no matter, I know there isn't some bizarre phantom bug in my code now.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;Oh, if you only knew the effort I spent on this.&amp;nbsp; The energy I've poured into this.&amp;nbsp; On looking at every part of my code, of creating test situations, of slowly going between the test situations and my code point for point and finding where the differed, of creating MORE tests.&lt;br /&gt;&lt;br /&gt;I feel like curling up in a ball on the floor right now.&amp;nbsp; But at least the problem has been solved.&amp;nbsp; In Profundis is special in that it's not just the display that's the biggest processor cost, the program does some heavy calculation behind the scenes.&amp;nbsp; This means I can't abandon psyco, and that means I must abandon pyglet.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So long, pyglet &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-3488637583558423349?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/3488637583558423349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/06/in-profundis-progress.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/3488637583558423349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/3488637583558423349'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/06/in-profundis-progress.html' title='In Profundis Progress'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-3558051054153316359</id><published>2011-06-11T19:32:00.000-07:00</published><updated>2011-06-11T19:38:24.159-07:00</updated><title type='text'>In Profundis creaks along</title><content type='html'>It's been a while now and I still don't have a lot visible to show for it.&amp;nbsp; Honestly, the switch to pyglet has been going more slowly than I expected.&amp;nbsp; The thing is, to get the most performance out of it I have to redesign the main loop to be entirely event-driven, and that requires learning pyglet's callback system, the examples of which most frequently use decorator, which are proving unfriendly to circular imports....&lt;br /&gt;&lt;br /&gt;Bleaah.&amp;nbsp; It is coming along, it's annoying frustrating work but it's happening.&amp;nbsp; And I'm doing it for more reasons than just performance -- being fully event driven will make the design of the thing a lot more professional, and make it easier to adapt to mobile platforms, which mostly use entirely event-driven paradigms anyway.&amp;nbsp; And pyglet is capable of some special effects, which might help me out in ways related to the oft-commented blockiness of the water effects.&lt;br /&gt;&lt;br /&gt;So it's coming along.&amp;nbsp; I figured you all deserved a status report regarding the game.&amp;nbsp; This is getting reposted on Kickstarter so it'll go out to everyone.&amp;nbsp; You should also all know that the game has a placeholder website not at http://www.inprofundis.com/ -- it's just a barebones Wordpress thing at the moment.&amp;nbsp; I'm going to continue to use the Coin Door Interlock blog for now though for development reports, though.&lt;br /&gt;&lt;br /&gt;More news as it happens....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-3558051054153316359?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/3558051054153316359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/06/in-profundis-creaks-along.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/3558051054153316359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/3558051054153316359'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/06/in-profundis-creaks-along.html' title='In Profundis creaks along'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-521244105008761438</id><published>2011-06-01T14:45:00.000-07:00</published><updated>2011-06-01T14:45:29.999-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pygame'/><category scheme='http://www.blogger.com/atom/ns#' term='rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='boring'/><category scheme='http://www.blogger.com/atom/ns#' term='pyglet'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='graphics'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>In profundis Progress (6/1)</title><content type='html'>More boring stuff.&amp;nbsp; The pyglet changeover continues.&lt;br /&gt;&lt;br /&gt;Someone in comments in the last one asked if I was sure that changing to pyglet would be a net performance improvement.&amp;nbsp; I don't know for sure; he is right, the reputation I have of it is largely anecdotal.&lt;br /&gt;&lt;br /&gt;However it does look like, as far as rendering goes, pyglet is rather more flexible.&amp;nbsp; Or at least the way I was doing it before was less flexible.&amp;nbsp; Either way, I'm taking the opportunity to change the rendering system a bit.&amp;nbsp; Which is, again, not much to show.&amp;nbsp; (Well this &lt;i&gt;is&lt;/i&gt; a development diary, heh.&amp;nbsp; A lot of development, especially in the early phases, looks like this.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-521244105008761438?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/521244105008761438/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/06/in-profundis-progress-61.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/521244105008761438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/521244105008761438'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/06/in-profundis-progress-61.html' title='In profundis Progress (6/1)'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-5069427702914370740</id><published>2011-05-30T17:08:00.000-07:00</published><updated>2011-05-30T17:08:50.796-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='pyglet'/><category scheme='http://www.blogger.com/atom/ns#' term='boooo-riiing'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><category scheme='http://www.blogger.com/atom/ns#' term='gruntwork'/><title type='text'>In Profundis Progress (5/28)</title><content type='html'>Work on switching over to pyglet continues.&amp;nbsp; Also redoing the graphics for performance improvements.&amp;nbsp; Not particularly interesting I know.&amp;nbsp; Right now most of the work has been infrastructure, gruntwork, and preparation for... &lt;i&gt;the future&lt;/i&gt;....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-5069427702914370740?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/5069427702914370740/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/05/in-profundis-progress-528_30.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/5069427702914370740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/5069427702914370740'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/05/in-profundis-progress-528_30.html' title='In Profundis Progress (5/28)'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-7898199162002270991</id><published>2011-05-28T14:35:00.001-07:00</published><updated>2011-05-28T14:35:01.276-07:00</updated><title type='text'>In Profundis Progress (5/28)</title><content type='html'>Work continues, although it hasn't been straight development work.  I've been reading up on the Pyglet graphics framework and it looks like I should be adapt the code to it without a huge amount of trouble.  This means better performance, meaning it'll work on more people's computers without stuttering, which has been a concern.  My development machine is a very cheap laptop, but that's on purpose; if it works on this, I reason, it should work on most machines.&lt;br /&gt;&lt;br /&gt;I've also gotten the hosting and domain registration for the game's website, which is where the alphas and betas will go up.  It's just a placeholder page for now, but when it's ready you can point your browsers to &lt;a href="http://inprofundis.com/"&gt;http://inprofundis.com/&lt;/a&gt;.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-7898199162002270991?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/7898199162002270991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/05/in-profundis-progress-528.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/7898199162002270991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/7898199162002270991'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/05/in-profundis-progress-528.html' title='In Profundis Progress (5/28)'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-1179910864391383486</id><published>2011-05-27T16:15:00.001-07:00</published><updated>2011-05-27T16:15:44.903-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='website'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><category scheme='http://www.blogger.com/atom/ns#' term='panic'/><title type='text'>Website coming soon</title><content type='html'>I registered the domain name and hosting today.&amp;nbsp; Worried about the cost, but I don't think free Google hosting will suffice for password-protected file distribution.&amp;nbsp; Or will it?&amp;nbsp; More to come.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-1179910864391383486?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/1179910864391383486/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/05/website-coming-soon.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/1179910864391383486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/1179910864391383486'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/05/website-coming-soon.html' title='Website coming soon'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-8083013867254631739</id><published>2011-05-22T19:09:00.000-07:00</published><updated>2011-05-22T19:09:45.641-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='updatelists'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='optimization'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><category scheme='http://www.blogger.com/atom/ns#' term='cellularautomation'/><category scheme='http://www.blogger.com/atom/ns#' term='sort'/><title type='text'>In Profundis Progress (5/22)</title><content type='html'>I'm back baby!&lt;br /&gt;&lt;br /&gt;So, here is the thing that's been consuming my development time lately.&amp;nbsp; Cellular automation for use in real-time games frequently has to be heavily optimized.&amp;nbsp; When you're cycling though every cell of a hundreds by hundreds array every frame, then even the overhead from those cells in which you just check contents and decide nothing needs to happen is significant.&lt;br /&gt;&lt;br /&gt;My current strategy for negating this is to not use a big loop that iterates through every cell.&amp;nbsp; Instead, I keep a list of every cell that _might_ change this frame.&amp;nbsp; I calculate those and, any that do change, I add adjacent cells to the list for the next frame.&lt;br /&gt;&lt;br /&gt;It's much MUCH faster, but it's worth noting that this is entirely because, for most of the game world, large portions are static between each frame.&amp;nbsp; Stone is largely inert, so we don't need to worry about it except how other things react to it -- they are the initiating factors in that, so their routines handle the work.&amp;nbsp; Empty spaces (that don't contain weird gases) are similar.&amp;nbsp; These two cell types are 90% of the world.&amp;nbsp; By removing them from consideration, it's worth a huge performance gain.&lt;br /&gt;&lt;br /&gt;A huge gain, but it turns out, not huge enough.&amp;nbsp; I remind you that, before, we kept performance under control by only updating the screen and a short distance outside of it.&amp;nbsp; Under this system we update the whole world, and factoring in all of the cells that CAN change, it's a bit too much to reliably handle.&lt;br /&gt;&lt;br /&gt;There is a way around it.&amp;nbsp; We &lt;i&gt;sort &lt;/i&gt;the update list, using one of the handy-dandy, heavily-optimized Python sort functions, with the sort key being a simple Cartesian distance from the player or cursor.&amp;nbsp; Then we can just pop off the first few hundred or so every frame, and leave the rest for the next frame.&amp;nbsp; If the player never goes anywhere near them they won't get handled, but as soon as he does they'll enter consideration.&lt;br /&gt;&lt;br /&gt;It's a cheat, but real-time game development is basically a convoluted series of cheats, a set of makeshift concessions to processor speed and memory limits.&amp;nbsp; Now that we have multicore machines and multi-gigabyte memory spaces this fundamental fact is sometimes obscured, but it doesn't change it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-8083013867254631739?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/8083013867254631739/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/05/in-profundis-progress-522.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/8083013867254631739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/8083013867254631739'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/05/in-profundis-progress-522.html' title='In Profundis Progress (5/22)'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-7736744442270218828</id><published>2011-05-19T18:36:00.000-07:00</published><updated>2011-05-19T18:36:01.460-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rewards'/><category scheme='http://www.blogger.com/atom/ns#' term='etc'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><category scheme='http://www.blogger.com/atom/ns#' term='kickstarter'/><title type='text'>In Profundis (lack of) Progress (5/19)</title><content type='html'>Been working on rewards so far and trying to work with Kickstarter's survey system to get necessary information for fulfilling them.&amp;nbsp; Will let you know when work on the game itself occurs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-7736744442270218828?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/7736744442270218828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/05/in-profundis-lack-of-progress-519.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/7736744442270218828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/7736744442270218828'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/05/in-profundis-lack-of-progress-519.html' title='In Profundis (lack of) Progress (5/19)'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-7911436526610304249</id><published>2011-05-16T14:40:00.000-07:00</published><updated>2011-05-16T14:40:56.487-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thanks'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='goal'/><category scheme='http://www.blogger.com/atom/ns#' term='woohoo'/><category scheme='http://www.blogger.com/atom/ns#' term='project'/><title type='text'>The project make the goal</title><content type='html'>If I were the kind of person to say things like "woo-hoo," I'd be saying it now.&lt;br /&gt;&lt;br /&gt;Maybe I should give it a try.&amp;nbsp; Here goes:&lt;br /&gt;&lt;br /&gt;"Woo-hoooo!"&lt;br /&gt;&lt;br /&gt;Hm, unfulfilling.&amp;nbsp; Especially since the hard part &lt;i&gt;starts&lt;/i&gt; now.&lt;br /&gt;&lt;br /&gt;But thanks everyone for believing in my idea, and the project.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-7911436526610304249?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/7911436526610304249/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/05/project-make-goal.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/7911436526610304249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/7911436526610304249'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/05/project-make-goal.html' title='The project make the goal'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-5888394747755760379</id><published>2011-05-13T21:05:00.000-07:00</published><updated>2011-05-13T21:05:34.234-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sandbox'/><category scheme='http://www.blogger.com/atom/ns#' term='gravity'/><category scheme='http://www.blogger.com/atom/ns#' term='minecraft'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><category scheme='http://www.blogger.com/atom/ns#' term='cellularautomation'/><category scheme='http://www.blogger.com/atom/ns#' term='updatelist'/><title type='text'>In Profundis progress (5/13)</title><content type='html'>The biggest change, which is so big that I've been taking a break from development for a few days to consider what it means, is to the way the sim looks at which cells to calculate.&lt;br /&gt;&lt;br /&gt;Originally, it just iterated through a loop through the whole world, from bottom to top, examining each cell and deciding what should happen there.&amp;nbsp; That took a long time.&lt;br /&gt;&lt;br /&gt;More recently, it'd just been updating a frame around the currently visible portion of the world.&amp;nbsp; That's&amp;nbsp; much faster, but causes certain bits of weird behavior in some circumstances.&amp;nbsp; For example, if enough water pouring off screen in a place eventually it'll fill in the cells in the no-update region off the bottom of the screen, and then it'll pool on top of that.&amp;nbsp; If the screen then scrolled down somewhat, it'd suddenly all start falling as the "plug" dissipates.&amp;nbsp; Similarly, water flowing off-screen will eventually act as if it's reached a wall and begin pooling, but if you move forward it'll start flowing out again.&lt;br /&gt;&lt;br /&gt;The new system is a rather more radical change.&amp;nbsp; Now the game has a list of cells to update, compiled originally by scanning through the world.&amp;nbsp; Cells that are mostly inert, like walls and empty spaces, don't make it into the list, and thus no cycles are spent on them.&amp;nbsp; When an operation is performed on a cell, the game adds nearly adjacent cells to the (initially empty) list of cells for the next frame.&amp;nbsp; Those calls are "activated."&amp;nbsp; Since the most distance away a cell can affect the world on a single turn is one space, we never have to add too many cells to the list.&lt;br /&gt;&lt;br /&gt;If a space containing some possibly-active element, such as a liquid or boulder, does nothing this turn, it is left off the list for the next frame.&amp;nbsp; The simulation doesn't even consider it until something happens close enough to it that it might be upset.&amp;nbsp; Minecraft does something similar with its sand; sometimes you'll find a place where the world generates sand blocks that are unsupported, or even hanging in air&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;When the player does something that affects the game world under this system, the nearby cells have to be added to the update list in case there's any simulating to do.&amp;nbsp; That's what causes Minecraft's sand to suddenly realize that &lt;i&gt;gravity exists&lt;/i&gt; and begin falling.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-5888394747755760379?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/5888394747755760379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/05/in-profundis-progress-513.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/5888394747755760379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/5888394747755760379'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/05/in-profundis-progress-513.html' title='In Profundis progress (5/13)'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-4598597324232233579</id><published>2011-05-09T03:17:00.000-07:00</published><updated>2011-05-09T03:17:41.996-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='update'/><category scheme='http://www.blogger.com/atom/ns#' term='simulation'/><category scheme='http://www.blogger.com/atom/ns#' term='partialupdates'/><category scheme='http://www.blogger.com/atom/ns#' term='optimization'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><category scheme='http://www.blogger.com/atom/ns#' term='cellularautomation'/><title type='text'>In Profundis progress (5/8, part 2)</title><content type='html'>Did some more work today on speeding up the simulation.&amp;nbsp; Before, the cells that were calculated were all of them within the borders of the screen plus a small area outside of it.&amp;nbsp; Current work is towards switching to a system where changed cells in a given frame mark cells adjacent to them for calculation in the next frame.&amp;nbsp; The idea is that changes don't happen randomly; they're always spurred by other changes.&amp;nbsp; So, there's no need to, say, check a boulder every frame to see if it should roll.&amp;nbsp; If it's stable on a given frame, it won't be checked again unless the space around it is disturbed.&lt;br /&gt;&lt;br /&gt;Since most of the game world is fairly static each frame, the result is potentially much more efficient world calculations, meaning being able to simulate more of it each frame.&amp;nbsp; The biggest drawback is that gases are unsuitable for this system, since they'd be constantly spreading bit by bit regardless of whether the neighbors change.&amp;nbsp; Even so, it's a promising direction for development.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-4598597324232233579?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/4598597324232233579/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/05/in-profundis-progress-58-part-2.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/4598597324232233579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/4598597324232233579'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/05/in-profundis-progress-58-part-2.html' title='In Profundis progress (5/8, part 2)'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-4097650973541414840</id><published>2011-05-08T19:23:00.000-07:00</published><updated>2011-05-08T19:23:48.537-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='progress'/><category scheme='http://www.blogger.com/atom/ns#' term='argh'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><category scheme='http://www.blogger.com/atom/ns#' term='kickstarter'/><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>In Profundis progress (5/8)</title><content type='html'>Been going very slow due to frustrations with the Kickstarter project and trying to work on another article about it, to get up whatever little publicity I can in the few days until the project inevitably fails.&amp;nbsp; I don't think the game will be abandoned when the project fails to make its goal, but it &lt;i&gt;is&lt;/i&gt; going to take me longer, much longer probably, to work on.&amp;nbsp; As such, it'll probably be longer between posts here unfortunately.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-4097650973541414840?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/4097650973541414840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/05/in-profundis-progress-58.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/4097650973541414840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/4097650973541414840'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/05/in-profundis-progress-58.html' title='In Profundis progress (5/8)'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-8280787323429414877</id><published>2011-05-05T18:33:00.000-07:00</published><updated>2011-05-05T18:33:19.879-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gamasutra'/><category scheme='http://www.blogger.com/atom/ns#' term='liquids'/><category scheme='http://www.blogger.com/atom/ns#' term='algorithm'/><category scheme='http://www.blogger.com/atom/ns#' term='article'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='fluiddynamics'/><category scheme='http://www.blogger.com/atom/ns#' term='cellularautomation'/><title type='text'>Gamasutra article up</title><content type='html'>The &lt;a href="http://www.gamasutra.com/view/feature/6367/an_intro_to_cellular_automation.php"&gt;Gamasutra article&lt;/a&gt; offering a rough view of the cellular automation liquid algorithm in In Profundis is up.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-8280787323429414877?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/8280787323429414877/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/05/gamasutra-article-up.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/8280787323429414877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/8280787323429414877'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/05/gamasutra-article-up.html' title='Gamasutra article up'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-4717133133032911238</id><published>2011-05-03T12:37:00.000-07:00</published><updated>2011-05-03T12:37:11.067-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='contextsensitive'/><category scheme='http://www.blogger.com/atom/ns#' term='caverns'/><category scheme='http://www.blogger.com/atom/ns#' term='pushing'/><category scheme='http://www.blogger.com/atom/ns#' term='cursor'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='exploration'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><category scheme='http://www.blogger.com/atom/ns#' term='boulders'/><title type='text'>In Profundis progress (5/3)</title><content type='html'>Pushing boulders now works.&lt;br /&gt;&lt;br /&gt;Additionally, there is now a faint ghost cursor that accompanies your character as he wanders around the world.&amp;nbsp; Not like the one you've seen in videos of edit mode, an understated one.&amp;nbsp; It acts as a kind of context-sensitive prompt.&amp;nbsp; For the demo, the object it covers represents the action you will perform when pressing the action key.&amp;nbsp; Empty space next to a wall: insert piton.&amp;nbsp; Empty space away from wall: fire airgun.&amp;nbsp; Overlapping wall: pickaxe.&amp;nbsp; In fluid or sand: shovel out some material.&lt;br /&gt;&lt;br /&gt;The cursor can be adjusted a bit; if you hold the up key, it moves into the air above your head.&amp;nbsp; If you crawl, it goes down below your feet.&amp;nbsp; People who have played the classic Tecmo puzzle game Solomon's Key will get the idea, regarding which blocks you can affect at a given moment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-4717133133032911238?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/4717133133032911238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/05/in-profundis-progress-53.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/4717133133032911238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/4717133133032911238'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/05/in-profundis-progress-53.html' title='In Profundis progress (5/3)'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-2586501347593393057</id><published>2011-05-01T15:22:00.000-07:00</published><updated>2011-05-01T15:22:17.031-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='notes'/><category scheme='http://www.blogger.com/atom/ns#' term='equipment'/><category scheme='http://www.blogger.com/atom/ns#' term='ideas'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='basic'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>In Profundis design ideas (5/1)</title><content type='html'>Work on the game has been slow this weekend (which is to be expected, since those are the days I spend 1. delivering pizzas, and 2. cursing fate), but I figured it'd be useful and perhaps interesting to discuss some of the ideas I have for the game.&amp;nbsp; These are all things I have been playing around with and may, &lt;i&gt;or may not&lt;/i&gt;, someday implement.&amp;nbsp; Perhaps (or perhaps not) someday soon.&lt;br /&gt;&lt;br /&gt;#1: Basic equipment&lt;br /&gt;&lt;br /&gt;Okay this one is pretty set-in-stone, and in fact is the current feature I'm working on, hopefully to be finished before the Kickstarter project concludes.&amp;nbsp; In Profundis is intended to be a kind of game where just getting around is a large part of the challenge.&amp;nbsp; Your guy's abilities by himself are pretty much limited to jumping, crawling, swimming, pushing, and climbing -- and climbing only works if there is a cracked stone surface to scale, which are not usually common enough to rely upon.&amp;nbsp; Everything else you can do relates to your equipment in some way.&lt;br /&gt;&lt;br /&gt;In the real game equipment will be handled from an inventory screen.&amp;nbsp; (I have persistent recurring visions of a roguelike-style inventory screen, but that would probably scare off a lot of players.)&amp;nbsp; Each item would be rated by weight, and you could take a certain amount with you on an expedition.&amp;nbsp; The various bits of kit you take with determine your abilities.&amp;nbsp; In the meantime, for testing, I'll just enable unrestricted use off all the items.&amp;nbsp; I intend to make this version of the game available as a playable alpha.&lt;br /&gt;&lt;br /&gt;If you find that you've brought inappropriate stuff, you can go back and reload, but at a cost.&amp;nbsp; Living on an alien planet is not without its expenses.&amp;nbsp; Every expedition takes at least one day of game time, and thus a certain amount of funds.&amp;nbsp; The idea is that this cost slowly increases the more days you spend.&amp;nbsp; So, even if you seem to have inappropriate stuff with you, you still want to make what use of it that you can before you return.&lt;br /&gt;&lt;br /&gt;The basic pieces of equipment planned are:&lt;br /&gt;&lt;br /&gt;Pitons: These are basically simple metal spikes.&amp;nbsp; By themselves they are useless.&amp;nbsp; They are intended to be used with the Hammer or Air Gun.&amp;nbsp; Once inserted into a rock face, they can be used to climb.&amp;nbsp; Pitons remain in place after being inserted, even across many days, so as you spend more time at the site you gradually transform hostile terrain into something traversable.&amp;nbsp; This is a general theme for the game, how you reshape the cave to your purposes.&amp;nbsp; But pounding spikes into the rock can also cause cracks to form, and this is another theme: remaking terrain to suit your purposes is dangerous.&amp;nbsp; Sufficiently cracked walls can break, and expel whatever material was built up behind it into your face.&amp;nbsp; Once hammered in, these pitons are generally unsuitable to later reuse, but that's okay as pitons are one of the cheapest pieces of equipment you have.&lt;br /&gt;&lt;br /&gt;You can also tie a rope onto a piton, either in your inventory or one that's already in the rock.&amp;nbsp; More on that below.&lt;br /&gt;&lt;br /&gt;Hammer: One of two ways to insert pitons.&amp;nbsp; The Hammer is not consumed and doesn't wear out, making it a rarity among In Profundis equipment.&amp;nbsp; It can be used while climbing, so as long as you can get hold of the wall, you can continue pounding in new pitons on your way up or down the surface.&amp;nbsp; The problem is that you can't get around overhangs with just the hammer; pitons hammered into ceilings are not suitable for climbing.&amp;nbsp; For that you'll need to use something else.&lt;br /&gt;&lt;br /&gt;Air Gun: Something else like this.&amp;nbsp; Powered by consumable cans of compressed air, this device can be used to shoot pitons out towards other surfaces.&amp;nbsp; I'm still figuring out how this will work; I'm thinking about a targeting system where you aim a cursor.&amp;nbsp; Firing a single piton is not very useful, but firing a piton with a rope tied to it is quite handy.&amp;nbsp; It'd be nice to use a full physics simulation for the ropes.&amp;nbsp; Nice, but no, I don't think it's going to happen; we're already consuming a lot of processor time with the cellular engine, and I don't think we'd actually get that much use out of swinging ropes, even if they would be bloody flash to see.&amp;nbsp; The way ropes are projected to work is, when the piton strikes the rock surface, the rope will unfurl downward ten units from where it hits.&amp;nbsp; If you can grab onto that rope (it's freely climbable at this point) and get to the end of it, you can tie another rope to the end, and in this way descend until you run out of rope.&lt;br /&gt;&lt;br /&gt;Tradeoffs to the air gun: the rope weighs the piton down so the range, while not short, isn't very long.&amp;nbsp; It is long enough that, unless you have an unusually powerful light source with you, you'll have to rely on the automap to fire at the appropriate location.&amp;nbsp; And if something breaks the rope the rest of it, below that point, falls.&lt;br /&gt;&lt;br /&gt;Air Can: These power the air gun.&amp;nbsp; There are other uses projected too, relating to the gas pressure system I've got planned, but in the meantime they'll just serve as gun "fuel."&lt;br /&gt;&lt;br /&gt;Flashlight: Abstracted into an increased viewing range.&amp;nbsp; In the full game this will have batteries that can die.&amp;nbsp; Being without a source of light is a big problem; fortunately batteries have a good lifespan.&amp;nbsp; In the full game, if you run out of battery you can fall back on torches, but they produce less light and additionally carry other dangers.&lt;br /&gt;&lt;br /&gt;Pickaxe: A very useful tool.&amp;nbsp; With this, you can smash tunnels into the rock, entering adjoining chambers or, in a pinch, digging a staircase back up to the surface.&amp;nbsp; But the tradeoffs are great -- you don't always have enough knowledge of what might be on the other side of that wall, the noise is considerable and prone to causing rockslides or alerting monsters, and worst of all, pickaxes are heavy and wear out over time.&amp;nbsp; Also, and importantly, it is impossible to get a good swing with a pickaxe while climbing.&lt;br /&gt;&lt;br /&gt;That's all for now.&amp;nbsp; More ideas later!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-2586501347593393057?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/2586501347593393057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/05/in-profundis-design-ideas-51.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/2586501347593393057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/2586501347593393057'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/05/in-profundis-design-ideas-51.html' title='In Profundis design ideas (5/1)'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-731553646529339876</id><published>2011-04-30T17:11:00.000-07:00</published><updated>2011-04-30T17:11:11.574-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='equipment'/><category scheme='http://www.blogger.com/atom/ns#' term='playabledemo'/><category scheme='http://www.blogger.com/atom/ns#' term='publicity'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><category scheme='http://www.blogger.com/atom/ns#' term='kickstarter'/><title type='text'>In Profundis progress (4/30)</title><content type='html'>Have gotten noting done on the game over the past couple of days, partly due to working in the dreaded pizza mines (I have a sucky job), partly because of trying to think of new avenues to explore for pledges.&lt;br /&gt;&lt;br /&gt;I'm thinking the best thing to do at this point is to get basic equipment working (pitons, ropes, pickaxe, airgun), without inventory management if need be (just allowing for infinite uses), and trying to make something playable on a rudimentary level.&amp;nbsp; If I can do this in a week, I can then maybe take it to TIGsource or Rock, Paper, Shotgun, and get mentions in those places before the project expires.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-731553646529339876?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/731553646529339876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/04/in-profundis-progress-430.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/731553646529339876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/731553646529339876'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/04/in-profundis-progress-430.html' title='In Profundis progress (4/30)'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-6003491773785280082</id><published>2011-04-28T21:43:00.000-07:00</published><updated>2011-04-28T21:43:14.825-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='progress'/><category scheme='http://www.blogger.com/atom/ns#' term='worries'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><category scheme='http://www.blogger.com/atom/ns#' term='kickstarter'/><title type='text'>In Profundis progress (4/28)</title><content type='html'>Unfortunately the last few days progress has been fairly limited.&amp;nbsp; I tweaked graphics a little.&amp;nbsp; I did make a couple of Reddit posts, but that's about it.&lt;br /&gt;&lt;br /&gt;Honestly, the Kickstarter thing has made me nervous beyond all reason.&amp;nbsp; I keep racking my brain for places to write to try to publicize the thing that might bring in some more backers, but so far I haven't come up with many that it seems likely would post a link to it.&lt;br /&gt;&lt;br /&gt;The Kickstarter blog posted an entry recently saying that 90% of projects that make it to 30% funding then go on to get to 100%, but it doesn't seem awfully likely to me right now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-6003491773785280082?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/6003491773785280082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/04/in-profundis-progress-428.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/6003491773785280082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/6003491773785280082'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/04/in-profundis-progress-428.html' title='In Profundis progress (4/28)'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-3831996658016566366</id><published>2011-04-27T12:47:00.000-07:00</published><updated>2011-04-27T12:47:26.522-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='pitch'/><category scheme='http://www.blogger.com/atom/ns#' term='gameplay'/><category scheme='http://www.blogger.com/atom/ns#' term='caves'/><category scheme='http://www.blogger.com/atom/ns#' term='videos'/><category scheme='http://www.blogger.com/atom/ns#' term='reddit'/><category scheme='http://www.blogger.com/atom/ns#' term='description'/><category scheme='http://www.blogger.com/atom/ns#' term='demo'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='exploration'/><category scheme='http://www.blogger.com/atom/ns#' term='kickstarter'/><title type='text'>About In Profundis</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/UaeRtgPhBh8/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/UaeRtgPhBh8?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266" src="http://www.youtube.com/v/UaeRtgPhBh8?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="" style="clear: both; text-align: left;"&gt;IN PROFUNDIS (&lt;a href="http://www.kickstarter.com/projects/445452543/in-profundis-random-cave-exploration-sim-game"&gt;Kickstarter project&lt;/a&gt;) is a 2D cave exploration game in a very random world.&amp;nbsp; Not only is the cave highly unpredictable (as you can see in the below demo video), but it also has dynamic, flowing water, falling boulders, dangerous gases with random properties, and many other dangers besides.&amp;nbsp; It is somewhat realistic; your character's abilities are modest, more like what a real person could accomplish, but you can use equipment brought from base to help you get around: pitons, hammers, ropes, air guns, and more.&amp;nbsp;&lt;/div&gt;&lt;div class="" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="" style="clear: both; text-align: center;"&gt;Platforming demo:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/e2ACKcTi1G0/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/e2ACKcTi1G0?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266" src="http://www.youtube.com/v/e2ACKcTi1G0?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="" style="clear: both; text-align: left;"&gt;In Profundis is inspired by the roguelike games in the high consequences for failure, the dynamic, mysterious nature of the randomized world, and the limited range of vision.&amp;nbsp; While some monsters are planned, the player's true foe is the cave itself.&lt;/div&gt;&lt;div class="" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="" style="clear: both; text-align: left;"&gt;If you went to an unexplored cave in the real world, how would you explore it it?&amp;nbsp; How would you explore it without getting yourself trapped, crushed, flattened, suffocated or lost?&amp;nbsp; What would you need to bring with you to ensure you could get out alive?&lt;/div&gt;&lt;div class="" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="" style="clear: both; text-align: left;"&gt;&lt;a href="http://www.kickstarter.com/projects/445452543/in-profundis-random-cave-exploration-sim-game"&gt;The Kickstarter page is here&lt;/a&gt;.&amp;nbsp; Please pledge today and help to make my game a reality!&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-3831996658016566366?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/3831996658016566366/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/04/about-in-profundis.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/3831996658016566366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/3831996658016566366'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/04/about-in-profundis.html' title='About In Profundis'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-6033940554898774416</id><published>2011-04-26T03:32:00.000-07:00</published><updated>2011-04-26T03:32:56.102-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visibility'/><category scheme='http://www.blogger.com/atom/ns#' term='graphics'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><category scheme='http://www.blogger.com/atom/ns#' term='screenshot'/><category scheme='http://www.blogger.com/atom/ns#' term='roguelike'/><category scheme='http://www.blogger.com/atom/ns#' term='platforming'/><title type='text'>In Profundis progress (4/25)</title><content type='html'>I've gotten the platforming part working acceptably for now.&amp;nbsp; I've added one more task to accomplish before making the new video and going on the ALL-OUT MEDIA BLITZ which honestly just includes posting to Reddit and submitting to Rock, Paper, Shotgun and maybe Tigsource.&amp;nbsp; But that's because it's one of the key features that I think will make In Profundis worth playing: the limited visibility routine.&lt;br /&gt;&lt;br /&gt;When you can see the map around you on your screen filled it, the feeling is entirely different when you can only see the area right around you.&amp;nbsp; But just limiting what is shown to what you can see at a given instant, I think, is not fair to the player.&lt;br /&gt;&lt;br /&gt;My compromise is a roguelike-style on-screen "map memory" that shows places you've seen before but can't now with a different graphics style.&amp;nbsp; The idea is to present those areas with a "hand-drawn" graphics set, like sketched with a marker, but for the time being they're displayed with schematic-style shapes with line shading.&amp;nbsp; The graphics aren't bad I think, but I need to work more on the visibility algorithm.&amp;nbsp; It works currently acceptably in real-time, in fact I'm often seeing a substantial time gain since I don't have to draw the parts of the map that haven't been seen yet.&amp;nbsp; But it's a little _too_ realistic I think; for gameplay's sake, I think it would be better if the player had a little extra visibility, maybe a little around corners.&lt;br /&gt;&lt;br /&gt;Here's a screenshot, which is also the first public viewing of the little guy who's the placeholder I'm using for the player (he's crouched down in the middle of the screen).&amp;nbsp; Click for full-size:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-w2druxRnCC0/TbafHlg2xaI/AAAAAAAAAm4/0USz4YLiXyM/s1600/inprofundis1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="239" src="http://1.bp.blogspot.com/-w2druxRnCC0/TbafHlg2xaI/AAAAAAAAAm4/0USz4YLiXyM/s320/inprofundis1.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-6033940554898774416?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/6033940554898774416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/04/in-profundis-progress-425.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/6033940554898774416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/6033940554898774416'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/04/in-profundis-progress-425.html' title='In Profundis progress (4/25)'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-w2druxRnCC0/TbafHlg2xaI/AAAAAAAAAm4/0USz4YLiXyM/s72-c/inprofundis1.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-640358693975638683</id><published>2011-04-25T12:32:00.000-07:00</published><updated>2011-04-25T12:32:45.406-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='statechanges'/><category scheme='http://www.blogger.com/atom/ns#' term='ceiling'/><category scheme='http://www.blogger.com/atom/ns#' term='water'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><category scheme='http://www.blogger.com/atom/ns#' term='platforming'/><title type='text'>In profundis progress (4/24)</title><content type='html'>Today's lesson: Don't make the platforming engine more complicated than it has to be, especially while in early development.&amp;nbsp; Thus I've, for the time being, taken out some of the more complicated aspects of state changes from crawling/swimming to standing/walking.&lt;br /&gt;&lt;br /&gt;Today I've been getting swimming physics working better and (just now, technically on the 25th) working to cause water flow to reflect on the player.&amp;nbsp; There's still a state change problem between swimming and standing though that causes the player to get embedded in the ceiling when there's not much vertical space between the water and the roof.&amp;nbsp; Work continues....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-640358693975638683?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/640358693975638683/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/04/in-profundis-progress-424.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/640358693975638683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/640358693975638683'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/04/in-profundis-progress-424.html' title='In profundis progress (4/24)'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-2825840868893278725</id><published>2011-04-24T02:28:00.000-07:00</published><updated>2011-04-24T02:28:28.847-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='swimming'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><category scheme='http://www.blogger.com/atom/ns#' term='crawling'/><category scheme='http://www.blogger.com/atom/ns#' term='rescue'/><category scheme='http://www.blogger.com/atom/ns#' term='platforming'/><title type='text'>In Profundis progress (4/23)</title><content type='html'>Basic platforming is working satisfactorily.&amp;nbsp; Today I spent working on implementing swimming and crawling.&lt;br /&gt;&lt;br /&gt;Crawling is necessary because of the variable heights for rocks and sand; it will allow you to enter passages as low as 3 levels high. The tradeoff is that movement is much slower while crawling... which isn't a huge drawback really.&lt;br /&gt;&lt;br /&gt;Swimming lets you move fairly freely in the water.&amp;nbsp; Eventually the tradeoff will be that you can't live for long without coming up for air.&lt;br /&gt;&lt;br /&gt;Both states actually change your character's dimensions a little.&amp;nbsp; Since you're laying down, effectively, in both postures, your height goes down while your width increases.&amp;nbsp; I could have implemented this as just a height change for crawling and a Mario-style vertical swimming pose, but it's a matter of detail.&lt;br /&gt;&lt;br /&gt;That is the point where I think I'll be able to make a new demo video.&amp;nbsp; It still wouldn't be what I'd call playable, because without equipment there will be many inescapable areas.&amp;nbsp; That's by design -- real life cavers live or die by their equipment, and not every situation is escapable.&amp;nbsp; In game terms, I'm planning on having a "call for help" option where you can call for rescue if you get trapped in a truly inescapable situation, but at a huge monetary cost.&amp;nbsp; (Maybe even a cost that increases the more times it is used?)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-2825840868893278725?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/2825840868893278725/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/04/in-profundis-progress-423.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/2825840868893278725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/2825840868893278725'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/04/in-profundis-progress-423.html' title='In Profundis progress (4/23)'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-5829346030397248197</id><published>2011-04-22T21:02:00.000-07:00</published><updated>2011-04-22T21:02:33.781-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sonic'/><category scheme='http://www.blogger.com/atom/ns#' term='mayflight'/><category scheme='http://www.blogger.com/atom/ns#' term='collisiondetection'/><category scheme='http://www.blogger.com/atom/ns#' term='jumping'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><category scheme='http://www.blogger.com/atom/ns#' term='physics'/><title type='text'>In Profundis progress (4/22)</title><content type='html'>Today was spent working on the most troublesome part, I think, of any platforming engine: collision detection and resolution.&lt;br /&gt;&lt;br /&gt;I worked on a game before this one called Mayflight, and although it used Game Maker and could take advantage of its considerable collision detection facilities it was still maddening to work on.&amp;nbsp; I spent so much time hacking away on it, desperately trying to make it work to meet a contest deadline that, as some people seem to delight in telling me, it's controls are rather fidgety.&amp;nbsp; Harumph.&lt;br /&gt;&lt;br /&gt;It didn't help, in that one, that your character could reach very high speeds.&amp;nbsp; There is a reason, I think, that every non-Genesis 2D Sonic the Hedgehog game has had lackluster physics, and that's because the original games' physics were highly optimized and dependent on the Genesis architecture.&amp;nbsp; And Sonic is definitely a physics game; everyone remembers the speed, but few remember that what made the speed work was its sharp physics system.&amp;nbsp; If you jump on an enemy with the jump button held down, Sonic will rebound up to the full height of the jump.&amp;nbsp; If you jump on the enemy from four screens up, Sonic will rebound four screens up, which is exactly what he should be doing if he were a rubber ball.&amp;nbsp; This, I feel, is no accident, but no 2D, non-Genesis Sonic seems to remember it.&lt;br /&gt;&lt;br /&gt;Fortunately for my sanity, In Profundis doesn't need that level of physics simulation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-5829346030397248197?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/5829346030397248197/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/04/in-profundis-progress-422.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/5829346030397248197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/5829346030397248197'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/04/in-profundis-progress-422.html' title='In Profundis progress (4/22)'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-8921087106757883922</id><published>2011-04-22T01:23:00.000-07:00</published><updated>2011-04-22T12:29:30.151-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><category scheme='http://www.blogger.com/atom/ns#' term='platforming'/><title type='text'>In Profundis progress (4/21)</title><content type='html'>I was going to make a Reddit post on the game today (yesterday) but wouldn't you know it was down all day.&amp;nbsp; So I spent the time working on the framework for the platformer engine.&amp;nbsp; The smooth scrolling is done, and so is the basic artwork for a placeholder character.&amp;nbsp; Hopefully I'll have something more to show tomorrow (today).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-8921087106757883922?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/8921087106757883922/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/04/in-profundis-progress-421.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/8921087106757883922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/8921087106757883922'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/04/in-profundis-progress-421.html' title='In Profundis progress (4/21)'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-4939259378382702048</id><published>2011-04-20T17:53:00.000-07:00</published><updated>2011-04-20T17:53:48.935-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='progress'/><category scheme='http://www.blogger.com/atom/ns#' term='gamasutra'/><category scheme='http://www.blogger.com/atom/ns#' term='fluids'/><category scheme='http://www.blogger.com/atom/ns#' term='liquids'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><category scheme='http://www.blogger.com/atom/ns#' term='cellularautomation'/><category scheme='http://www.blogger.com/atom/ns#' term='kickstarter'/><title type='text'>In Profundis progress (4/20)</title><content type='html'>Today was mostly consumed writing an article on fluid simulation using cellular automation.&amp;nbsp; It links to the Kickstarter project page, hopefully it'll enable the project to keep up its momentum.&lt;br /&gt;&lt;br /&gt;Program progress: image loading code for sprites, drawing animations, prep work for the platforming engine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-4939259378382702048?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/4939259378382702048/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/04/in-profundis-progress-420.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/4939259378382702048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/4939259378382702048'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/04/in-profundis-progress-420.html' title='In Profundis progress (4/20)'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-4830290477451816343</id><published>2011-04-19T01:43:00.000-07:00</published><updated>2011-04-19T01:43:53.357-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='art'/><category scheme='http://www.blogger.com/atom/ns#' term='progress'/><category scheme='http://www.blogger.com/atom/ns#' term='inspirations'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>Progress (4/18)</title><content type='html'>Not a lot of programming work today, but I did draw some graphics for the player.&lt;br /&gt;&lt;br /&gt;The next objective for development, I think, is to implement basic gameplay, if just to show people how the game will work.&amp;nbsp; I imagine it as a kind of puzzle game, but with dynamic situations.&amp;nbsp; You want to cross that gaping pit; how will you do it?&amp;nbsp; You could parachute to the bottom then climb the rear wall with pitons, you could use spanners to cross the gap, you could mine down on your side beneath the gap and tunnel up the other side, you could find water above and flood the hole, or you could try other things.&amp;nbsp; You have a good number of tools each with precise uses, and each is good for overcoming a certain kind of situation.&amp;nbsp; Used in concert you can go almost anywhere, but you can't carry them all with you at once, you aren't nearly strong enough.&amp;nbsp; So there will be situations you can't get out of, but with skill and ingenuity you can minimize those.&lt;br /&gt;&lt;br /&gt;It occurred to me just now that the game's really kind of an amalgam of concepts from other games mixed together.&amp;nbsp; It's got the play structure of Solar Jetman (returning periodically to base to resupply and drop off treasure), the loneliness of Metroid, the dynamic difficult situations of a roguelike, the rocks of Boulder Dash, the fluids of Falling Sand, and probably a half-dozen other elements I haven't noticed yet.&amp;nbsp; Dwarf Fortress, Minecraft and Spelunky are in there a bit, too.&amp;nbsp; Take note budding creators out there: &lt;i&gt;all creation is like this&lt;/i&gt;.&amp;nbsp; You can't create something from nothing; all invention is combination.&amp;nbsp; In my recognition of my inspirations I'm just more explicit about it than others might be.&amp;nbsp; (And many games, when it comes down to it, borrow from the same games over and over again.&amp;nbsp; Super Mario Bros, DOOM, Dune II, etc.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-4830290477451816343?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/4830290477451816343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/04/progress-418.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/4830290477451816343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/4830290477451816343'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/04/progress-418.html' title='Progress (4/18)'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-8834975492726815581</id><published>2011-04-17T01:28:00.000-07:00</published><updated>2011-04-17T01:28:34.467-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='progress'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='diary'/><title type='text'>In Profundis: Today's progress (4/17)</title><content type='html'>Modified terrain generation to make much more interesting terrain, from a game standpoint.&amp;nbsp; (More flat ledges, fewer tall walls.)&amp;nbsp; Real gameplay isn't implemented yet, but when it is this will pay off.&lt;br /&gt;&lt;br /&gt;Created a new type of pseudo-fluid, "sediment."&amp;nbsp; Sediment is mostly non-reactive and it doesn't flow.&amp;nbsp; Instead, it forms smooth ramps and uneven floors.&amp;nbsp; Real liquids tend to pool in depressions in these floors.&amp;nbsp; Further modified terrain generation to lay some sediment, creating nicely sloping floors.&amp;nbsp; More will be done with this soon to create more playable terrain.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-8834975492726815581?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/8834975492726815581/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/04/in-profundis-todays-progress-417.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/8834975492726815581'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/8834975492726815581'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/04/in-profundis-todays-progress-417.html' title='In Profundis: Today&apos;s progress (4/17)'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-535152762251920892</id><published>2011-04-16T17:36:00.000-07:00</published><updated>2011-04-16T17:36:31.157-07:00</updated><title type='text'>First day of Kickstarter project, dev progress</title><content type='html'>Have gotten six backers in the first day, which isn't too bad I guess  although they were mostly people I know or quasi-know.&amp;nbsp; Up to $280 of a  goal of $5,000.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now that the project is launched I can feel okay in working on it  some I think.&amp;nbsp; I'm working on smoothing out the floors a bit so it's  not quite so much about exploring the caves of Cubeland.&amp;nbsp; The player's  character will probably only be about a block tall, so it's important  that there are some slopes here and there.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I've also worked somewhat on the terrain generation.&amp;nbsp; Caves don't  care much about whether they're vertical spaces or not, but for  gameplay purposes it's important that there are lots of plateaus to walk  along.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-535152762251920892?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/535152762251920892/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/04/first-day-of-kickstarter-project-dev.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/535152762251920892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/535152762251920892'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/04/first-day-of-kickstarter-project-dev.html' title='First day of Kickstarter project, dev progress'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-6967720729088651235</id><published>2011-04-16T12:38:00.000-07:00</published><updated>2011-04-16T12:38:23.769-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='launch'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='kickstarter'/><category scheme='http://www.blogger.com/atom/ns#' term='fundraising'/><title type='text'>IN PROFUNDIS Kickstarter project has launched!</title><content type='html'>The page is up on Kickstarter now:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.kickstarter.com/projects/445452543/in-profundis-random-cave-exploration-sim-game"&gt;http://www.kickstarter.com/projects/445452543/in-profundis-random-cave-exploration-sim-game&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Go have a look!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-6967720729088651235?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/6967720729088651235/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/04/in-profundis-kickstarter-project-has.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/6967720729088651235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/6967720729088651235'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/04/in-profundis-kickstarter-project-has.html' title='IN PROFUNDIS Kickstarter project has launched!'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-6541496625550585058</id><published>2011-04-16T00:55:00.001-07:00</published><updated>2011-04-16T00:55:40.316-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='pitch'/><category scheme='http://www.blogger.com/atom/ns#' term='voiceover'/><category scheme='http://www.blogger.com/atom/ns#' term='testbed'/><category scheme='http://www.blogger.com/atom/ns#' term='engine'/><category scheme='http://www.blogger.com/atom/ns#' term='fallingsand'/><category scheme='http://www.blogger.com/atom/ns#' term='cellularautomation'/><category scheme='http://www.blogger.com/atom/ns#' term='kickstarter'/><category scheme='http://www.blogger.com/atom/ns#' term='youtube'/><title type='text'>Second pitch video</title><content type='html'>This is mostly the same as the one on Kickstarter:&lt;br /&gt;&lt;br /&gt;&lt;iframe allowfullscreen="" frameborder="0" height="390" src="http://www.youtube.com/embed/hfLDmgWEmDQ?rel=0" title="YouTube video player" width="480"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-6541496625550585058?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/6541496625550585058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/04/second-pitch-video.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/6541496625550585058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/6541496625550585058'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/04/second-pitch-video.html' title='Second pitch video'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/hfLDmgWEmDQ/default.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-8723628749420456698</id><published>2011-04-16T00:45:00.001-07:00</published><updated>2011-04-16T00:45:57.857-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gameplay'/><category scheme='http://www.blogger.com/atom/ns#' term='caves'/><category scheme='http://www.blogger.com/atom/ns#' term='caverns'/><category scheme='http://www.blogger.com/atom/ns#' term='wisdomofstone'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='backstory'/><category scheme='http://www.blogger.com/atom/ns#' term='narrative'/><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>Background information: The wisdom of stone</title><content type='html'>At the Cavern Exploration School at Alpha Centauri, they teach about  the many dangers of spelunking throughout the known galaxy: landslides,  sudden washouts, poisonous gas, sand buryings, gaping pits, acid baths,  equipment failure, alien monsters, suffocation.&lt;br /&gt;&lt;br /&gt;But as Doctor of  Speleology and veteran explorer Mendius Schlum says as the first lesson  in his class "The Fundamentals of Caving," the primary danger facing any  cavern explorer is, ultimately, rocks.&lt;br /&gt;This prompts the more alert students to ask, what kind of rocks?&amp;nbsp; Cracked and weakened?&amp;nbsp; Corrosive?&amp;nbsp; Radioactive?&amp;nbsp; Explosive?&lt;br /&gt;&lt;br /&gt;"No, not that kind of rocks," says Schlum.&amp;nbsp; "The rocks you most have to worry about are your own.&amp;nbsp; The rocks in your head!"&lt;br /&gt;&lt;br /&gt;As  he goes on to explain, most of the dangers a cave explorer faces are,  ultimately, those of their own making.&amp;nbsp; Over thousands of years, caves  settle into a situation of minimum energy.&amp;nbsp; Landslides don't happen  randomly; if they were going to, they'd probably have done it centuries  ago.&amp;nbsp; Over time, rocks, water, sand and stone, they settle.&amp;nbsp; But that  state of equiliberum can upset easily.&amp;nbsp; A pushed boulder could release a  deluge of water, washing the sand from in front of a sealed cave,  releasing poisonous gas.&amp;nbsp; Whatever you do, you must do it with care,  lest you set in motion a chain of events that could spell your doom.&lt;br /&gt;&lt;br /&gt;And  yet, everything you do in such an environment changes it.&amp;nbsp; Your  footsteps echo across the stone vaults, possibly unsettling a pile of  rocks.&amp;nbsp; The pitons you hammer into sheer stone walls to climb them  unavoidably damage those same walls.&amp;nbsp; To pass a blocked route requires  pushing boulders.&amp;nbsp; To find sunken chambers, you have to swim.&amp;nbsp; Even the  air you breathe is a limited resource.&lt;br /&gt;So, you're in an  environment in which everything you do could be foolish, because just  being there is foolish.&amp;nbsp; But here you are anyway.&amp;nbsp; According to Schlum,  learning what choices are less foolish than others is the beginning of  wisdom.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;The wisdom of stone.&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-8723628749420456698?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/8723628749420456698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/04/background-information-wisdom-of-stone.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/8723628749420456698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/8723628749420456698'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/04/background-information-wisdom-of-stone.html' title='Background information: The wisdom of stone'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-4707435547194362646</id><published>2011-04-16T00:44:00.000-07:00</published><updated>2011-04-16T00:44:08.718-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gameplay'/><category scheme='http://www.blogger.com/atom/ns#' term='caverns'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='narrative'/><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>Gameplay narrative #2</title><content type='html'>"If I hadn't brought that emergency parachute I'd be dead now, killed  by that 200-meter fall.&amp;nbsp; I survived that, but how am I going to get out  of here?&amp;nbsp; The shaft ends high in the ceiling above me, so I can't use  pitons.&amp;nbsp; I could climb up a side wall and extend a spanner out, but  they're heavy so I only brought one and it won't get me up high enough.&amp;nbsp;  And the expedition isn't yet profitable enough to use high-tech tools  like jet packs.&amp;nbsp; I did find some gold nuggets down here; if I can make  it out, maybe that jet pack will be mine yet.&lt;br /&gt;&lt;br /&gt;"A thought.&amp;nbsp; Water  is dripping through cracks in that wall.&amp;nbsp; If I hammered at that a little  I might break through and flood the chamber.&amp;nbsp; I could use one of my  compressed air canisters to fill my inflatable life raft, break the  wall, then ride the flood back up to the shaft.&lt;br /&gt;&lt;br /&gt;"The situation  looking dire, I inflated the raft before smashing through, weighing the  possible wasting of an air canister against the water damage to my  equipment if I had to swim.&amp;nbsp; Fortunately it was more than enough water  to fill the chamber.&amp;nbsp; By the time the flow died down I was up to the  shaft and even partway through.&amp;nbsp; I hammered the pitons into the wall to  give myself handholds for the remaining distance, noting with concern  the cracks forming in the stone surface as I did.&amp;nbsp; That might be trouble  later.&lt;br /&gt;&lt;br /&gt;"Back at base I had the nuggets appraised.&amp;nbsp; They were only  worth 1,500 credits, enough to replace my used equipment and then some,  but not nearly enough for the jet pack.&amp;nbsp; The word from the natives is  that there are incredibly ancient ruins down there, unseen for  millennia, loaded with treasures both historical and valuable.&amp;nbsp; I'm more  interested in the latter, but either would make the expedition a  success.&amp;nbsp; I hope I find something soon; the equipment needed to explore  these alien caverns isn't cheap, and so far profits have been barely  worth the dangers.&lt;br /&gt;&lt;br /&gt;"But I'm getting close.&amp;nbsp; I can feel it.&amp;nbsp; Maybe this next trip will be the one."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-4707435547194362646?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/4707435547194362646/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/04/gameplay-narrative-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/4707435547194362646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/4707435547194362646'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/04/gameplay-narrative-2.html' title='Gameplay narrative #2'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-6248948222739214030</id><published>2011-04-13T02:45:00.001-07:00</published><updated>2011-04-13T02:46:53.853-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='pitch'/><category scheme='http://www.blogger.com/atom/ns#' term='caves'/><category scheme='http://www.blogger.com/atom/ns#' term='caverns'/><category scheme='http://www.blogger.com/atom/ns#' term='demo'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='kickstarter'/><title type='text'>IN PROFUNDIS pitch and demo video</title><content type='html'>&lt;a href="http://www.youtube.com/watch?v=UaeRtgPhBh8"&gt;http://www.youtube.com/watch?v=UaeRtgPhBh8&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/UaeRtgPhBh8?hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/UaeRtgPhBh8?hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-6248948222739214030?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/6248948222739214030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/04/in-profundis-pitch-and-demo-video.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/6248948222739214030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/6248948222739214030'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/04/in-profundis-pitch-and-demo-video.html' title='IN PROFUNDIS pitch and demo video'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-8523471110507742709</id><published>2011-04-13T02:09:00.000-07:00</published><updated>2011-04-13T02:09:08.592-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='caves'/><category scheme='http://www.blogger.com/atom/ns#' term='sandbox'/><category scheme='http://www.blogger.com/atom/ns#' term='caverns'/><category scheme='http://www.blogger.com/atom/ns#' term='newproject'/><category scheme='http://www.blogger.com/atom/ns#' term='inprofundis'/><category scheme='http://www.blogger.com/atom/ns#' term='cellularautomation'/><category scheme='http://www.blogger.com/atom/ns#' term='project'/><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>New Project: IN PROFUNDIS</title><content type='html'>Coming to Kickstarter soon!&amp;nbsp; This is really promising, so watch this space!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-8523471110507742709?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/8523471110507742709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/04/new-project-in-profundis.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/8523471110507742709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/8523471110507742709'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2011/04/new-project-in-profundis.html' title='New Project: IN PROFUNDIS'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-5044502050135169291</id><published>2010-10-31T21:12:00.001-07:00</published><updated>2010-10-31T21:12:44.101-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='newproject'/><title type='text'>New project</title><content type='html'>New project in the works. &amp;nbsp;More news soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-5044502050135169291?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/5044502050135169291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2010/10/new-project.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/5044502050135169291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/5044502050135169291'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2010/10/new-project.html' title='New project'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-5616555215937138579</id><published>2010-08-31T16:52:00.000-07:00</published><updated>2010-08-31T16:52:39.669-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mayflight'/><title type='text'>Mayflight unveiled</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_U7wiDHBX4gA/TH1FsR_3NZI/AAAAAAAAAeU/MZ4E2EqTAaY/s1600/screenshot102.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="181" src="http://4.bp.blogspot.com/_U7wiDHBX4gA/TH1FsR_3NZI/AAAAAAAAAeU/MZ4E2EqTAaY/s320/screenshot102.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_U7wiDHBX4gA/TH1FokfdtrI/AAAAAAAAAeA/wTSOJ2a8B7A/s1600/MAYFLIGHT_9001288004608.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="113" src="http://4.bp.blogspot.com/_U7wiDHBX4gA/TH1FokfdtrI/AAAAAAAAAeA/wTSOJ2a8B7A/s200/MAYFLIGHT_9001288004608.png" width="200" /&gt;&lt;/a&gt;My secret project, a procedural exploratory game for YoYoGames' summer competition, is ready to show the world.&amp;nbsp; It is called &lt;a href="http://www.yoyogames.com/games/133155-mayflight#"&gt;Mayflight&lt;/a&gt;.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_U7wiDHBX4gA/TH1FhRRDYBI/AAAAAAAAAdU/sw_HS9O2e88/s1600/areaimg_1140319445.png" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="113" src="http://3.bp.blogspot.com/_U7wiDHBX4gA/TH1FhRRDYBI/AAAAAAAAAdU/sw_HS9O2e88/s200/areaimg_1140319445.png" width="200" /&gt;&lt;/a&gt;&lt;br /&gt;It's  sort of like a Metroidvania in some ways. &amp;nbsp;It is a platformer, and you  explore a big mappable space looking for powerups and fighting  monsters.&amp;nbsp; However, it has no end.&amp;nbsp; The game world is randomly created  every game, and has no edges.&amp;nbsp; Exploring out several areas, bring up the  map and zooming out, then seeing the trail of blue rooms extending  off-screen is kind of fascinating.&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_U7wiDHBX4gA/TH1FjFnOkmI/AAAAAAAAAdg/wNS57MVRg3A/s1600/areaimg_3998500295452.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="113" src="http://3.bp.blogspot.com/_U7wiDHBX4gA/TH1FjFnOkmI/AAAAAAAAAdg/wNS57MVRg3A/s200/areaimg_3998500295452.png" width="200" /&gt;&lt;/a&gt;&lt;br /&gt;Also,  the powerup/map dynamic isn't the Russian nesting doll setup of  ever-increasing exploration spheres made available by finding new  equipment.&amp;nbsp; Instead your character, Aurora the fairy, is weak in ability  at the start, but becomes stronger generally in various areas by  finding powerups.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_U7wiDHBX4gA/TH1FpBXahgI/AAAAAAAAAeE/iYmaTBPd6Zs/s1600/MAYFLIGHT_10001288004608.png" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="113" src="http://2.bp.blogspot.com/_U7wiDHBX4gA/TH1FpBXahgI/AAAAAAAAAeE/iYmaTBPd6Zs/s200/MAYFLIGHT_10001288004608.png" width="200" /&gt;&lt;/a&gt;Because  there's no end to the world, and the powerups increase ability rather  than grant new ones, the point of the game changes. &amp;nbsp;There is a time  limit, and the idea is to go as far as you can during it.&amp;nbsp; Although it  starts at only ten seconds, you can extend it continually by finding  "sparks," which are scattered around with the ubiquity of Mario's  coins.&amp;nbsp; The game is played for high score.&amp;nbsp; The two scores provided are  raw distance from the starting location upon death, and a more  traditional score that generally measures playing ability and  accomplishment.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_U7wiDHBX4gA/TH1FqjvIvII/AAAAAAAAAeM/Zq5-ff7GlqE/s1600/MAYFLIGHT_999998178502159.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="113" src="http://4.bp.blogspot.com/_U7wiDHBX4gA/TH1FqjvIvII/AAAAAAAAAeM/Zq5-ff7GlqE/s200/MAYFLIGHT_999998178502159.png" width="200" /&gt;&lt;/a&gt;Playing  it, it seems to have a nice balance to me.&amp;nbsp; The monsters are  challenging without being overwhelming (at least not until you have had a  chance to power up), the constant need to extend your lifespan means  there is little downtime, and it's challenging while possible to survive  for more than an hour with good play.&amp;nbsp; I was even able to squeeze a  couple of covert pinball references into the game's interface.&amp;nbsp; I'm  particularly proud of the background generator, which is able to produce  a wide variety of interesting dynamically-generated looks for areas for  relatively little processor time.&amp;nbsp; I post some of the more interesting  screens I've seen it generate here.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_U7wiDHBX4gA/TH1FqAej7NI/AAAAAAAAAeI/xY9kD4Pba1s/s1600/MAYFLIGHT_11001288004608.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="113" src="http://1.bp.blogspot.com/_U7wiDHBX4gA/TH1FqAej7NI/AAAAAAAAAeI/xY9kD4Pba1s/s200/MAYFLIGHT_11001288004608.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_U7wiDHBX4gA/TH1FnzY64lI/AAAAAAAAAd8/w4vWQ-7B1tA/s1600/MAYFLIGHT_6998381924608.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="113" src="http://3.bp.blogspot.com/_U7wiDHBX4gA/TH1FnzY64lI/AAAAAAAAAd8/w4vWQ-7B1tA/s200/MAYFLIGHT_6998381924608.png" width="200" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/_U7wiDHBX4gA/TH1FrCgQcfI/AAAAAAAAAeQ/YVgjINbfUx8/s1600/MAYFLIGHT_999998178502160.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="113" src="http://4.bp.blogspot.com/_U7wiDHBX4gA/TH1FrCgQcfI/AAAAAAAAAeQ/YVgjINbfUx8/s200/MAYFLIGHT_999998178502160.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_U7wiDHBX4gA/TH1FgviGWGI/AAAAAAAAAdQ/dPHk76gtx4g/s1600/areaimg_28921750.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="113" src="http://4.bp.blogspot.com/_U7wiDHBX4gA/TH1FgviGWGI/AAAAAAAAAdQ/dPHk76gtx4g/s200/areaimg_28921750.png" width="200" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_U7wiDHBX4gA/TH1FkkYCEfI/AAAAAAAAAdo/3tNveQiyZFg/s1600/areaimg_7001379507313.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="113" src="http://2.bp.blogspot.com/_U7wiDHBX4gA/TH1FkkYCEfI/AAAAAAAAAdo/3tNveQiyZFg/s200/areaimg_7001379507313.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_U7wiDHBX4gA/TH1FkAgrXTI/AAAAAAAAAdk/jutqubNVTXM/s1600/areaimg_4001332492118.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="113" src="http://3.bp.blogspot.com/_U7wiDHBX4gA/TH1FkAgrXTI/AAAAAAAAAdk/jutqubNVTXM/s200/areaimg_4001332492118.png" width="200" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_U7wiDHBX4gA/TH1FilxxfwI/AAAAAAAAAdc/w1oMtBmXNRs/s1600/areaimg_1001278088577.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="113" src="http://2.bp.blogspot.com/_U7wiDHBX4gA/TH1FilxxfwI/AAAAAAAAAdc/w1oMtBmXNRs/s200/areaimg_1001278088577.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_U7wiDHBX4gA/TH1FlR45sII/AAAAAAAAAds/B1t0CkujJuA/s1600/areaimg_15000655240173.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="113" src="http://3.bp.blogspot.com/_U7wiDHBX4gA/TH1FlR45sII/AAAAAAAAAds/B1t0CkujJuA/s200/areaimg_15000655240173.png" width="200" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/_U7wiDHBX4gA/TH1FmJXETcI/AAAAAAAAAdw/Bf4LoVe58l0/s1600/MAYFLIGHT_689466829.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="113" src="http://4.bp.blogspot.com/_U7wiDHBX4gA/TH1FmJXETcI/AAAAAAAAAdw/Bf4LoVe58l0/s200/MAYFLIGHT_689466829.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_U7wiDHBX4gA/TH1Fm2Zg-oI/AAAAAAAAAd0/nB9gm3yPykc/s1600/MAYFLIGHT_1192954157.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="113" src="http://2.bp.blogspot.com/_U7wiDHBX4gA/TH1Fm2Zg-oI/AAAAAAAAAd0/nB9gm3yPykc/s200/MAYFLIGHT_1192954157.png" width="200" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_U7wiDHBX4gA/TH1FncyLlHI/AAAAAAAAAd4/OLgv-cQVsog/s1600/MAYFLIGHT_1194954156.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="113" src="http://2.bp.blogspot.com/_U7wiDHBX4gA/TH1FncyLlHI/AAAAAAAAAd4/OLgv-cQVsog/s200/MAYFLIGHT_1194954156.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-5616555215937138579?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/5616555215937138579/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2010/08/mayflight-unveiled.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/5616555215937138579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/5616555215937138579'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2010/08/mayflight-unveiled.html' title='Mayflight unveiled'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_U7wiDHBX4gA/TH1FsR_3NZI/AAAAAAAAAeU/MZ4E2EqTAaY/s72-c/screenshot102.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-1517658885314968537</id><published>2010-07-20T13:13:00.000-07:00</published><updated>2010-07-21T13:34:02.142-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mayflight'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><title type='text'>Project: Mayflight (as of build 097)</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_U7wiDHBX4gA/TEYCrVwhNdI/AAAAAAAAAck/o7fpg6GGnJc/s1600/mf097-a.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="179" src="http://4.bp.blogspot.com/_U7wiDHBX4gA/TEYCrVwhNdI/AAAAAAAAAck/o7fpg6GGnJc/s320/mf097-a.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_U7wiDHBX4gA/TEYCt2ygTpI/AAAAAAAAAcs/4_LO8_zPcmQ/s1600/mf097-c.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="179" src="http://2.bp.blogspot.com/_U7wiDHBX4gA/TEYCt2ygTpI/AAAAAAAAAcs/4_LO8_zPcmQ/s320/mf097-c.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_U7wiDHBX4gA/TEYCuAweA-I/AAAAAAAAAcw/Zfip27TxViI/s1600/mf097-d.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="179" src="http://4.bp.blogspot.com/_U7wiDHBX4gA/TEYCuAweA-I/AAAAAAAAAcw/Zfip27TxViI/s320/mf097-d.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;My current game project is a weird experiment in algorithmic world creation called Mayflight.  In it, players guide Aurora the fairy through an infinite expanse of terrain created by the game.&lt;br /&gt;&lt;br /&gt;The following information describes the game's "main" mode.  Many more are planned, most with radically different game rules.  I call it the main mode because it is the one players are intended to play first, but the idea of exploring an infinite expanse of terrain is powerful, and there are many variant game types to be explored.&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;As the game's name implies, Aurora doesn't live very long.  You must constantly collect &lt;i&gt;sparks&lt;/i&gt; scattered around the game world to extend her lifespan.  The further you get from the start, the rarer sparks become.  The idea is to see how far you can get before time expires.&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_U7wiDHBX4gA/TEYCtFkyl7I/AAAAAAAAAco/EhMSXIvN4h8/s1600/mf097-b.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="179" src="http://1.bp.blogspot.com/_U7wiDHBX4gA/TEYCtFkyl7I/AAAAAAAAAco/EhMSXIvN4h8/s320/mf097-b.png" width="320" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/_U7wiDHBX4gA/TEYCvhsAd7I/AAAAAAAAAc8/H0bWrp4IAoQ/s1600/mf097-g.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="179" src="http://4.bp.blogspot.com/_U7wiDHBX4gA/TEYCvhsAd7I/AAAAAAAAAc8/H0bWrp4IAoQ/s320/mf097-g.png" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;You the need to collect more time to get further, but the further you go the less extra time there is to be had.  The player's skill in maneuvering and collecting determines how far Aurora can get.&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_U7wiDHBX4gA/TEYCvwxmTzI/AAAAAAAAAdA/yeLISxZY4Zw/s1600/mf097-h.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="179" src="http://2.bp.blogspot.com/_U7wiDHBX4gA/TEYCvwxmTzI/AAAAAAAAAdA/yeLISxZY4Zw/s320/mf097-h.png" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;To add a bit of an edge to it, to push the difficulty balance further in the direction of control skill instead of just will to act, Aurora is just a little difficult to control.  This balances the game between hardcore and casual in style: hardcore in that players can improve and learn to play better to improve their score, casual in that it is still fun to just run and jump and flap through the random game worlds.&lt;br /&gt;&lt;br /&gt;Aurora is no airy spirit but has weight, and gravity is quite high in most areas.  She can run fast and gets much faster during the game, and she can jump (when fully powered up) an entire screen in height.  To aid the player in being able to bring more skill to bear in playing the game, it uses predictive scrolling to attempt to keep the screen focused in the direction you're going, which makes it possible, for an advanced player, to pull off some tricky jumps on short notice.  &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_U7wiDHBX4gA/TEYCulwa7-I/AAAAAAAAAc0/1yNZl5JB-_k/s1600/mf097-e.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="179" src="http://1.bp.blogspot.com/_U7wiDHBX4gA/TEYCulwa7-I/AAAAAAAAAc0/1yNZl5JB-_k/s320/mf097-e.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;There are two primary modes of control.  Aurora begins running and jumping.  She is much faster in this mode, and with powerups she can even maneuver vertically with some facility.  However, it is difficult to enter into narrow tunnels like this; she tends to rush past them.  Her jump control is Mario-style, that is, if you release the jump key/button before reaching the apex it ends early.  However, the top of Aurora's jumps is a bit sharper than Mario's; she can almost end her jumps with pinpoint accuracy.  (I'm not sure if this will remain in the game.)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_U7wiDHBX4gA/TEYCvRGEhNI/AAAAAAAAAc4/bT0bwBl3V84/s1600/mf097-f.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="179" src="http://4.bp.blogspot.com/_U7wiDHBX4gA/TEYCvRGEhNI/AAAAAAAAAc4/bT0bwBl3V84/s320/mf097-f.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;The other mode is flying.  While flying, Aurora can maneuver vertically by consecutive presses of the Flap button.  She can build up good vertical speed this way, but her horizontal speed is abysmal.  It can be improved with powerups, but even at maximum it is much better to run if you can help it.  Overall Aurora is much slower while in flight, for her wings provide air resistance, but often sparks are found in the air. &amp;nbsp;By the way, hitting the Flap button from the ground always results in a one-block "hop" that doesn't count as a flap, which is useful sometimes when running through bumpy terrain.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_U7wiDHBX4gA/TEYCwPmgjHI/AAAAAAAAAdE/NJ16ajlUPzA/s1600/mf097-i.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="179" src="http://3.bp.blogspot.com/_U7wiDHBX4gA/TEYCwPmgjHI/AAAAAAAAAdE/NJ16ajlUPzA/s320/mf097-i.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;One of the key decisions players have to make, constantly, is whether sparks are worth going out of their way for.  The more time you have the less each spark is worth.  If you have less than a minute, then each is worth two seconds.  Over that, the time granted by collecting a spark decreases linearly, to just half a second at the five minute mark.  Currently I can get the clock up to about 3:40, but the game is probably a bit too easy at the moment.  The scaling time awards help to even out the vagaries of the random generation, and games usually reach a peak time at which it holds for a while before going into a slow decline.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-1517658885314968537?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/1517658885314968537/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2010/07/project-mayflight-as-of-build-097.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/1517658885314968537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/1517658885314968537'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2010/07/project-mayflight-as-of-build-097.html' title='Project: Mayflight (as of build 097)'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_U7wiDHBX4gA/TEYCrVwhNdI/AAAAAAAAAck/o7fpg6GGnJc/s72-c/mf097-a.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395743605854105890.post-1777689358978394583</id><published>2010-07-20T11:59:00.000-07:00</published><updated>2010-07-20T12:00:13.688-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coindoorinterlock'/><category scheme='http://www.blogger.com/atom/ns#' term='welcome'/><title type='text'>Coin Door Interlock</title><content type='html'>If you go up to certain 90s-era Williams pinball machine (you know, the &lt;i&gt;insanely awesome&lt;/i&gt; ones), put an operators' key into the front and swung out the front part with the coin slots, the following message will flash on the dot-matrix scoreboard:&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;b&gt;COIN DOOR INTERLOCK DISABLES HIGH POWER&lt;/b&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;I always thought there was a kind of poetry to those words.  The syllables are 1,1,3,3,1,2, the stresses: cOIn dOOr INterlock disAbles HIgh POWer.  I love it so much that I decided my development blog will go by that name.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flippers.be/basics/101-interlock_switch.html"&gt;This page&lt;/a&gt; discusses the origin of the term.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395743605854105890-1777689358978394583?l=coindoorinterlock.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://coindoorinterlock.blogspot.com/feeds/1777689358978394583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://coindoorinterlock.blogspot.com/2010/07/coin-door-interlock.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/1777689358978394583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395743605854105890/posts/default/1777689358978394583'/><link rel='alternate' type='text/html' href='http://coindoorinterlock.blogspot.com/2010/07/coin-door-interlock.html' title='Coin Door Interlock'/><author><name>John Harris</name><uri>https://profiles.google.com/117764495791250948051</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-NZD7s7kYT1U/AAAAAAAAAAI/AAAAAAAAA4U/eQKjkPOQR6A/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry></feed>
