Just a quick laundry list of updates:

  • Various dirks and daggers added
  • Shader support added; elemental damage has colored effects
  • Also, elemental damage is a thing
  • ..And other randomized weapon mods
  • Weapons and other equipment can apply buffs when equipped or attacking
  • Chests drop a randomized weapon now
  • Weapons can be picked up by pressing Down
  • Linq-style Queryable class added
  • Pressing Esc accesses a functioning inventory screen

Also, here’s a WIP animation of whips:


Lost track of time, there. Whoops.

So, what’s new with Project SYPHA? Couple of things, over the last version I posted in 2014 (!). It has sound, collision, multiple rooms, rudimentary combat, and more – it’s nearly playable, at least to the point that I’ve finally posted the code in a proper repo. You can find it in two separate repos on GitLab, ‘sypha-engine’ for the engine itself, and ‘mod-noname’ for the game data (scripts, assets, and configs). Not sure how I’m going to end up licensing it – probably very permissive on the engine side (MIT, ZLIB, whatever), and maybe GPL on the data end of things.

Prerequisites for running the demo are a Git client and Love2D v0.10 or better; you can find instructions for cloning the repos here. If anyone wants to help out with art, scripting, mapping, or whatever, sign up for a (free) GitLab account and shoot me an email. Check out the commit logs on GitLab to see what I’ve been up to lately with it, and I’ll have more to see soon!

Goblin Corps [COMPLETE]

At long last, I’m finally finished with the goblin sprite set! The full .zip file includes the base, 16 outfits, 18 pieces of headgear, a frameguide, and 10 preassembled characters (peasant, mage, samurai, assassin, lord, soldier, guard, knight, centurion, and battlelord), all fully animated and ready for use! You can grab the full set from OGA right here (CC0 as usual). Preview pic:

Now to work them into Project SYPHA, first as playable sprites, and then adding some AI. More to come soon!

Goblin progress

Finally returned to the Goblin Corps sprite set. Not much to show yet, beyond the original concepts, but here’s a quick animation test of the legs and upper body:

I think I’m just about satisfied with the legs, which tend to be the most difficult part for me to get looking right. Still needs some arms tacked on (looks a bit Silent Hill without them) and a lot of shading, and then on to jump, attack, and falling animations. Progress!

*Edit: Got some okay-looking arms on there now. Still needs shading work, but it’s getting there.

**Edit: Walking is looking okay, and I’ve got the jump and all three standing attacks in. Just need fourteen more frames: standing guard, jumping attacks and guard, falling, and KO (wasn’t going to do jumping attacks, but they’re trivial C&P, so why not).

**Edit: Sample spritesheet can be found here. Not ready to fully release it yet – still needs polishing and outfits, and I left in the white/gray grid – but the animations are pretty much complete. On to the outfits, and then it’s ready to release.

**Edit: Full spritesheet for the Grunt here, complete and usable (CC0 as always). Five more outfits to go.

..Also, the Soldier.

..Also, after a month and a half, the Assassin. Just need the Mage robes and hat, and I can call it done and move on to more coding.

B&B-L2D Todo list

Just a couple of things left to do before the Bits & Bots Love2D port is complete:

  • Remove green ‘mouseover’ effect from menu items (since it behaves weirdly on Android)
  • Retouch the ‘about’ text (still need to ask fysx & co. on the Love2D forums how they’d prefer to be credited) (realized it’s all zlib, so current attribution should be fine)
  • Add handling for long frames – e.g. in love.update(), continue without updating if dt > 1 to avoid weirdness with animations when returning from background
  • Create an AudioLibrary class
  • Add a looped song for each game state (menu, gameplay) and some sfx for menu items, in-game buttons, and bot warp effect

Once I’ve got the above items in, I’ll be ready to post my .love and .apk files here (and possibly even submit the app to Google Play!). More soon!

Bits & Bots port

Stumbled across this on the Love2D forums: love-android-sdl2. It’s a native port of Love2D for Android, which allows you to drop a Love2D project onto Android without too much difficulty. As a test run, I’ve been porting Bits & Bots to Love2D – it’s already nearly complete, and I’ve worked in some major improvements over the old version (like finally implementing the buffered background layers). Once I’ve got the Love2D version fully running and tested, I’ll post the .love file around here somewhere.

Also, this:

Another random sighting of the MV-Plat sprites, this time showcasing the capabilities of the upcoming Tethical RPG engine. Check it out!

Chrome for Android

I’ve been liking the Android experience since I got the new phone, and Chrome in particular has been pretty good to work with, but.. there are a few quirks to it that I find a bit infuriating. One isn’t major, but it’s a tad inconsistent, and just annoys me to no end: when you hold your finger on a link and select ‘Open in New Tab’, it does just that – it opens a new tab for the link. But then, it HIDES THAT TAB, shuffling it to the background and returning you to the previous tab. I wouldn’t find it so irksome, except that in literally every other situation, the new tab gets focus. Did the link itself specify a new tab? No problem, open it up and switch to that. Did the page open an unrequested popup of a writhing nymph doing unspeakable things to herself (complete with audio)? OF COURSE the browser should automatically switch to that, especially if you’re at work or your inlaws’ house. But if the USER goes out of their way to hold their finger on the link for two seconds and select an option to open the link in a new tab, well, that’s probably not anything they actually wanted to view. Let’s just shove that to the background, and let the user jump through a few hoops to get to it. Again, it’s not that it’s hard to switch tabs, it’s just annoying as hell that the only time Chrome doesn’t give the new tab focus is when it’s blindingly obvious that I wanted it to.

Beyond that minor quibble, there’s the train wreck that is Font Boosting. What it is meant to do is adjust font size of individual html elements, to avoid situations where the user needs to scroll left and right to read the entire text – long, fine strings of text are boosted to a size that is legible when zoomed out so the whole element is in view. In practice, though, what it actually does is make any site with dynamic content a complete mess, with some chunks of text tiny and others huge. Most sites I browse, I actually have to zoom repeatedly in and out to read everything – it makes reading, say, Reddit MUCH more difficult than it has to be.

It doesn’t have to be this bad, though. For years (as far back as 2012, from what I’ve seen), the majority of Chrome’s userbase* has been asking – PLEADING – for an option to disable this horrible, horrible mess of a UI ‘improvement’, and by and large the response has either been suggestions to add a certain workaround to a site’s CSS (which is useless to users, since it can only be done by each sites’ web admins), or to suck it up and live with it because it’s ‘better’ (we’re all just too stupid to see why). All they need is one simple dumb toggle in the Settings menu, and everyone would be happy – if they can give us an option to mangle the UserAgent to avoid awful mobile sites, you’d think this wouldn’t be that big a deal.

*If you think I’m exaggerating, just Google it. For every snippet of praise (mostly from their press releases), you’ll find at least two bug reports, three ranty blogposts, and five ‘WTF is this’ forum posts about Font Boosting.

**Edit: Okay, so Z2 put the ‘New Tab’ thing in perspective. Seems it’s a holdover from desktop browsers, where Ctrl+Click does the same thing; the logic behind it is that the typical user does that to background something to be read next, after they’re done with the page they’re on. I guess that makes sense, but it still seems rather counterintuitive to me, when every other method of opening a link foregrounds the resulting page.

Damage calculation

Got three weapon prototypes up and working: Knife (light/pierce), Sword (medium/slash), and Hammer (heavy/bash). Still playing with the timing and properties of each, but it’s a good start. Now to decide where to go next: combat, map/environment mechanics, or further fleshing out the GameObject class (which, realistically, should probably be first).

For combat, I’ve been doing some thinking on what equations to use. Attack is easy – (weapon base + strength) * modifiers – but defense threw me for a bit more of a loop. How much should armor affect damage taken? I don’t like the thought of a linear design (ATK – DEF = DMG) – a low-level character is overwhelmed too easily (especially if DEF > ATK), and if ATK and DEF scale at a similar rate, then you’re stuck doing a constant amount of damage no matter what level you’re at. I’ve decided instead to use exponential decay, something like:

DMG = ATK * e ^ (d * -DEF / ATK)

..where ATK and DEF are self-explanatory, e is Euler’s Constant, and d is a configurable rate of decay. This method tends to skew things toward the underdog – if ATK is much higher than DEF, then small increases in DEF will show a large payoff in the amount of damage mitigated, and if DEF is higher than ATK, the character will still do a small but decent amount of damage. A few examples:

  • d = .9, ATK = 80, DEF = 20: 64 dmg
  • d = .9, ATK = 80, DEF = 30: 57 dmg
  • d = .9, ATK = 40, DEF = 70: 8 dmg
  • d = .9, ATK = 50, DEF = 50: 20 dmg

Playing with different values of d will change the effectiveness of armor – the lower higher d is, the more heavily DEF is weighted. My hope is to have a combat system where magic users don’t get unconditionally bulldozed, and the player doesn’t get stuck in too many situations where they constantly do 1 or zero damage.

Platformer demo

Here it is, platDemo.love. Not much to it so far – just a single test environment, showcasing the character animations. Controls:

  • Arrows: Movement
  • Space: Jump
  • S,D,F: Attacks
  • R: Block
  • G: Spawn bats
  • F1: Toggle debug output
  • F2: Decrease game speed
  • F3: Increase game speed
  • F11: Toggle fullscreen
  • Esc: Quit

You can hold up to change the main character’s sprite, and the character has walljump and double jump enabled. Requires Love2D v0.8.0 to run (not sure if it works under 0.9.0). Give it a try, let me know what fun bugs you find.

Skeleton sighting

Another random sighting: Scratch Match by 11thMutant! It’s a Street Fighter-esque brawler, which uses my MV Platformer Skeleton for the fighters. Has some really nice zoom effects (the camera pans in as the fighters approach each other), and looks pretty promising. The author was also nice enough to credit me, even though it wasn’t necessary (CC0). Give it a look!

**Edit: Almost forgot this one – it’s an entry from Github’s Game Off II called ‘CH₃CH₂CH₂CH₂CH₃anges‘, which uses the MV Male Base as the main character. Pretty innovative idea – you must use a combination of powers (melting ice, raising water levels, and killing wildlife) to solve puzzles and progress through the game, and at the end you get graded on how much impact you had on the environment.