dev, computing and games

Finished 7 Billion Humans (PC) + all size+speed optimizations, all achievements

This is a programming-themed game, similar to Human Resource Machine, where you have a drag-and-drop interface to program in a pseudo-assembly type thing.

The big difference is 7 Billion Humans is “multithreaded”. You program the actions of not just one worker, but many (sometimes, dozens) that all run the same program concurrently. There are some instructions “tell” and “listen” which help synchronize. For example one worker can tell another “Coffee time!”, unblocking another worker that has stopped, and is listening for Coffee Time. Workers can be in eachothers’ way, and you may want to avoid them taking paths where they collide with each other. Certain workers have resources dedicated to them, that others cannot use or else BOOM they explode (literally).

Compared to HRM and most computer assembly languages, 7BH has some conspicuously powerful instructions.

When optimizing for speed you come to learn about how the game computes “performance cost” since it is not totally intuitive.

For example,
if (X == 5 and Y == 3) or Z == 12342
is the exact same cost as
if (X == 5)

“Take two steps to the left”
can (in, at least some circumstances) be the exact same cost as
“Find out where in the room the nearest printer is- it might be around a maze of hazards, obstacles, whatever- and go to it”

The latter, you’d think would be an expensive and complicated path-finding operation but the game gives that one to you for free. Maybe, with the idea that you’ve got enough other things to deal with and it is probably right about that.

My solutions are in this GitHub repo

September 7th, 2019 at 6:27 pm | Comments & Trackbacks (0) | Permalink

Finished story mode of Crypt of the NecroDancer (PC)

This game is “rhythm” genre mixed with “roguelike” genre.

When I first played it I thought they took a dart board full of video game types, threw two darts and made that game. The “disco floor” mechanic was trippy and strange, and it looked like a somewhat decent roguelike with an unfitting rhythm mechanic shoehorned in. Background: I do like roguelike games (Mystery Dungeon, Dungeon Crawler) and rhythm games (DDR, Stepmania, FF Theatrhythm) always just separate.

After a few levels I got into it and saw it was built from the ground up to be a rhythm game. Even the controls, all set as combinations of arrow keys, are geared so that they can be played with a dance pad. The gameplay and story are tightly integrated around the music themes. The rhythm game-ness adds an action mechanic where there wouldn’t ordinarily be one, and there are gameplay elements (“multipliers”) built around this mechanic. Every other roguelike I’ve played has been strictly turn based and I have to slow myself down because I’m freaking out at one thing or another. For this, it’s the opposite problem where you have to make quick decisions and develop the right reflexes and it ends up being really rewarding.

(do not watch if you have epilepsy)

The graphics use that usual pseudo-old-school-not-really resolution mixing to a level that is pretty offensive. I’ve come to just tune it out. I seem to be the only person who cares about this so at this point I’m tuning it out for my own personal wellness. #selfcare

The end of the game is involves a pretty tough zone with a combination of two bosses. I attached the replay of my run of the zone!
– Using Cadence the main character.
– Starting eq: normal broadsword + apple, purchased at Diamond Dealer
– The start was pretty rough. Made a bunch of mistakes, in one part I fell into a trap with no way of getting out except bombing myself.
– Wasted a bit of time on shop purchase, item indecision
– Dead Ringer went well.
– Necrodancer did me a solid and killed an ogre for me
– I always kill my multiplier for black skeletons.

Time: 11:33 Score: 432

Besides Cadence I finished zones 1+2+3+4 with Dove, I’m looking forward to playing a few of the other characters also πŸ™‚

*there is an option in the game’s menu to turn off the “Disco floor” if there is a chance of it causing problems

June 23rd, 2019 at 9:23 pm | Comments & Trackbacks (0) | Permalink

Finished the Community Center in Stardew Valley (PC)

Stardew Valley is like a “what could have been” if SNES Harvest Moon were transported into our post-Minecraft present day. It’s really approachable and fun.

HM (left), Stardew(right)

Comparison is specific to SNES HM because of the similarity of gameplay and visual arrangement of things.

For Stardew I have some small gripes which are visual
β€’ Colors burn retinas
β€’ most of graphics uses low-color palette but lighting effects from lamps and torches have access to way more colors?
β€’ Pixels do not align to pixel grid for fishing line and many animations (see image)

Stardew Valley is not the only offender in the category of “retro-style game that can’t pick one video resolution”. Shovel Knight and the Scott Pilgrim game also do this. Scott Pilgrim is probably the worst offender I have ever seen. Stardew Valley is not the worst but it’s one where I have screenshots on hand.

Why is it bad? There are two parts to this, functional and aesthetic.

Functionally, it is capable of causing eye strain coming from the fact that it is visually confusing. Suppose we are looking at some 2D pixel art at a relatively coarse resolution. We use the same parts of our brains that could, say, appreciate mosaic tile artwork. The image lacks the full fidelity of the real world, but our eyes “fill in the missing information”. Blocky edges become round in our mind’s eye, detail is made out of nothing. When the resolution changes, it’s like a tiled floor where big patches of tiles are different sizes. It’s funhouse looking. It defies expectation. How can your brain interpolate things at a consistent rate, then? It’s not altogether natural. Personally I experienced eye strain from this. While I am not a medical professional- just a person with a data set of size 1- I believe it could affect other people too since my eyesight is medically typical. I don’t see anything necessarily causing my experience to be very unique. For people who aren’t involved with graphics or low-res-looking games but play this one, they might experience eye strain yet not be to articulate why.

Aesthetically, it wrecks your scene composition. Here you’ve gone and standardized line width, balanced the colors of lines against the light source in your scene, taking into account the limited fidelity of the low resolution you’ve standardized on. But, wait a minute! You have this completely other part of the scene which is at a different video resolution. There’s not an easy way to account for that in how you set up the scene. It will just look bad and I’m sad to say once you see it you can’t un-see it.

The reason why the problem is possible is because these games are drawn at a much lower resolution than your native display resolution. When I run Stardew, for example, each 4×4 region of pixels tends to be (* minus the exceptions discussed here) of uniform color. On my 1920×1080 graphics setting, this implies the game is meant to run at 480×270. See if I were running the game somehow natively on a very old monitor, it wouldn’t need to do anything ‘special’ in terms of scaling. Each of the TV’s pixels is already the size of your face so whatever. But to fake a low resolution on higher resolution displays, upscaling is necessary. And that’s perfectly ok. The problem is the way in which these games do the upscaling.

Most upsetting of all is that it’s typically harder to get this wrong than to get it right. Yeah you read that correctly. Of course I don’t have any game source code and I don’t know how the developers have organized things, so I am making broad assumptions.

The supposed ease of implementation falls out of how geometry transforms and co-ordinate spaces work. If you keep a consistent low-resolution, you can set up things by:

  1. Allocate a low-resolution (e.g., 480×320) intermediate target and a full-resolution (e.g., 1920×1200) final target
  2. Draw your graphics to that intermediate. Move, flip, rotate sprites as necessary in that low-resolution space
  3. Draw the intermediate, scaled, to the final target

The complicated step for #2 isn’t so bad since you only need to deal with one co-ordinate space. The scale at the end is really simple.

But instead, games decide to do this:

  1. Allocate one full-resolution (e.g., 1920×1200) final target
  2. Draw graphics directly (?) to that target.
    • Each sprite’s transformed position needs to take into account the scale-from-lowres-space-to-final-target

The problem is in step #2. Even if your calculations are 100% correct for getting everything positioned correctly in the final target, this setup will cause resolution-mixing artifacts (e.g., if you rotate anything by non-45-degree increments) since it is baked right into the design.

So, why have game developers gone out of their way to get this resolution-mixing behavior?

Maybe to save perf or memory. That said, I’m not pursuaded a small (~480×320) intermediate and a scale will make or break you for these games. Maybe they don’t care or they don’t think people will notice.

As much as I like Minecraft I think a lot of people have been corrupted by Minecraft aesthetic. You have the low-res-looking, limited-pallette-looking voxel art, where perspective transform is putting boxes of different sizes in your face all the time until it seems visually normal to you.

As for whether mixing low resolutions is bad or even a problem is getting out of the technical and into the subjective world of art. I assert that it’s bad. I assert that it’s bad in the same way that the author of McMansion Hell puts forth a case against certain architectural styles. I put forth a case against mixing of low video resolutions here. Now I think this post is way too long for describing something so simple and obvious but it’s written without any particular target audience in mind so maybe you can make something of it.

But wait, there’s more! Pallette inconsistency.

How many colors are in the pallette? Answer: yes.

The color inconsistency, I can also sympathize with– it’s hard, and arguably more work to take the result of your lighting calculation and quantize it down to the pallette used for the rest of the sprite artwork. But I mean, is it that hard? It’s something you really can do programmatically, it’s not like you need new art assets. You can use a lookup table in a shader, a volume texture if you want. There are different options for fixing this, but they just don’t for some reason. Stardew Valley has no shortage of ambitious stuff- a procedural dungeon, a multiplayer mode, lots of characters with real-time behavior– so it’s not like they want for time or talent, but the take-away is this isn’t where they chose to spend their time.

All of this being said, I want to make it clear that I liked the game.

So back on the game itself– what Stardew does better than Harvest Moon:
β€’ Automation of tasks. The sprinklers and auto-machines to feed and care for animals are a huge ease off of grind, unlockable in the game.
β€’ Controls are less frustrating by design. It’s impossible to accidentally expend seeds on an ineligible place, or drop things on the floor. How many times I’ve attempted in HM to give someone a gift only to Throw It On the Ground
β€’ You can step “through” most crops, allowing for more flexibility in how to organize them
β€’ The Minecraft-isms are fun and thoughtful.
β€’ You can customize where new buildings are placed
β€’ You can marry a person regardless of gender (e.g., same gender)- a step forward. While the original 1996 Harvest Moon doesn’t have this, the modern Harvest Moons (Story of Seasons) don’t have it either
β€’ More interesting characters. For example I liked Linus’s storyline, where he lives as a homeless person but your role is not to “fix” or “save” him. Rather, your role is to be his friend
β€’ The relationship system is less broken. The rate of heart levels increase is slowed as the number of allowed gifts is fixed
β€’ There is an interesting variety of characters. They all have unique events for friendship, not just marriage candidates

The game doesn’t have a conventional “ending” like HM where there is a long scene and then credits.

There is an “evaluation” of sorts on the 3rd year as well as two big milestones. An easier, sad-outcome one (completion of Joja Community Development project) or the difficult, happy-outcome one (renovation of the Community Center). I ended up making two farms where one got each outcome. Although I did these, there is still a lot of replayability potential.

Overall verdict: it’s good! Krobus/10

January 24th, 2019 at 11:23 pm | Comments & Trackbacks (0) | Permalink

Became Immortal in Deathwish (PC, Telnet)

MUD, MUSH, MUCK, and MOO, or MU*/ M** are classes of text-based multiplayer game which tend to be played over Telnet protocol. Originating from a time where there was Internet but no web browsers, many MUDs were popular in the 80s and 90s and some are still played today.

Deathwish has been continuously online since ’94, making it one of the oldest MUDs still in continuous operation.

Once called “Aaezure Odyssey”, I played it in the late 90s and early 2000s. The idea of playing a game over the Internet was really appealing, and graphical online games– while some existed– were a bad experience over the local dial-up. To describe this experience accurately, I didn’t have an Internet-capable computer at home for most of this, but it was a nice treat getting to play this game at my friend’s house, free computer hour at school or at the library. I had a friend in grade school where we’d sit down at her computer and play this game together and it was overall a good time.

In the game’s early days, the name Aaezure Odyssey was adapted because Deathwish was off-putting for some people. Since then the game has reverted back to its original name.

In 2001ish our family “upgraded” from a modem-less Apple II/c to a Windows 98 computer with working dial-up so I got a lot more opportunities to play these sorts of games. I tried out a lot of different MU*s of many different genres. But I never found one I liked as much as Deathwish.

My old character was definitely purged for idleness since it had not been logged on for about 20 years. I wasn’t sweating that too much, especially since I wanted a new toon so that I could re-experience the whole game. The purging policy used to exist to save server space. It’s not necessary now.

There were some artifacts of older times in the MUD documentation and in the MUD itself. It’s a remnant of a very different Internet. I swear somewhere there was at least one :β‚‹). In the connected documentation to the MUD there was a helpful page explaining terms such as “lag”, “flame”, and “newbie”.

Fast forward to the current year. Log in, get past character creation and… there were actual other people playing this game. Not a ton, but… enough for it to shock me when I saw it. At odd hours, there would only be a few characters. On, say, a Saturday night, there would be 10-20 characters, with about 1-3 characters per human person. Seeing people playing and conversing with each other- this is on a MUD, in what is now the late 2010s. How? What is this? I’d type some ‘about’ command, and alongside the link to the normal hosted page, there was a Facebook link. What universe is this?

I rolled a mage as my main, and a paladin alt, partied them together and multi-played them in two side-by-side Telnet clients. The client I used had good support for scriptability so I was able to brush off my Lua, automate a lot of common actions and make the experience less grind-y and save myself some typing. Eventually, I had a cleric too, multi-playing three toons at once which is the limit.

There were moments in this game that were funny, fascinating, strange, surprising, and emotionally engaging. In some of the room descriptions and zone design you feel like there is entire world behind them even though it’s just text. It was such an adventure playing through the mortal playthrough. See, I thought I experienced a good amount of it the first time I played way back. But the game is deeper than I ever could have imagined.

Since I had reached the level cap I was given the option to “remort” my character- meaning, reset to level 1 except with some interesting improvements- or become immortal. Becoming immortal revealed a new game. That game is basically a meta-game. It is something awesome and really overwhelming.

January 6th, 2018 at 12:18 am | Comments & Trackbacks (0) | Permalink

Finished Cuphead (PC, Windows)

What was good
β€’ It looks like one of those old timey cartoons!!!!
β€’ Art direction
β€’ This game is a literal work of art.
β€’ Gameplay-wise, each level feels very fresh and different, where you have some standard shoot-y 2D bosses, some gravity-changing platforming, Gradius-style shooting, vertical scrolling boss fight. It has everything

What was not good
β€’ There was this one part where ha ha just kidding it’s perfect

This game avoids having too many moves or power-ups which are “just good”; each weapon has its advantages and drawbacks, and your starting weapon– the peashooter– could very well be a good late-game choice. For example the second-to-last boss fight (King Dice) I used that one. This specials are not your musou in Dynasty Warriors. They are not “just good”, (with one exception) you are not invincible when you use them, they can and will get you killed versus if you didn’t use the special. From a gameplay perspective this makes you put a lot more thought into your actions.

This game was as challenging as everyone says it was. There were moments I thought I may not be able to make progress in it, however each boss’s moved are telegraphed one way or another so once you pick up on that it gets doable. I tend to be better that the reflex-based parts (like the bird feathers or robot missiles) while I had trouble with the weird parrying mechanic.

“Easiest” boss- the pirate. Everything in that fight is pretty killable or avoidable…
Hardest” boss- The bee. I don’t know exactly why I really had trouble with it. feels like Donkey Kong?
Favorite boss- the stageplay/actress one. There is this part where she is replaced by a cardboard cutout. It reminds me of the final fight with Kefka from FF6. It’s great.

November 4th, 2017 at 12:49 pm | Comments & Trackbacks (0) | Permalink

Finished Fatty Bear’s Birthday Surprise (PC, DOS)

The Fatty Bear franchise is affiliated with the Putt-Putt franchise. Although Putt-Putt spanned many games, Fatty Bear was well liked and this game was re-released on Steam too.

A little girl named Kayla has a teddy bear named Fatty Bear and he and Kayla’s other toys come to life when no one is looking. Since tomorrow is Kayla’s birthday, the toys work together to make her surprise party a very special one. You need to help Fatty bake her a cake, decorate a sign, and ensure her present arrives intact.

Fatty can inspect things, and pick them up, and you navigate Fatty through the house to get cake ingredients, keys for doors, and other things that he needs. Clicking on objects makes them come to life and the animations are very entertaining and silly. Or, Fatty will have an animation with that object. Fatty is so cute!

October 7th, 2017 at 11:11 pm | Comments & Trackbacks (0) | Permalink

Finished Echo (PC, Windows)

This is a Danish indie game I first played at a demo booth at PAX last year. It made me really happy to find out that the full version was released.

This is a stealth-action game where you are pitted against copies of yourself, and there is a day-night cycle. During the day, the types of actions you perform are recorded. Come the next day, those copies will re-play an approximation of what you did. Therefore, you want to be very conscious of what you do during the day, and use the night-time wisely.

Examples of recorded behaviors: running, sneaking, yelling, eating grapes, playing musical instruments, bludgeoning, shooting a firearm.

There is something terrifying yet rewarding in going full Rambo in a stealth game

Story: The main character has been awoken after a deep sleep. Long ago, her friend Foster was about to be killed, so she put a digitized copy of him into a small red box. To be resurrected later, once the technology exists. She travels to a weird planet that appears to hold the secret to resurrecting him out of the box.

The visual style of this game is kind of ridiculous. Everything looks like a geometry instancing demo with all kinds of shiny things. But it works for this game. If nothing else it looks really unique and distinctive. It is not Mass Effect or Destiny or Dead Space. Would play an Echo 2.

October 6th, 2017 at 5:07 pm | Comments & Trackbacks (0) | Permalink

My first time playing this game on real hardware.

I treat the SHARP and 90s game consoles very differently.

The SNES I’ll carry it any which way. Power it off unsafely, leave it on for days, use the reset in an angry manner, be negligent with carts and so forth. Also, the fat PS2 has been taken apart and “repaired” (ask me in person if you want more details about this).

However, the SHARP is different. I move it very carefully and keep it upright. Touch nothing unless necessary. All disks must be either in the system, or in protective cases inside boxes. It must always be transported by me, in my car, in a cool temperature. And, minimize the number of FDD transactions.

That last one is the biggest one and it actively affects gameplay. I play in order to minimize the number of FDD reads and writes.

The death penalty in Lagoon is not high in terms of gameplay setbacks, but it is high in terms of disk switching. Dying will reset the game back into the starting area (disk 1), from which you will typically need to insert disk 2 or 3 to resume your save- that’s 2 disk swaps. And starting the game from boot requires 2 swaps across both FDD0 and FDD1. (boot + data1 –> user + data1–> user + data2). And then of course 1 save == 1 write.

Put it all together, and you want to have few, long playthroughs. Try not to save too much, but also really try not to die. Don’t unnecessarily venture into areas which are stored on a different disk.

Is all of this strictly necessary? Maybe, maybe not. Is this founded? I think so.

All the while playing through Lagoon there is this nagging feeling in the back of my head like my days playing it are numbered.

Like the raw number of FDD transactions it can do is finite. While this is true for any piece of computer hardware ever, there is reason to believe it’s much more imminent on this machine. With every seek, every read, every grinding noise that comes out of the FDD- that brings it closer to no longer working. I was especially nervous at the in-game disk switching prompts (besides the boot disk and saved game disk, the game is spanned across 3 data disks). All this was despite the fact this unit has had capacitors replaced and that sort of usual stuff. Eventually, this machine will break down and then the only option will be an emulator compatible with contemporary PCs.

The other problem is media and loading it. This is my second copy of Lagoon. The first copy I obtained several years ago. When I tried to boot it, the boot disk showed CRC fail. The data disks couldn’t be read. While this was a disappointment, it was not altogether a surprise. This happens with old disks and FDDs from that time period. It’s not even uncommon now. Recently when I was playing with the TRS-80 with my coworker, we tried loading some games from the late 80s on 5-1/4″ floppies. We had about a 10% success rate and blew out one FDD where it started to smoke so we unplugged it for the fire hazard.

I’m extremely lucky for having acquired fully working games with fully working hardware. There are a bajillion things that can go wrong with 5 1/4″ disks stored away for 30 years shipped from the other side of the world. If I try and play this game again in 5 or 10 years, I might not be able to. I have a bad feeling about this computer. It has already started happening where it will power on, render corruption, fail to boot into Human68k. I’m going to stay positive, and reflect on the good times on this platform.

Boot and resume save at gold cave

Ending credits

August 26th, 2017 at 10:45 pm | Comments & Trackbacks (0) | Permalink

I loaded the system disk into my computer and started the game. First couple quests things in the town to unlock the starter equipment.

Graphics and sound are good.

It can load saved games (of which, the previous owner left a couple… whoa)

But, can it save games?
Yes. Yes, it can. Yeah, let me just load my game from this 30-year-old magnetic tape
Minimal grinding and churning !!

The gold cave is a maze but no worries I have my old strategy guide.

Can I join the PC gamer club now?

August 15th, 2017 at 10:36 pm | Comments & Trackbacks (0) | Permalink

June 24th, 2017 at 6:23 pm | Comments & Trackbacks (0) | Permalink