Games‎ > ‎

Enderscope's Game

Sweeping scanner showing tumour; instructions and score.


You are performing laparoscopic surgery (using an endoscope) to excise (remove) a life-threatening cancerous tumour from this patient. You must remove as much tumour as possible while damaging minimal healthy tissue. You will be (would be in a finished version) scored on surgical outcome -- least damage to patient through minimal back-and-forth of endoscope, minimization of healthy tissue removed and, most importantly, removing *all* of the cancerous tissue. Failure to remove some can cause metastasis (spreading of infection to other parts of the body).

<spoiler alert> Enderscope's Game! Playing this game, in the finished version, the final rounds have you unknowingly treating live patients! ;-) </spoiler>

Enderscope's Game game-play video (low-quality)

Hidden tumour revealed by scan Digging toward hidden tumour Hidden tumour mostly treated (as revealed by scanner)


 Post-jam  Windows   OS/X   Linux 
 Jam  Windows   OS/X   Linux 

Original Ludum Dare entry page (showing feedback and scoring).


This was created during the global game competition, Ludum Dare where one has either 48 or 72 hours to create a game on the published theme.  Like many, I use game competitions to learn and experiment.  This time, my main goal was to use some of the Unity3D assets that I had previously purchased when they'd been on sale.

When the theme was announced as "Under the surface", I realised I could use the voxel engine I'd previously purchased -- TerraVol.   I also decided to experiment with the Livity live coding tool.  TerraVol proved invaluable but incapable of doing the main function I needed of it -- digging away to reveal what lay beneath.  Luckily, since it was supplied in source form, I successfully added this capability and fed it back to the author.  Add in a ray cast and some graphics and we had our cauterizing laser.  Another omission was the ability to count cell types in order to score.  I added and fed this back too.

Aesthetically, I wanted the internal walls of the patient to throb with pumping blood.  This meant a custom shader.  Voxel engines often shade with a tri-planar shader.  These colour and texture the surfaces differently depending upon their orientation -- a surface facing up might show grass whereas one facing sideways might show rock (to draw a mountain).  One of their advantages is that they need no UV coordinates which the voxel engine does not provide.  To achieve the look I envisaged, I found and adapted a tri-planar shader amongst the other assets I had (since the TerraVol one was provided in compiled form).  The shader provides the disturbing throbbing by extruding the voxel surface in a sine wave based on time.  Further work could be done to improve the junctions between the primary axes (i.e. as the surface curves around, one would expect to see the pores stretching and shrinking rather than sliding over the surface).

Part of the game-play was to include having to find tumours beneath the surface of the internals (while being beneath the patient's surface).  For this, I developed a visualization of hidden things.  The sweeping scanner finds all within a sphere and uses another custom shader to visualize.  This one looked sufficiently interesting that it is being prepared for publication on the Unity Asset Store.  Its further development led to the creation of the Gaarghoyles game.

All-in-all, the game came out pretty well.  Sadly, Real Life meant I only got about 8-10 hours of actual work in the 72 of the jam.  For that, the game lacks the usual trappings of a game -- start & end -- so the only satisfaction you'll get from excising all the tumour here is seeing a zero in the GUI!  As such, it is more 'demo' than game.

After the competition, I did some more work on the scanner, added the GUI and ported to Android using Virtual Control Suite for on-screen controls.  It also occurred to me that the experience could be made even more visceral with virtual reality.  As such, I integrated Durovis Open Dive library as an experiment.  This proved sufficiently successful that I then modified its use for the standalone mobile version allowing looking around by moving the phone.

Unless there's sufficient interest or obvious advantage to continued work, this project has fulfilled its intention so will likely not be taken much further.  I welcome any thoughts or contacts for its use.

Here are the working development notes written during development.  Unsurprisingly they're not incredibly clear but show some steps during development (brainstorming, idea development, future potentials, voxel engine notes, tri-planar shader adaptation).  Oldest parts at bottom.

Development notes