Category: versions

  • d/Subatomic Tomato, v/0.4.x

    It was just a couple days ago, wasn’t it, that I was lamenting the slog of working through the spit-polishing of code at the end of a development phase, and yet now here I am letting you know that Paranormal Pickle, my v0.3.x phase of design and development, is complete.

    For firsts, huzzah!  Onto shinier things again.

    For seconds, it has been over a month since I made my first commit to the code repository and just a few days shy of a month since I formally kicked whole thing off as a project from the curious proof of concepts that I had cobbled together over the holiday season.

    What has been accomplished in 0.3.x?

    A lot. Really. 

    From back in those early days (a whole nineteen days ago!) of marching a little sprite image of a character around a grid on the screen I have incrementally coded a whole world populated with multidimensional spaces, nearly fifty distinct game areas, autonomous npcs that walk through those rooms following paths, a clock that marches forward the passage of time, and a smal but mighty database that keeps track of everything from the game state to a progressing story full of lore, dialog, and supplementary help. All the while, I have been fine-tuning my art and locking in a quasi-8-bit style with a colour-scheme that supports the user interface and the game experience.

    Really, what else could I have to do?

    Oh, right. There is still the whole gameplay part.

    In my next phase of design and development, which as per the title of this post I am calling Subatomic Tomato, it is time to go a little deeper into the details and start creating this all important thing called an “object” … 

    What is an object? 

    Well, an object is pretty much anything that it needs to be. There already are a handful of background objects, things like shelves and doors, and all those passive world-filling things that helps to start bringing the game to life in the last phase, but what I’m talking about here are objects that are much more interactive and much more important to the game itself. Objects, simply, are things that the player can pick up. The player can pick objects up and keep them in an inventory, pick them up and put them on a shelf, pick them up and give them to another character. A player can buy objects, sell objects, or discard objects. Objects have value, but they also exist throughout the game as, in many ways, are the whole point of the game. The whole point, in that general hand-wavy sense, is to get objects and put them somewhere in the game where they will have an effect or do something that changes the state of the game itself. That, after all, is what game is: strategically organizing things in a way that progresses one towards victory. In the case of Pleck’s Mart, this is strategically placing the right objects in the right place in any of those nearly fifty game rooms with the hope that doing so advances your progress.

    I’m writing very abstractly here on purpose.

    Side note? I have been thinking about my candidness here and even though I know that any copycat game dev could never really replicate exactly what I’m trying to accomplish, letting you in on everything not only spoils some of the story and game itself, but makes it that much easier for some oversees gamer sweatshop to crank out a low-budget faux clone of my game before I can. This, my friends, is about playing a few of my cards closer to my chest.

    Still. 

    I can write about my progress in building things like complex collision systems that enable npcs to follow paths and yet avoid walking through each other like ghosts. I did that.

    I can write about adding a complex invisible grid layer to every game space that tracks its own occupancy so that no two objects, people, animals, or walls can break these laws of physics one assumes should exist. I did that.

    I can write about the complicated nature of this thing we call time and an effort to impose not just a day/night cycle into a pixel dance on my screen, but to enforce a player to go to bed at a reasonable time. I did that, too.

    I am moving into a new phase of creating interesting and awesome virtual things now and I will be equally vague about their nature while telling you as much as I can about their design and development.

    Like, what does this classic thing called a “player inventory” actually look like in code? One isn’t really creating pockets on the little sprite on the screen now are they? Rather, I have been thinking about it like a virtual “container” —basically an invisible slip of digital paper in the game that essentially holds a list of those aforementioned objects. Things can be in one place at any given time, so the can be in the world list or they can be in a player’s inventory list or they can can even be in an npc’s inventory list. Need to add more objects into the game? The in-game “buy more stuff” system is just another inventory with an invisible digital pencil dangling from it that creates objects from air and  adds them to that same list, and from which those newly created objects can be moved into the player’s inventory list and then from there out into the world list onward an around and over and over.

    I am sitting here writing about it because, as you may have noticed reading this blog, as much as the code is important I truly, deeply believe that thinking about, reflecting on, and writing through one’s process is a close second. So here I sit. Not coding. But planning, plodding, and preparing to slice into a Subatomic Tomato.

    Stay tuned.

  • d/Paranormal Pickle, v/0.3.x

    As I reach and stretch for new features to add into Space Carrot, the 0.2.x phase of development focused around the goal of “creating a navigable world” I have opted to conclude this particular push and move into my next phase of work.

    Space Carrot ends with a few notable features that are technically world navigation functions but really are starting to bleed over into the player management, action managment and UI realm, all work for later.

    I added a light switch. That may not sound very impressive, but what it really means in code speak is that I added an action trigger that only functions during a very particular collision event to conditionally change the visibility of a “shadow” over the current room, simulating a lighting event. A lot of little systems (all of which will be useful later) had to be implemented to make this a reality.

    I also added my first animation.  This is a simple conditional animation of the player walking versus standing based on movement.  This should have been really simple, but I had (again) shortcutted my design work and leaned into single use sprite pngs. Going forward as I bring the world to life in my next phase of design and development I have a bit more confidence about creating animated objects and more.

    Paranormal Pickle is the next phase of work, and it begins today, less than two weeks after Space Carrot.

    This phase is really very much me leaning into populating the world, filling it with colour and art and objects and life.  I have dabbled in this a little as can be seen from the handful of decorative things like switches, doors, and pallets.  But I have a whole store to design, and these then 33 other rooms to fill with shelves and furnishings and wall decorations and windows and more and more and more.

    In other words, this is kind of a creative phase more than anything.

    That doesn’t mean I’m stepping away from the codebase tho. 

    The other side of this is the other layers of the game like the menus and a welcome screen and even just a splash logo (because all games need a studio logo and title cards, right?)  There is a lot of coding and button interaction and the like which I need to study up on and figure out.

    To all that effect, what that means is that in the first subphase of Paranormal Pickle, 0.3.1 I’ll be focussing on three main enhancements to the game:

    First, a title card, which will allow me to implement a mechanism to delay starting the game pending player interaction. Right now the program just jumps right into the game on load. Games don’t ever really work that way, do they?

    Second, I want to fill the world with furniture and life. I’m going to start with the main room: the store front, filling it with shelves and decorations. In this effort, I also want to add something I’m calling (to avoid confusion for myself in the code) lively decorations, which are essentially background objects that have animation cycles.  Think flashing neon signs or trees rustling in the breeze or steam blossoming off of something hot. All of this brings the space to life, and I think I actually know how to do this. It’s just rolling up my sleeves to make it happen.

    Third, I want to add a basic popup menu system. This is pretty self explanatory, but it will need to be something that grows and adapts, so maybe I’ll narrow this down to two “tabs” of things I want the player to interact with. 

    So, there it goes. The game progresses.

    It’s funny. I have started following (and being followed by) other developers on social media, and as proud as I am of the work I am making from scratch and this being my first attempt at a real game and all, I still look around and feel a bit out flanked by so many great game devs out there building amazing things. My game is going to be pretty 8-bit in style and play, so hold that up to  a full 3D triple-A production and it all seems about thirty years too late. I have always had an interest in retro games, of course, having lived and played through that era, and now I’m finding that the retro vibe very much fits with my coding abilities. What I guess I’m trying to explain is that maybe this is all impressive to some and way less impressive to others. But I’m aiming for something simple and fun and achievable with Pleck’s Mart. And right now it feels like I’m aiming just about right.

  • d/Space Carrot, v/0.2.x

    I am really digging into the exposition here.

    Call it New Years Day hangover blues, or call it coder procrastination but I’m feeling the vibe to write while I let the game development-proper marinate for a day.

    I may not have actively timed it precisely so, but it turns out that after some frantic coding while I waited for my party guests to arrive on New Years Eve, I hit something of a proof of concept milestone.

    Some of my (very early) playing around code just-trying-to-experiment and practice coding was labelled under a version number of 0.1.0.  I dumped most of that in the archives of never to be compiled again history.

    But the latest bit of “this might actually work well” code? That was written under the version number of 0.2.0. And that code? It isn’t terrible. I mean, it’s cluttered and a bit inefficient, but I can work with that. Thus, I’m kinda drawing a line at midnight of last day of 2024, and calling that chunk of compilable, runnable, actually-does-something code my proof of concept phase. And so, as we enter 2025 I’m going to move forward with this project but with a lot more structure and a lot more of a plan.

    The next wave of development is called Space Carrot which should take me up through version 0.2.x to a 0.3 candidate. 

    (Of course the way I write all this it sounds like I’m releasing something, but honestly don’t expect anything public until at least a 0.6 or 0.7 version!)

    Alas, Space Carrot is my attempt to build the virtual geography of my game. Such a thing will ideally include the ability to navigate through as much of the map architecture as possible. That is to say some high level things that I am envisioning as features as I work on this next phase should include:

    • doors that traverse room maps
    • wall collisions
    • action triggers
    • game pad controls
    • mouse click controls
    • modal text information boxes
    • more efficient database i/o for rooms
    • a data-driven world map
    • at least a rudimentary tileset that I can refine and improve
    • and, of course, probably a dozen other things I’m not even thinking about yet because coding is like an adventure where you kinda know where you’re going but are bound to encounter things along the route you can’t even fathom as you set out

    I wrote in my last post that I have a bunch of scattered amateur coding experience—including essentially taking the first year of a computer science degree as options while I was working on my major—but I am really very much learning here, working on the code incrementally with a big picture in my head, and lots of little itty bitty steps closer each time I sit down at Visual Studio. 

    Maybe you’re reading this because you are a developer yourself and are curious to see what I’m working on or peruse my code. It’s early, yet, for that, but I am logging all this into a git repo with that plan in mind for some point in the future.

    Maybe you’re reading this because you are just fascinated by the process. I can’t really shine much insight into it. Not yet, at least. Maybe as I go. Maybe that’s why I’m writing all this. Maybe?

    I have read a few books on such things that are largely anecdotes and I know there are terrific stories in the trials and tribulations of normal folks rolling up their sleeves and learning to do such things as build games that work and are fun to play. Check out the Boss Fights book series (I bought a bunch on a Humble Bundle once) or specifically I am thinking of “Blood, Sweat and Pixels” by journalist, author and podcaster Jason Schreier.   There are tales therein that are often just as interesting as the games themselves. So, at least if the game fails—well, maybe I’ll have an interesting story (and some padding onto my coding resume!)

    I don’t know why you’re here, but I’m glad you are interested or curious or—well, whatever you feel that brought you here. 

    In the end? This isn’t a project about money or fame or success. At the end of the adventure all this really is, is me trying to learn with a purpose—and also I’ve been thinking of making a game for two decades without really knowing where to start.  So. I’ll learn. You’ll read. And the code will emerge. Because I think I finally figured out how to get started.

    Stay tuned.