jsandusky

LD27

Shark Jam Progress

Shark jam has been tight – ironically – I’ve spent a quarter of the first day of jam laying block wall for a pond. Luckily I’m using LibGDX, Opal, Demina, and whatever random existing code makes sense. Opal is really making the process faster than I’d expect.

Main menu (title is a working title) – everything except the title and background move (the fish buttons wobble and the seaweed waves back and forth):

Pistris Main menu

 

For the time being I’m referring to the project as “Pistris” which is apparently one of the ‘two thousand’ latin words that can mean shark. I chose it because it’s cuter and more feminine sounding than anything else I found.

Pistris is an adorable anthromorphic Lemurian shark-girl exploring her abandoned home-land that she’s never seen. Shoggoths and Old-ones to be found.

At this point it’s mostly about testing that the code I’ve written works and creating/finding the graphics and sound to make it all happen (main character is about 75%) while filling in the puzzles and implementing the bosses.

Target quota is for 4 or 5 regular enemies, 3 bosses and 8 maps, 4 of which have puzzles and the other three are for exploration (yes I said 3 – not 4 – that means 1 secret level hiding around). Trying to make the puzzles have multiple solutions where possible (ie you can grab the invincibility Starfish and just ram through the hopeless gauntlet or you can find the Quad-Damage and just gun your way through – similar though different ways to get to through a “you’re screwed” situation.

In research I’ve learned that apparently no one has ever drawn a Shoggoth in its’ home environment (which would be underwater).

The biggest time sync so far ended up being screen-filters tied to area triggers which I’ve stripped out and replaced with a much simpler approach that should still allow for a fair bit of dramatic flare as you navigate the underwater corridors.

Shark-jam Failure Post-mortem

My first LD of any kind and I missed the 12pm deadline.

sharkjam2

What I did wrong

  • Under-tested tools, I wrote the Demina and Opal readers for LibGdx myself – this is the first time they’ve been put to the test. Demina was no hassle, but my implementation of the Opal reader made for a considerable amount of work. Some poor design decisions in custom entity handling lead to constant crashes that while easy to fix were just as easy to miss (thankfully, the crashes were all obvious)
  • Using Box2d was a bad decision all around. I explode the jellyfish and barracuda into pieces as well as the bubbles Pistris shoots. At least under JNI situations if you spawn too many box2d bodies too close to each other … crash. I ate 3 hours figuring out that I had to apply these ‘effects’ only one at a time across the update cycles so they had a moment to disperse.
  • Undetermined workflow. While Demina works nicely – I had no understanding of how to quickly break apart my mostly flat drawn characters into pieces to use effectively with it. I didn’t figure it out until about 5 hours after Shark-jam ended. Ultimately it was quite easy, but I was not aware of the Photoshop features that made it easy at the time.
  • Spent too much time on features that I didn’t really need. I wrote an entire screen filtering system. Initially this was to apply a watery effect over the rendered view … but the itch struck and a few hours later it could render additively, multiply, pan, and distort.
  • Working off of a laptop –  I live in a solar powered home so it made sense this time of year but I should have attached a keyboard. I lost time on fighting with a silly scissor switch keyboard layout constantly.

The awesome I took out of this jam

  • Converting photoshop layer groups into ‘Group into new Smart Object.’ So amazing.

Ultimately I learned a lot from this first MLD/jam.

My shark-jam code isn’t up there yet but any code I may have used for it is available at www.github.com/JSandusky

LD28

In for #28

I enjoyed shark jam enough to not be able to pass this up.

I’ll be using:

  • LibGdx nightly
  • Artemis (with PooledComponent from Artemis-odb merged in)
  • Lua via Luaj (http://luaj.org/luaj/README.html)
  • I might use either DarkTree or Procedurality Engine to generate some content (http://oddlabs.com/procedurality.php)
  • If the theme is really good: Blender python scripts in my github repo for exporting object properties/id-props/bge setup/etc (Blender-python)
  • If the theme is kinda lame: The Opal/LibGdx and Demina / DRT stuff in my github repos

GitHub: http://github.com/JSandusky

One ring to bind them

I was so set on “Corruption” and “Contamination” as the hopeful winners that the theme announcement irked me.

Then it kind of hit me after an hour. A big part of my corruption/contamination thoughts were corrupting the enemy AI in which case they would also become corrupt-ers of the world. Merging the “You Only Get One” theme with that might add a lot of nuance. You can only have one corrupted agent at a time, if you corrupt another enemy agent, then the currently corrupted will revert to it’s regular form – which could be very bad if it reverts deep in your territory.

Like a DotA format except you can force a team switch of anyone in a short proximity. Do you corrupt one of two attackers on your tower to insure it remains standing or do you fight it solo instead of taking letting your corrupted on the north lane off the leash where he’s tangling with another enemy. The odds have to be tough though, like 1 versus 4 tough, in which case it’d be 2 vs. 3 with a corrupted. Even or close odds would make the decision of whether to switch or not less serious.

Any one enemy may become your property, but only one. I thought it was a shit theme at first, but it could be fun, time to fire up Blender and get to work.

LD31

Progress here I come

A slow first day, a large portion of code is written and … hopefully working. Starting knocking out some of the art.

A lot of reusable scenery is done and drawn (lazily in illustrator … hail the brush strokes), and I’ve started whipping up the main scene.

progress

The entire game is on one room divider screen. Each panel of the screen is a level and the levels are rendered into a texture that gets overlaid on top of the active panel. As you clear stages you move from panel to panel along the screen.