I think that desiging games can make you a better writer, and this is something that I've been discovering in my VVVVVV level. This is the first time I've tried to make a large, cohesive space for the player to explore: all of the games I've made so far have been tiny bespoke experiences with very deliberate pacing. Making an exploration-focused game is presenting a lot of additional challenges, and that's why work on it has been so slow-going comparitively. It's very tempting to make a mostly-empty world with methodically placed things for the player to discover. This is the tack used by a lot of "open world" games, and it works okay, because it fulfills our expectations of a realistic world. Whatever things we're looking for, be it fossils or ancient temples or buried treasure or rare orchids, are scattered over a huge expanse of mostly-empty terrain. We know that exploring and searching for things in the real world requires patience and dedication, and we don't expect the empty space to have anything interesting in it. Open world games often try to fill this space with random encounters, which if done well (and in moderation) can help keep things exciting without hurting the feeling of discovery. However, a lot of the appeal of open world games is just in the zen quality of exploring a vast realistic space, and different players are going to have different thresholds for just how much stuff they want interrupting their zen. If you don't like the combat in a game, too many random encounters could turn a tight 10-hour exploration experience into a 40-hour slog. On the other hand, players who like the combat could find a 20-hour compromise boring and samey with too little to do during exploration. It's a hard balance to strike, and you have to be sure whatever experience you're building is being pitched to the right audience. As an exploration game, VVVVVV differs quite a bit from this. There are no random encounters; everything in the game is an authored experience. It's not a realistic world, it's totally abstract and the way you move around has no real-world analogue. It's not enough to have a big empty box and place things haphazardly for the player to discover; every screen has to be meaningful and justify its existence in some way, even if it's just a rest. A dead end can't just be a dead end: at the bare minimum, it has to feel like a break from the action surrounding it. Ideally, there will be some sort of easter egg or lore or joke or piece of information, but there has to be something the player isn't expecting. The core VVVVVV game uses the maximum possible 20x20 map layout (as one would expect) and it does a good job of pacing things for the player to discover without a lot of dead weight. Nothing feels like it only exists to justify the size of the map; every screen has a reason to be there. It has a small amount of empty space between the "levels", and getting across it never feels tedious. When I started making Abscondemonium, I chose the maximum 20x20 level size to challenge myself creatively, and I didn't give a lot of thought to pacing. The world is a very large building broken into 4 smaller section that the player has to complete in order. I started building out the first section before I knew what the whole level would look like, put all of my ideas into it, and made sure every screen felt like it had a reason to be there. When I started the second section, I realized that I didn't yet have enough ideas to fill it the same way. I started spreading my ideas more thinly, filling in the empty space with, well, nothing: just terrain to traverse. I thought this wouldn't be a problem; after all, look at how much of an open world game is just rote terrain traversal from point A to point B. It doesn't matter what's between points of discovery as long as the thing that's discovered is worthwhile. But when playing my own level with this mindset, I realized that this isn't true, and it's changed the way I think about open world games and fiction in general. Playtesting a level and having to go through space that's not thoughtfully designed over and over is a great demonstration of why this space should be cut. It's a way to tangibly experience dead weight, to physically know why something is wasting your time. When writing fiction, beginners tend to write a lot of scenes that simply shouldn't exist, and the story suffers for it. The urge is totally natural, and unavoidable: without these superfluous scenes, a story is just a list of things that happen. There's no tension, no pacing, no drama. In the foreword to the uncut edition of The Stand, Stephen King gives a great example of a totally functional version of Hansel and Gretel:
Hansel and Gretel were two children with a nice father and a nice mother. The nice mother died, and the father married a bitch. The bitch wanted the kids out of the way so she'd have more money to spend on herself. She bullied her spineless, soft-headed hubby into taking Hansel and Gretel into the woods and killing them. (etc)He then goes on to give examples of details that can bring the story to life. I think it's really easy to fall into the trap of thinking that everything else you add to the story is just filler, additional writing you add because a story can't just be its plot beats. But that's not true. Every detail has to mean something. Paragraphs B and D can't just exist because you need something between paragraphs A, C, and E. For the reader, the dead weight will accumulate, the tedium will take its toll, and no matter how good the plot beats are, they'll be marred by having to wade through sludge to get to them. The author is often too close to the material to get a sense of how heavy the dead weight is. Designing a game gives you a different perspective on it. Every time you playtest the game, you encounter the dead weight as if it's the first time. You can't just skim over it. You feel it, physically, every time. It makes it a lot easier to figure out what needs to go. This ends up being a longer, more challenging creation process, but the result is worth it. A player should never feel like they're pointlessly spending time until they get to the next thing, and neither should a reader. Designing games changes the way a person thinks about creation, and I think it can help make them a better writer. I recommend it. (Disclaimer: blog posts are written stream-of-consciousness style with minimal editing, and this essay isn't to be taken as an example of what I think is good writing. Unless you think it's good. In that case, I meant to do it.)
The Mr. Teal page now has a version compatible with 32-bit versions of Windows. Here's a photo of it running fine on my Thinkpad X60 from 2006. I assume it would run fine on even older versions of Windows, provided they support the OpenGL version used by QB64. No way to test though. The Thinkpad X60 is a great little machine. With Firefox ESR 59 and Office 2003, it's still quite functional today. The keyboard is a thousand percent better to type on than any laptop released this decade, and although I'm not a devotee of the trackpoint (I use a wireless mouse) it's no worse than a trackpad in a pinch, and it saves so much vertical real estate under the keyboard. You can often find them for under 50 bucks on ebay. You can install some old emulators and have plenty of free games to play, and now you can read comics with Mr. Teal! I believe in supporting older hardware, and with a few exceptions (mostly playing pretty games and editing videos) everything we do with computers could still be done with computers from 2006 if the death march of capitalism didn't dictate that programs uselessly consume ever more resources in the name of progress.
Zero stars Play time: 31 hours Original review $15 on Steam $15 on GOG (DRM-free) Wish I could recommend this one, since I really enjoyed most of my time with it, but unfortunately the difficulty ramps up about 2/3 into the game in a way that's making me give up on it. Until that point, I felt able to adapt to most of the new enemies and situations the game threw at me, and the exploration loop felt pretty good. I wanted to push myself as far as I could into the dungeons to unlock the next elevator before heading back to town, and the gradual difficulty creep with monsters provided a really good feeling of tension. The beginning of the game is super well balanced and pushing myself to explore despite the danger felt rewarding. Then, at some point, you gain access to the "free warp" spell, which while super convenient, totally destroyed any feeling of tension. You can essentially warp back to town, rest to get all your spells back, and then warp back to the exact spot you just were, elevators and shortcuts be damned. The game doesn't really give you a good reason not to constantly do this, so the feeling of risk/reward was gone. To compensate, what the game does next is start to throw enemies that are just absurdly overpowered. Every encounter will feature enemies that always go first, have attacks that instantly kill one or more party members, inflict multiple status effects, drain multiple levels, drain your magic, and on the off-chance they just do a basic physical attack, will do at least 75% HP damage even to my strongest characters with equipment I've found that's far better than anything you can buy in the shop. The only way I can continue to make progress is through aggressive save scumming. I save after every battle and if the next encounter has more than a couple enemies in it, I hit alt-F4 and just load my save again. The strategy at this point, I imagine, would be to re-class my characters into something that gains agility so I have a chance of buffing my party and debuffing the enemies before they can instakill everyone. I've done a little bit of re-classing, but not much, because I really felt like the game was punishing me for experimenting. Changing a character's class drops them back to level 1, and although they keep their stats and spells, they take such a massive HP loss that they're guaranteed to die in 1 hit. You can convert gold into XP to get their levels back up, but because characters have a chance of losing stat points every time they level up, this feels like a crapshoot, too. For example, I wanted to get my bishop's agility up so they have a chance of getting an action before the enemy. So I temporarily changed them into a thief. I got their levels back as high as I could with the gold I had on hand, which didn't bring them up to the level of the rest of my party, didn't give them enough agility to start going first, and also caused them to lose so much piety that I wasn't able to turn them back into a bishop. So I loaded my save, and realized I would just have to repeat the process and save scum until I got a more desirable outcome. And finally I realized that this is bullshit and stopped playing. So yeah. Can't see any way to proceed without hours of grinding or save scumming for better die rolls. Maybe I fucked up by not being diligent enough and re-classing my characters more frequently when the game was still "easy", but the game never stresses this as an important mechanic, and by reducing your characters to level 1, massively disincentivizes you from doing so. That said, for 15 bucks I still got a lot of enjoyment out of it, and if you go into it knowing what to expect, it might be possible to have a party capable of dealing with the high-level threats, but unfortunately it's too late for me. Maybe I'll revisit the game in a couple years and start fresh, but for now, I can't recommend it after seeing the late-game balance changes.
3.1.0 is now available. Lots of UI tweaks and bugfixes. Added sub-directory support, so you can now access up to 400 folders from the main menu. Added a
Rescan Folders option, so you can add a folder without having to close and re-open the program. See the changelog for more info. Also, two new comic packages: Nod & Sleep (a short story about a demon boy who doesn't want to sleep) and Pepper & Carrot (an ongoing open-source comic about a witch and her cat.)
Mr. Teal v3.0 is now available on its project page. I know that's hard to believe, considering the gap between 1.9.3 and 2.0, but working to get the new version out the door rekindled my interest, and I've been working at a pace some might call "feverish". I think it's worth it though, because this is surely the best version of Mr. Teal ever released. I mean, obviously. Every version is, as far as I know, better than the previous one, otherwise I wouldn't release it. That's the theory, anyway. Speaking of anyway, anyway, here are the changes. Barring any catastrophic bugs I didn't catch, this will probably be the last version for awhile. Unless I have some other ideas. Enjoy.
Dang, this might be the first time I've kept a blog layout for an entire year. Well, not counting Livejournal and stuff like that. I'm still pretty happy with it. I'm glad I made a simple little PHP CMS instead of installing Wordpress or some bloated package with a bunch of database and comment stuff I don't need. I need some flexibility as far as layout goes, but don't need a bunch of interactivities. This is the simplest way to get what I'm looking for. Anyway, all the old posts are now on the 2019 index page and we've got a nice clean slate here for the new year. I didn't really post a follow-up for Intentional Media Week, so: it didn't go well. I achieved my goal of not watching youtube or twitch and not listening to podcasts for the entire week up until Friday when I gave up and cheated, but I didn't replace the media with anything or do any of the stuff I said I was planning to do. I don't really know what I did for that week. Mostly just twiddled my thumbs and looked at websites, I think. However, since then, I've done a lot of things very intentionally, so maybe it sort of worked? Maybe I just needed a brain flush. I've completed several video games and a couple books, and I spent a lot of time working on Mr. Teal and my VVVVVV level. I'm still consuming a lot of youtube, twitch streams, and podcasts, but I've at least been just listening to new stuff and not re-watching and re-listening to old comfortable stuff just to have background noise. I think my mistake was focusing on the wrong sorts of media. I've decided that I'm just not a big fan of non-interactive media. I'll watch a movie or TV show if I'm in a theater or if I'm watching with someone else (and basically forced to pay attention) but if I'm by myself, which I am, most of the time, I'd rather play a game or read a book. I'm just not much for sitting still and watching video. The youtube videos I watch are generally under an hour, standalone, and are things I can listen to in the background while I do other stuff. I can easily skip ahead if a part's boring or rewind if I missed something. I don't feel the need to give them my full attention the way I would with a TV show or movie. Even reading a book is enough interactivity for me: I'm turning the pages, I can skim or re-read a section if I need to. I can provide my own music. Basically I just don't like sitting watching video in a linear manner, especially longform video like a season of TV. "Binge-watching" is pretty much impossible for me, there's no way I can pay attention to something for that long. Starting a serialized TV show with 9 seasons feels like a prison sentence to me, I just can't devote that much time and attention to one non-interactive thing. It leaves me out of a lot of conversations, but that's okay. I'm happy enjoying what I enjoy. So while I wouldn't call it a resounding success, Intentional Media Week taught me something about myself. Well, reinforced something I already knew. I need to stop feeling bad about not liking things other people like because I have a different kind of brain than they do, and I need to be okay with giving up on something that's not grabbing me. I've written about this before, possibly on this very blog, but I have a real problem creating a mental block for myself when I'm no longer enjoying something but feel like I've put too much time into it. Reading a long book or playing a long game that gets worse as I go causes my brain to get stuck. I don't want to continue it, but I don't want to give up on something I've put so much time into, so I'm in entertainment purgatory: I keep telling myself I'm going to finish the thing, I never do, and it prevents me from starting a new thing. It's textbook sunk cost fallacy, and logically I know that, but my brain's never been one to cotton to an idea just because it's logical. Anyway, how was the rest of 2019? Well... not great. I continue with a job that I can tolerate but that prevents me from having much of a life outside of it. It's impossible for me to have any real-life social connections with dinural people, it's logistically difficult for me to do anything outside of work and home because society isn't designed for me. I don't want to give up a job that I can tolerate and am somewhat good at. Changing to a different time slot would greatly reduce my tolerance for it. I feel like I'm in another kind of limbo. I don't know if this one is a mental block or not. I thought I'd never be able to find a job I could tolerate as much as my last one, but when that job eventually changed in ways I couldn't tolerate and I got fired, I discovered that wasn't true. Is it not true this time? Is there a job I wouldn't hate doing, but would still give me the freedom to do things during the day? I don't know, and there's no way to find out without giving up on this one. It's a real rough situation. Creatively, this year was ok. Not great. I didn't finish anything I'm super happy with. Releasing Mr. Teal 2.0 before the end of the year was a pretty arbitrary goal, because it was one I knew I could complete. It was basically done anyway, I just needed to fix one bug and it would have been good to go. I did that relatively quickly on Sunday, but ended up spending most of the rest of the day making extremely small, fiddly changes no one but me would ever notice or care about. But it was satisfying, I had a vision and applied my problem-solving skills to make the vision a reality. It's still not perfect, of course, but I'd be okay with 2.0.1 being the final version. It's useful enough.
ASIDE: MY SOFTWARE PHILOSOPHY
- A program is "done" when it solves one problem for me, and is usable without breaking anything else
- If a program does this, it deserves a 1.0 release
- Making the program do more useful things, or making the thing it does more useful, is encouraged but not necessary. It will keep doing that one useful thing forever, and will be useful until another program comes along that does it better (or until I discover the one that surely already exists and just don't know about)
- Adding new features or changing features should not hinder or eliminate the original useful feature
So, Mr. Teal 1.0 did one useful thing I couldn't find another program to do: display an image at full-size, let me scroll and navigate with the arrow keys, and view annotations. That's all it needed to be and I would have been happy with it (except for the massive memory leak glitch I fixed), but I'm happy with the 2.0 version too. It's more useful but the core functionality hasn't changed. I do intend to make some more tweaks - it's horrendously unoptimized, and even though it's still super tiny and fast compared to most modern PC software, I know it can be even smaller and faster. I need to figure out why it can't handle folder names that have a space, and I'm worried it's going to make me rewrite the entire folder acquisition subroutine, but being able to handle spaces is something it should be able to do. At the very least I'd like to get it to ignore folders or show a warning instead of straight-up crashing. Once I'm done with that, my next goal will be to improve the speed when viewing large images. The split-second of lag when you navigate is barely anything, but I know it can be instantaneous. I have a proof-of-concept where the program keeps the previous, current, and next image and annotation in memory. It takes a chunk of time to load 6 files, but the idea is that all the loading will happen in the background, while you're reading a comic. When you're done with the current one, you press the right arrow key and the next image and its caption is displayed instantaneously, and as you start reading that one, it loads the next comic and its caption, and unloads the same from two pages ago. This won't be good for quickly scanning through a number of large images, but it shouldn't be perceptibly slower than it already is, and the reading experience will be greatly improved. This almost ended up in the 2.0 release, but I hit a few snags I'll have to work out. My other projects are probably too small to mention, but there were several of them, and doing several small things is a lot better than starting and never finishing one big thing. Speaking of big things, the best thing I worked on is something I can't show anyone yet, which is my VVVVVV level. I've proved that I can chip away it with small bursts of inspiration, I just have to make sure I keep thinking about it and hope that inspiration continues to happen. I really hope this will be the big project that I finish in 2020. I guess that's all I got. Happy new year.