Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags

Let's rock that Pico8 thing, oh dear, what am I even doing.

A topic by Gawain (DarkGriffin) created Jul 31, 2018 Views: 1,180 Replies: 13
Viewing posts 1 to 9
(+1)

Hi all!  Might as well get in gear and join up here.  Super excited to spend some time jamming, super stressed from work and life, time to rock!

I'll be doing Pico-8 this time, with the 64 pixel hack code to keep the res true 64 pixels.  I've developed a grand total of 2 released alphas on the system (which were unremarkable and quickly forgotten about by the community), and a pile of half crashing buggy silliness to remind myself I'm no programmer on my pocket chip.  So that makes me a total master in indie terms, right? :D 

PRO TIP:  I recently discovered you can enter floats for the "sprites to copy" command in this engine.  Since the sheet defaults to 8 by 8, this trick lets you blot 4 pixel wide sprites using 0.5 as the number of sprites.  Pretty sweet little trick.

Last time I did this jam, I used Clickteam Fusion, and the lack of limits made me scope way too far for the jam length.  (The result was eventually the game Drake, you can search and play it here on itch.io, but the road there was much longer then the jam time so the jam version was a single level amount of sad :p).  So I hope that by picking a more primitive engine, I can limit my scope better.

Got an ambitious prototype in mind for a random generated metroid-like experience.  (Good job, I just failed my scope objective and the timer hasn't even started. )

I've had the basic plans for almost a year, but never found an engine I was happy with to build it in.  My hope is that by making a scoped down version in a primitive software, I can motivate myself to get the real game out later.  Basically Drake project again.

Given the game engine I picked, and my current "super lua powers" of accessing empty null parts of tables 90% of the time,  It will be interesting to see how far I can get before breaking down into insanity and crawling under a table.  :p  Oh well, shoot for the moon, right?  

At least the graphics won't be a problem this time.  

I'll try to post at least one update a day during the jam to keep myself accountable.  So if nothing else, you get to read stuff from me.  My hope is the game ends up being more fun then reading this, but at least we have two weeks of posts like this to fall back on.

Let's rock!  And to everyone else entering, best of luck with your games!  This is a great jam to prototype stuff or just play around without needing to worry about graphical talents!

And a very special thanks to the jam hosts!

https://darkgriffin.itch.io/infinitroid

Day 1 build, yay!  Not much to see yet, but laying some groundwork for later.

I'm actually quite pleased with how far I've come in just over 24 hours!

I've got some code to draw only a corner of the sprite at a time.  In 64x64 res with 8 by 8 sprites, that gives each sprite 4 frames of animation.  Essentially I've multiplied the amount of animated frames without actually changing the amount of sprites.  The system requires I only plug in a sprite ID like normal pico-8 code.  The code call then will use a variable constantly ticking 1 to 4 to get the offset "real sprite location" from a table.

There's a modified version of this pulling tiles in for rendering.  Tiles can be set to any of the 4 offsets, or they can use offset 0 to have their x determine the offset.  The former is demoed by the ramp tiles, the latter is shown by the varying ground tiles.  (Which are actually 4 corners of a single sprite on the sheet).

I also got a basic player up and running, it's functional but not very good to play.  It can also run out the sides of the frame, among a few animation issues.  However, shooting and jumping are functional.  Should I run out of jam time/energy, this player sprite can do in a pinch.

Still up for development, in no particular order:

  • Get a basic hud display in place that will show the current upgrades, and eventually be expanded into a map and progress screen.
  • Get a map generation going, so we have a room layout to view.  This will be expanded upon to build the game map in layers, with difficulty data to help the game know what "area" the player is in.  My hope is to eventually have a "power up flow" for the map, meaning power A needs to be found to open Area B's doors, which contains power B for area C, and so on.  The areas might crisscross, but if that's too difficult to figure out, I will simply build in layers from bottom to top of map till it's filled, using the y axis to determine difficulty of the area.
  • Spawn doors, implement some sort of "fake scrolling" or "level scrolling" to allow room connections.  (I'm thinking for the first pass, I will be happy with static screens and a lame "take rendering, shift it, load new map" type deal.  Fancy comes after function.)
  • Get some prop spawning so I can place enemies/statues/doors later down the line.  (This is just layered on top of the current tile roof and floor generation system)
  • Spawn some enemies into the room layouts.  Give them rudimentary "AI" for some basic lame retro attack patterns.  Eventually the enemies will be broken into "difficulty area", so lower areas will spawn less of them, and the last, deepest area will be crowded.  My hope is this creates a difficulty scale up to the final boss.
  • Handle player death, respawn, and enemy drops.
  • Add a seed selection screen at boot, to let users enter a "planet name".  Then make the generation code reliably recreate rooms as they are revisited, so the game can be consistent for replays/speed running
  • Get some sound effects in place, cause guns are lame without PEW PEW PEW.
  • Get some music in place, bonus if music changes based on "map area" of the game.
  • Add at least 1 "Final Boss" room with a unique boss enemy.  Beating it should trigger the "Escape sequence", requiring the player to run back to the surface as fast as they can.  (The time will have to be a best guess and will most likely be too generous, but I'd rather have it that way instead of making the ending too hard/impossible on some seeds.)

It would be nice to get some pallet swapping or alternate tileset use going, better player physics, and some "save points", maybe even vertical room support aka metroid's shaft system.  I'm at 20% of the token compression cut off though.  So I may have to drop some of these depending on how much memory enemies, map, and progress system takes up.  Yay for limitations!

Lots of ground to cover, so little time.  I will check back in tomorrow, hopefully with at least 1 or 2 of the above marked off.  See ya!

Nice progress! Ridiculous as it is to say so early, it gives me sort of a Flashback vibe, at least based on the environment and your description of powering on doors to advance.

Version 2, bit of progress.  Enemies, map generation, rooms having graphic offset settings, all sorts of fun things.  No "game" yet, but way more ground to build on now.

https://darkgriffin.itch.io/infinitroid

Also music.  Mostly rain sounds though.  With no rain to sell it yet.  Alas.

Map gen crashes randomly on startup, as seems to be traditional for most map generation I code.  Oh well, it's going to need a few passes before release day anyway.

Next up is probably making the props and door/room edge data, and spawning it into the game.  From there we should start seeing all that fancy room building code start doing cool stuff.

If I don't distract myself making metroid sounding music and enemies with new AI routines first.  Scatterbrained shiny distractions, the lot of them!

Those sound effects are very loud D:

I'll look into it, though I am not sure what I can do about it.  When you play other pico8 games, are they also too loud for you?

Pico 8 sounds similar in volume to other things on the web like videos and the like to me.  (I used YouTube to test and pico8 is actually a little quieter even at full volume then most YouTubers I checked against). As a matter of fact I have to turn my volume up a bit higher then normal to hear it sometimes compared to other games I play.

Pico8 doesn't have a good way to change volumes on sound without literally editing every note the sound effects produce.  And like I said, it sounds just fine to my setup.  So any volume adjusting would be a trial and error process of sending builds to someone who has the problem and then reajusting blind.  Not likely to happen for this.

It would be great if someone else can confirm this observation about sound.  I need to know if something is wrong with my own audio setup that I should be accounting for.  There is still a lot more sound effects to do for the game.

I tried playing some Celeste Classic just as a comparison, it might be similar volume-wise so you might be right about that

It might just be that your sound effects sound really harsh, that white noise rain effect in particular, oof >w<

No update build to share yet.  Been running around doing some bug crushing, and coming up with a way to create an "entity" instead of a tile or enemy. 


These will be used for things like the starting ship or elevator shaft graphics.  They consist of sprites like enemy graphics, but also have tile collisions for player interaction.  I still have a few things to solve before anything is stable.  Sleep and work first though.  Will share a new build once the game is stable and I have progress in gameplay. :)

No stable build yet, but I just got elevators working today.  Also got some basic doors and walls generating, these actually check the side rooms and clog themselves up if no room exists.  Now the player has all 4 axis to explore the map with, freely going left and right and using the elevators for vertical "floor changes".

Other exciting note, the elevator is an "entity" in my new entities system.  These are sets of tiles/sprites that can also run AI.  The behavior of the elevator is actually just an AI checking the player input and responding.  It also keeps the player on top like a platform using an overwrite switch for gravity.  So the AI routines can do a lot of strange/fun things.

The generator now does a "final pass" once the map is built to construct all the elevator bottoms.  This "final pass" could be used to spawn the boss and other elements as well, to clean up the current map gen code.  (For those curious, it can't just build them while doing the rows because the next generated row will overwrite any changes, and the below room objects don't exist yet at that stage in the map creation.)

Also gave most of the background music a pass and mellowed out the volumes for notes.  Should allow game sound to take priority over whatever melody is playing.

Next is probably giving the map generator a redo, since the current method still crashes out sometimes when placing objects.  There are a lot of objects left to add to the game, so it's pretty high priority to make stable maps.  Plus I really want to share a build with you that doesn't have a 20% chance of just crashing on boot. :p

There's a bunch of other stuff I want to add to the maps to make them more interesting, but with only 10 days left I should prioritize the base game cycle.  Fancy features don't matter if the game can't cycle from beginning to end. :)

Still not quite there.  Got a LOT done in the last 4 days though.  Starting to hit the compression limit in pico8, so that's becoming a bit of a challenge.

New stuff done so far over the last 4 days:

Basic map generation, power up spawns, a new enemy that shoots, lots of optimization and rewriting of code.  Escape sequence mode, timer for mission times, percentage of pickups obtained in a run, password seed entry, title screen, conclusion screen showing final results (win, lost, with percent pickups and mission time totals).  3 alternate guns, currently they just deal more damage, but they are functional at least.  Enemies now collide with the player for damage, set per enemy.  Player now dies.  Heat damage on the "hot" world if not in an elevator or power up room.  Energy tank system, player health.  Jump boost power ups.  Final container pickup (little green metroid like jar)

About a billion other minor 10 second fixes and tweaks throughout as I went.

It's easier to say what's left to squeeze in then what's new in the game at this point, so I'll just go with that.  I'll try to get the game stable for a preview build tomorrow, time allowing.

Left to do:

  • fitting more enemies into the game.  Only 2 gets really old.
  •  getting ammo/health drops working.
  • get a final boss in place.  If I can't squeeze one in, it might do just to have the capsule on the last floor and consider being able to fight down there the game end.  But I'd really like to do a cool boss fight of some sort that needs the 4 weapons.
  • work on spreading out the power ups so they are not on just the first floor, cause that's LAME.
  • spread out/theme the enemy encounters to each area, so the areas all have their own "tricks" to learn.
  • more sound and music effects so all areas at least have music, plus escape sequence music is needed too.
  • balance the enemy/player advancement to make the game fair/fun without being too easy/hard.
  • cap the player ammos and health tanks to prevent overflows of the UI.

Nice to haves at this point due mostly to cart compression limits:

  • Charged shots, with an alternate firing effect for each gun.  Would help them to be a bit more unique instead of just damage/ammo choices.
  • more room layouts, types, variety of room terrain generation methods.  Each new type is several new tokens of memory.  Most of these tokens are going to be used for the AI, so I'm not sure I can afford to be as crazy as I'd like with room chunk gen.  I might be able to cheese it by using "middle" chunks in the normal rooms.
  • Room doors.  Yes, I'm totally serious.  I still don't have doors that need weapons cause I'm silly and forgot they exist.  And I'm almost out of memory.  The AI routines and final boss logic will probably eat the rest of the space.  Gonna have to get really sneaky/creative to get them in.  At minimum I suppose the boss door at least will need to lock somehow.  Barring any implementation, I could always hope the enemies do their job of "gating" the player to their current combat level at least.  This would not be ideal or make the player sometimes change route, so I hope I can find a way to squeeze real doors in.
  • Possibly make elevators break during escape so there is extra platforming, or give the generator a way to create an "alternate route" exit, metroid 2 style.  Problem here is not overwriting the old map and not making a "shortcut".
  • Ideally the map would create a few unexpected horizontal shaft connections to keep the player exploring more then just left and right.  Realistically, this most likely won't happen due to pico8's compression limits without some tricks that are way beyond my level of coding skill.  Alas, probably a cutting room item at this point.

And here we go.  Let's see if I can pull this hack job into a game yet.

On release or submission end (whatever happens first), I'll be happy to share the source p8 cart on the download page, in the spirit of Pico8.  That way you all can examine and learn from it, or hack it to bits and prove you are all better then me at using the cart space. :p

(1 edit)

Lost most of the day to being ill.  So now I'm a bit behind.

Managed to squeeze a release export at least.  It's not "fun" yet, but it's getting close to "functional".  Feel free to hop around and die if you get bored.

EDIT: as it turns out this particular snapshot is a buggy mess and crashes on power up collection.  Will post when I get a better build out.

https://darkgriffin.itch.io/infinitroid

Back to the grind after I get my health together.  Not sure if I'll make the deadline anymore, but health comes first.

Pretty close to final build here.  Game is fully playable from start to finish.  A few last bugs, at least one major one involving roof collisions glitching out.  But I'm out of pico8 tokens, so unless I think of something super clever, this is pretty much as far as I can take it.

Enjoy!

https://darkgriffin.itch.io/infinitroid

I might do a few minor tweaks over the last days of the jam, like refilling the user's tanks when they respawn, minor stuff like that.  Doors didn't make the size cut, but I think the enemies difficulty scaling sort of keeps the weapons all useful anyway.

Anyway, signing off for the day.  I was able to play and finish a map using the web version, so I think everything is in order.  If you do any spectacular runs, be sure to screenshot your victory screens to share it.  The victory screen shows passwords, time taken, percent completion, and will show you won the mission if you made it back to the ship with the experiment item.

(1 edit) (+1)

And RELEASE!

Down is the new interact with anything button, up is now the MAP button  (Hold it to see the map.)  Sorry, I couldn't even fit control prompts for all that with the token count and code limits literally right up to the edge. :(

I've really hit my limits of code knowledge and space saving here.  There's probably a few minor token saves I could do, but the missing features left to add would need at least a few hundred more to implement.  So the game is pretty much done.  Enjoy!

I may update the page with some screenshots and gifs of the game in action later.  Need a well earned break for some party time first.

https://darkgriffin.itch.io/infinitroid

Good job on making and finishing it!