KilledByAPixel

LD 44

SPENDOTRON: 2019 is Done!

It's Robotron in a Capitalist Dystopia!

Playable in browser, works in chrome and firefox, no loading!

https://ldjam.com/events/ludum-dare/44/currency-wars

https://youtu.be/rUmNFSKD5NU

SPENDOTRON: 2019 - Javascript source now on GitHub

I just uploaded my source to GitHub so it's easier to view and update!

https://github.com/KilledByAPixel/LudumDare44

Here's a link to my entry...

https://ldjam.com/events/ludum-dare/44/currency-wars

spendotron3.gif

SPENDOTRON: 2019 - LD 44 Compo Postmortem

The theme for Ludum Dare 44 was “Your Life is Currency”. This was my 9th Ludum Dare and first one using Javascript. It’s been over 4 years since the last time I’ve competed in a Ludum Dare so I’m excited to get back into it. I think this is one of my best entries, a super difficult twin stick shooter demake of Robotron.

https://www.youtube.com/watch?v=rUmNFSKD5NU

Play and Rate...

https://ldjam.com/events/ludum-dare/44/currency-wars

Postmortem

My main goal going into this compo was to make a game in Javascript with sound effects using my sound effect maker ZzFX. I knew this would be a difficult Ludum Dare because it’s been years since I’ve done a 48 hour jam. On top of that I already bought tickets to see Avengers: Endgame on Saturday!

Friday – Concept

This Ludum Dare had a somewhat unusual theme: “Your Life is Currency”. I grappled with it for a while and scribbled down some ideas, here are a few…

  • You are fire! Burn as much as possible without running out of fuel.
  • You are a space ship, manage your energy to stay alive.
  • You are a human, chose from options how to spend your life.
  • You are a dollar symbol, shoot pennies at the rival currencies.

That’s about as far as I got the first night. I always find it impossible to start moving on an idea right away, usually the best ideas don’t come until later.

Saturday – Core Gameplay

I woke up with a decision made tried to hit the ground running. I had an interesting idea for the core mechanic that I wanted to experiment with. Trying something I haven’t done before helps me get motivated. In a nutshell the idea is that shooting costs energy but kills give it back.

That mechanic implied a scoring system that is based on the money spent not the money owned, which seems weird at first. For example, if bullet costs 1 cent but a kill gives it back it sounds like a break even. The trick is that your score is money spent so every kill actually adds 1 cent to your total. The copyright symbols give the player a way to recover lost money and keep hope alive.

I started by building on top of my JS1k game “Queen’s Gambit”. The code is so simple and small that I ended up just rewriting almost everything. Most of the tricks I used for JS1k actually make the code harder to work with. By late afternoon I had most of the rewrite done and the art switched over to a currency theme.

I decided to sacrifice a few hours to see Avengers: Endgame on Saturday evening. I still don’t regret it! After getting home from the movies I worked on getting the core gameplay implemented. Some things I added were: pickups, bitcoin movement AI, enemy wave spawning, quick art pass, quick sound pass, and other gameplay improvements. I went to sleep around midnight with a rough but functional first playable.

spend0.png

Sunday – Polish

By Sunday morning I had a clear idea of what I wanted the game to be. I started by making a prioritized list of everything I wanted to do and just hammered through it all day. Here’s the main tasks I did in chronological order…

  • Screen Composition – Made play area smaller with a rectangle around it, and better organized how information is displayed.
  • Start Screen – Show how to play, enemies, controls and high score. This is a very important thing to make a game feel polished.
  • Wave spawning – Created a table of how many enemies of each type to spawn for each wave. Every 10 waves it cycles through with 50% more enemies. This helps each level feel different.
  • Spawn © away from enemies and show ? when © is killed. £ enemy – Themed as a Patent Troll that steals © and turns them against you. Only appears every 5 waves which also have double ©.
  • High Score – Important for replay value.
  • Visuals Pass – Color/size adjustments, improved “money pit” display

I also just spent a lot of time just balancing the game and improving small aspects of it. I’ve played a ton of Robotron, so I tried to leverage that knowledge that as much as possible. Maybe I went too far because everyone says the game is too difficult. I am currently offering a $20 prize to the first person to get $20 in my game, so far I’m the only one who has done it!

Another huge thing I added was the sound effects. For most previous game jams I’ve used a tool like Bfxr, which is great. This time around I wanted to test out ZzFX, a tiny opensource javascript sound effect player that I made for JS1k.

ZzFX was super fast to iterate with, and in total I made 14 sound effects. There are some limitations though and finding the right sound can be tricky. After this experience I’ve have some great ideas for the next version. Mainly I want to make a more feature rich tool less focused with code size but retaining the ability to quickly paste in sound effects.

Final Thoughts

Being able to iterate quickly is extremely important for short game jams. This was my first Ludum Dare using javascript and it is by far the fastest way to iterate that I’ve found. Being able to play the game in browser without a lengthy download is just icing on the cake! It’s safe to say that most of my future Ludum Dares will be done in javascript.

If you’d like to see the code for my game, I made it available on Github.

Thanks for reading, and have a great day!

spendotron3.gif

SPENDOTRON: 2019 - Now Locked at 1080p

I had the game scaling up to match the screen size, but that was causing it to be harder on small monitors and easier on large monitors. So now I've just went ahead and locked the canvas size to 1080p so it's a standardized playing experience! I also figured out how to embed it on itch and run it automatically. Feels good.

Play SPENDOTRON (itch.io)

spendotron3.gif

Bogus Roads - Lowrez Retrowave Racing

Howdy everyone, my game for lowrez jam is now available!

https://killedbyapixel.itch.io/bogus-roads

Play it in your browser today!

https://www.youtube.com/watch?v=txcH9sB9UTM

The source code is also available for download!

Features

  • 3 proceduraly generated levels
  • 64x64 graphics!
  • 3D rendering with https://threejs.org
  • 6 new songs
  • 12 different types of obstacles and 3 powerups
  • 14 sound effects using https://github.com/KilledByAPixel/ZzFX
  • Sky effects with sun, stars, & planet
  • In game hud
  • Custom 5x5 fonts
  • Gamepad Support
  • Intro, Main Menu and Win Screens
  • Tracks fastest times and awards up to 3 stars
  • Screen Transitions
  • Hidden mini game if you press Home

d23be880-ea1a-358f-5cc7-83ec80b4f640.gif

e72ec173-ff6b-11b3-e375-3f58e292c903.gif

20dd75b7-0e86-eabf-d437-6bd5666b1e8d.gif

Major update to ZzFX - Zuper Zmall Zeeded Zound Zynth

Howdy everyone, I've just finished up a massive rewrite of zzfx.

http://zzfx.3d2k.com

https://github.com/KilledByAPixel/ZzFX

This is a JavaScript sound effect generator similar to bfxr but a little simpler. The really cool part if you use this, you don't need to mess with wave files at all. Just a play seeded sounds with a simple function call like, ZZFX.z(6)!

The browser has had a major upgrade also and is much more user friendly. There options to lock, reset and mutate parameters. You can even save out the sound as a wave file!

ZzFX Features

  • Tiny synth engine with 9 controllable parameters.
  • Small code footprint for full version and the micro version is under 500 bytes!
  • Can produce a wide variety of sound effect types.
  • Seeded sounds can be played with a tiny function call, ex: ZZFX.z(6)
  • Seeded sound paramerters can be overridden, ex: ZZFX.z(26,{frequency:600})
  • Random number generator ZZFX.R can be used in place of Math.random().
  • Use ZZFX.M to make music notes, ex: ZZFX.m(440, 7) // 7 semitons above 440hz (A4)

ZzFX UI Features

  • Generate random sounds from seed.
  • Stores sounds in list with local storage persistence.
  • Parameters can be modified for more control.
  • Lock, reset and mutate buttons for each parameter.
  • Displays image of sound wave when played.
  • Sounds can be download as a wave file.
  • Mark sounds as favorites to keep them from being cleared.
  • List of sounds can be exported and imported.

Here's the latest version of the ZzFXmicro JavaScript code you can use directly!

// ZzFXmicro - Zuper Zmall Zound Zynth - MIT License - Copyright 2019 Frank Force zzfx_v=.5;zzfx_x=new AudioContext;zzfx=(e,f,a,b=1,d=.1,g=0,h=0,k=0,l=0)=>{let S=44100,P=Math.PI;a*=2*P/S;a*=1+f*(2*Math.random()-1);g*=1E3*P/(S**2);b=0<b?S*(10<b?10:b)|0:1;d*=b|0;k*=2*P/S;l*=P;f=[];for(var m=0,n=0,c=0;c<b;++c)f[c]=e*zzfx_v*Math.cos(m*a*Math.cos(n*k+l))*(c<d?c/d:1-(c-d)/(b-d)),m+=1+h*(2*Math.random()-1),n+=1+h*(2*Math.random()-1),a+=g;e=zzfx_x.createBuffer(1,b,S);a=zzfx_x.createBufferSource();e.getChannelData(0).set(f);a.buffer=e;a.connect(zzfx_x.destination);a.start();return a}

screen.png

Ludum Dare 45

I'm In!

ld452.gif

This will be my 10th LD! I plan to use javascript.

ldscore.png

Also, check out my boomerang roguelite / Zelda homage I just released for JS13k!

Play Bounce Back!

screenshot.png

avatar.gif

ZzFX ~ Zuper Zmall Zeeded Zound Zynth

Just a quick reminder that my super tiny open source sound effect engine ZzFX is available for use in your Ludum Dare games!

ZzFX ~ zzfx.3d2k.com

There are now 15 games using ZzFX audio! Here are a few of the best...

I also used it for my Ludum Dare 44 game, Spendotron: 2019

Here is the entire code for the micro version of ZzFX. Just paste this code into your JavaScript file and you can play ZzFX sound effects!

// ZzFXmicro - Zuper Zmall Zound Zynth - MIT License - Copyright 2019 Frank Force zzfx_v=.5;zzfx_x=new AudioContext;zzfx=(e,f,a,b=1,d=.1,g=0,h=0,k=0,l=0)=>{let S=44100,P=Math.PI;a*=2*P/S;a*=1+f*(2*Math.random()-1);g*=1E3*P/(S**2);b=0<b?S*(10<b?10:b)|0:1;d*=b|0;k*=2*P/S;l*=P;f=[];for(var m=0,n=0,c=0;c<b;++c)f[c]=e*zzfx_v*Math.cos(m*a*Math.cos(n*k+l))*(c<d?c/d:1-(c-d)/(b-d)),m+=1+h*(2*Math.random()-1),n+=1+h*(2*Math.random()-1),a+=g;e=zzfx_x.createBuffer(1,b,S);a=zzfx_x.createBufferSource();e.getChannelData(0).set(f);a.buffer=e;a.connect(zzfx_x.destination);a.start();return a}

ZzFX Screenshot

Ludum Dare 47

I'm in + Tools for You

I going to try for my 10th Ludum Dare! Planning to code it all in vanilla JavaScript.

Over the past year I've made some really nice open source tools to share with everyone...

ZzFX - Zuper Zmall Zound Zynth

A sound effect generator similar to to BFXR/SFXR but reworked from the ground up. You can save out wave files to use the sounds in any game, but the best part about using JavaScript is you don't need wave files at all! Just paste in a bit of code to play your sound.

screenshot.jpg

ZzSprite - A Tiny Sprite Generator

Procedurally generates tiny pixel art sprites with options for mutation and animation frames. Sprites can be copied to the clipboard for easy pasting. It's great for finding interesting ideas to use as a starting point.

example1.png

ZzArt - Abstract Art Evolution

Evolve HD textures for use in your games. The texture code can be copied and is ShaderToy compatible.

zzart.png

Two of my best games for those interested...

Bounce Back - Boomerang Zelda Homage

Bogus Roads - Lowres Retrowave Racing

Good luck everyone! ✌️😀

Ludum Dare 49

Ludum Dare 50

LittleJS - The Tiny JavaScript Game Engine That Can

Hi everyone. If you are still deciding on a game engine, check out LittleJS! This engine is both super tiny and incredibly powerful. I made this engine with rapid prototyping in mind and I think it would be great for Ludum Dare. It is fully open source with the MIT license on GitHub.

* LittleJS on GitHub * 🚂

https://youtu.be/chuBzGjv7Ms

For an example of what the engine can do when pushed a bit farther, check out my game Space Huggers, originally released for JS13k.

* Space Huggers - Run and gun platformer made with LittleJS *

Thank you for reading, have fun and take care of yourselves!