Discord, Socializing, Moderation, and Events

Years ago I discovered the program Discord, a free server hosting software originally aimed at gamers but has since broadened its aim a bit. At first I was only interested in using it to keep in contact with a few friends and as a place to have voice chats during games, but as the years went on I broadened my own horizons a bit. I am an introverted person, as such putting myself out there and talking to people can be difficult for me. But eventually I found a community I clicked with. At first it was simply a server for a YouTube creator I liked, with several text channels relating to the various types of content they make (Overly Sarcastic Productions, if anyone is curious). But then the YouTuber started publishing their own webcomic, and shortly a new channel was opened for discussion of that comic. And my interaction began to ramp up.

Now that I had something I was interested in I could post more freely, and I did. Discussions of plot developments, talking about the world building, and giant posts about theorizing where things were going in the story. I was having fun, and finding people I got along with. Then one of the regulars told us all something fun: they were making a fandub of the comic, and had made their own server to organize it. Needless to say I shortly joined that new server as well. As time went by the server became more of a generalized “fan server” as the fandub went further and further on the back burner, firstly because the organizer needed to focus on college, but also because the pandemic complicated things. But the server’s shift meant it could keep going even without the fandub… with one small issue, the server master could no longer manage the number of members on their own.

With that in mind, Canine (the user name of the server master) put out a call for applications to be server moderators. I waffled for a bit on whether I would apply, finally squeaking in after the last minute. My thought process was simple “If I don’t like it I can quit. And besides, no guarantee I will even make it.” Not sure how other servers make the decision but on this server the mod candidates “campaign” for election, eventually culminating in the server members voting for who they want to be the moderators. However the final decision is in the hands of Canine, while he takes the vote into account (I think the vote and the final decision have always lined up so far) it is their server and they need people they can work with. As you can no doubt guess I made it, a bit under 2 years ago I became a moderator of the server. In the time since, a few changes have been made to the system: we added another election cycle  when we needed more moderators, leading to a twice yearly election with half the mods up for reelection each time. And Canine talking with the Moderators (not up for reelection) to decide who makes the cut. I have been the longest serving Moderator on the server and I seem to be doing a fairly good job.

Over time the server has taken on a bit of a life of its own. And one of the things we have started doing are semi-regular events. These range from holiday art events, to putting together a two year calendar spread, to several word games, and even book readings. And so, after gathering my courage, I started readings books for the server. twice a week I read from two books for an hour at a time, usually finishing 1-2 chapters per reading based on the book. I also record my readings… but for now that is just a “because I can” thing, as distributing those recordings could get me into trouble around copyright. But I have kept this up for over a year, so I am more than a bit proud of it… even if I only had one listener for a while, but an audience of one is enough to make it worth doing. In my capacity as a Moderator I have also helped a few others put on other events. Some were flops, most have been warmly received.

I am still an introvert. But I have found a place where I can be with people of like minds.

Finishing Touches

I once heard someone say something along the lines of “Finishing the last 10% of a project is harder than the first 90%” and, oh boy, am I feeling that. But why would that be? For me and my project there are several reasons, most of which feel fairly universal to creative endeavors. Even if the specifics get twisted a bit dependent on the medium.

The first bit is setting the details in stone. Throughout the project I have been putting in elements of the game and saying, “that is a temporary label/position/color, I can change it as needed.” But now that I am reaching the end those elements can no longer be labeled as “temporary” and need to have a final decision made about them. Now you might say “That is just putting off the work until latter. Why didn’t you do this stuff sooner?” And the reason is simple: a bunch of my “temporary” elements have changed significantly over time, some of them have even been removed all together. So, if I had “done it sooner” it would have been wasted effort. But now those decisions need to be made… And it is just as much fun as it sounds.

But now for the bigger problem: actually getting my product on the market. And this comes with a bunch of questions. What platforms do I want to target? Do I want to charge for the game? Do I want to put adds in the game? Do I want to make a demo version? All these questions and I haven’t even gotten to the real problem (for me anyway): I don’t know what steps I have to take to get onto a given platform. I know I can just look it up, and in fact have looked up the steps before, but I respond to the process in one of two ways. Either I look at the steps and get overwhelmed, either by the number of steps or by things in the steps that I just don’t understand. Or I look that the process and go “Is that it? You must be hiding something. I must be looking in the wrong spot. Where is the real process!” And I know… I just “need to get over it” … Believe me I am working on just that, these are me problems and I am working on handling them. But in the meantime, I just keep pushing it off. What I really need to do is subdivide the problem and tackle the smaller parts, so I don’t get overwhelmed.

More Games to Play

Time for some more games I recommend playing.

Hades
Welcome to the world of Greek myth, the realm of the gods… or the realm one god in particular. You play as Zagreus, son of Hades, in your quest to escape the underworld and reach the surface, perhaps even go to Olympus to meet your aunts, uncles, and cousins. Speaking of your illustrious family, you won’t be tackling this challenge alone, the Olympians grant you boons as you progress through the levels of the Underworld. But… eventually you will die
And that is were the setting does extra duty, you see Hades is a rouge like game, meaning you are meant to paly again and again against randomized levels, getting different perks on each “run”. Most games in this genre have to somehow explain how you keep coming back to try again. But you are the son of Hades, Lord of the Dead, your “reresection” back home is treated as “another day, another death” by most of the denizens of the Underworld… Zagreus especially, who shakes off death about as fast as the blood from the pool he resurrects out of.
As you progress you will unlock new weapons to use, new boons to play with, and even make some semi permeant stat boosts between runs to make things more manageable. And on top of all that it even has some great interpretations of various Greek myths, and not just ones limited to the gods.

Slay the Spire
From one rouge like to another, but where Hades is an action packed brawler game, Slay the Spire is a deck drafting game. In Slay the Spire, you select a class that determines what strategies you can use in the run, for instance the warrior might go for a big armor or a high risk self damage strategy, where as the rouge might go with a cheap card strategy that relies on drawing a bunch of cards and unloading them all at once. But at the start you only have a basic preconstructed deck that shows off a few of the things your class can do, and as you progress (killing enemies, finding shops, and more esoteric encounters) you will have opportunities to add more cards to that deck… and even the opportunity to remove some cards to make your deck more consistent. But the spire has many mysteries, and many strange encounters.
For if you like the idea of rouge like games, but don’t like the twitch reaction speed elements. Or if you just like a well made deck crafting game.

Elden Ring
From the creators of Dark Souls, Demon Souls, Bloodborne, and Sekiro, comes the latest “Souls” game. For those that don’t know, this company has a reputation for making “hard” games where you die, drop your unspent experience/wealth, try to get it back and make more progress, die again, and repeat. Now you will notice I put “hard” in quotations, this is because the difficulty of these games is vastly overhyped. That is not to say the games are easy, far from it. These games certainly are hard… but they are fair.
Was there a trap that caught you off guard? Look for the telegraph and learn from it. Enemy came “out of nowhere”? Maybe dropped down on you? They were always there, and if you spot them early you might even get in some free damage. Boss killing you over and over? Learn their moves and the timings, almost no attacks are completely undodgeable.
But in Elden Ring a new wrinkle was added: an open world. In all the previous games there might be a branching path here or there, but the core game was pretty linear. In Elden Ring you can go off and explore for hours before encountering your first main story boss… or even skip that boss altogether if you explore enough. Or you might be out exploring and suddenly a dragon swoops down, taking out a bunch of other enemies, and starting up boss music. The good news is that these “overworld bosses” you can encounter at random can be run away from and they will stop chasing you… eventually.
As with most “Souls Like” games there is a top level story, a sub level story, and more world building than you can shake a stick at.
If you do decide to pick up this game I heard an anecdote that rings true in my experience: “You know you are in the right part of the game if the encounters are hard, but manageable. If the boss is beating you, but you feel you can win.”

Stardew Valley
And now for something on an entirely different wave length. Stardew Valley is a farming sim game. But don’t let the simplicity of that genre description fool you it is quite a bit more than that. To start the game, your character is tired of the city life and decides to take up their decides grandfather’s offer to take over an old farm in the town of Stardew Valley. To start off you are clearing the land of some weeds, planting your first crop, caring for them, selling them off when they ripen, and repeating. But soon you get enough money to start buying some upgrades to your land and house and you will start making some things to make your job easier, like scarecrows and sprinkler systems. Soon you will discover the mines that house ore for your crafting, but also monsters you have to defend yourself from in order to get that useful ore. Or maybe you got yourself a chicken coop or barn to raise some animals? Or maybe you are focusing on your relationships with the various townsfolk and seeing what stories they have to tell. Or perhaps you might have tripped over one of the more magical aspects of this town and started exploring where that leads. Plenty of things in Stardew Valley to keep ones attention.

What Would my Tutorial Have Looked Like?

A few weeks ago I discussed my reasoning for not including a tutorial in my game. But that was not a quick realization, and in fact I had a mostly operational tutorial at one point. But then I changed the UI layout and would have had to completely rework the tutorial… Anyway! So just to get it out there, what did my design for a tutorial look like?

Firstly My tutorial started with most of the (non-play area) buttons hidden. This was to limit the amount of information the player needed to take in at once. The first “level” of the tutorial was the most basic of basic patterns, the cross in the center of the play area. However I did three things to help teach the player. Firstly, I put some text up on screen explaining what was going on. Secondly, used the hint mechanics to highlight where the player was supposed to click. And finally, I disabled all the other play area buttons. This way I could introduce the player to the mechanics of what pushing a button did, while also allowing them to feel like they were making progress. I continued this pattern for a few “levels” moving the puzzle around to demonstrate that the point you click and the surrounding spaces toggled. But that the puzzle did not wrap around, meaning spaces on the edge affect fewer spaces than ones in the center.

After progressing to two move puzzles I introduce he “restart” button and stop disabling the nonrelevant buttons. This allows the player to mess up, to play around and still get back to the start, however I am still highlighting the correct moves for now. After a few of the basic two move patterns are introduced to the player I introduce the next button, the hint button. At this point I stop automatically highlighting the correct moves and let the player decide if or how many moves they want highlighted while also turning the needed moves up to three and (if I remember correctly, it has been a while since I looked at my old tutorial) finally four moves before the tutorial ended.

To summarize my tutorial set out to do four things. First and foremost I wanted to show the player what pressing any of the play area buttons did, some of my early playtesters were strangely mystified by this aspect of the game. Secondly I wanted to explain to the player what the “menu” buttons each did. Thirdly I wanted to introduce some of the more basic patterns found in this type of puzzle. And finally I wanted to introduce each element slowly, so as not to overwhelm with information.

Controlling Colors and the Night Sky

Something I have been struggling with for my game is this: What do I do for the background? For a long time this was a non-issue as I did not yet have a theme, but one day I decided it needed something more than just a flat color. I tried a few things, but none of them worked very well. Then I found the thing that works, an image in Unity can have a color applied to it and this layers over the existing colors. With colored images this can look horrible, but on a white to black gradient it looks fine. So I popped into PowerPoint, mad a square, and applied a gradient fill from black at the edges to white at the center. After a bit of playing with the ratios I found something I liked and put it into Unity.

Now my backgrounds are a bit more interesting than just a flat color. But I decided I wanted more than that, I decided I wanted the background to react to the current state of the game. As such I had the color progress through a progression of colors dependent on the ratio of moves taken to moves used to create the puzzle and going to black if you go past that number.

This was all well and good, but the sudden change left something to be desired. As part of creating the star fields I discovered a function to have one color fade into another. In the star fields I only used the fading for the alpha value that controls transparency. But for this I needed the actual color changing part of the function. This came with a minor hiccup as I discovered a quirk of the function. In Unity you can layer a color on top of an image, and this color fade function layers another color on top of that. Once I figured that out (took a little while to figure out why the colors didn’t look right) the solution was simple: in the set up for a given scene set the base color to white, then use the function to set the starting color with a transition time of zero. I now have the correct starting color and no extra colors muddying things up.

I had now settled on the technical side of things (mostly, I did do a couple other things I am very happy with. But enough technical stuff for now) and now I needed to choose my colors. I had been experimenting with colors for a while at this point, putting different color progressions in each scene. But to make a long story short I settled on two principles for the background colors. Firstly, I decided to stick to a blue primary coloration, as the sky is blue even at night (it only looks black because of all the “light pollution” from modern electric lights in cities) and as stated in the post about the stars I was now going for a night sky theme. Secondly, was that the colors would progress from light to dark and back to light, mimicking the progression from twilight to night back to the dawn. But with the twist that if you go over the target number of moves it quickly drops to a very dark blue, showing you got lost in the night.

Perhaps I will change some part of this again in the future. But for now I am happy with were I have gotten.

Game Recomendations

So I have recommended some webcomics, some books, and a specific author, now for my other big obsession: Video Games.

Going to go with a variety of choices here, the only real criteria being that I have played and enjoyed a given game. So here we go

Ghost of Tsushima
I am something of a Japanese history and culture nerd (thank Gaijin Goombah on YouTube for that) so a game that takes place during the Mongol invasion of Japan? YES PLEASE! You play as Jin Sakai, the young lord of the Sakai clan and nephew of the ruler of the island of Tsushima. After the first confrontation with the Mongols goes horrifically bad, most of the Samurai of the island are dead, with Jin being left for dead and only being saved when a female thief saves him. It is now your job to save your uncle and the island from the Mongols, but the strict way honor code your uncle taught you won’t work against this enemy, so Jin is forced to learn new strategies and make unsavory allies in order to save his home.
Gameplay wise the game is split into exploration, stealth, and combat. Most situations can be solved either by sneakily eliminating the enemy or charging in with sword drawn and a curse on your lips (although stealth is usually the better option most of the time, you can usually fall back on a brawl if things fall apart). Sometimes you are forced into stealth or combat (infiltration of a castle vs fighting on the front line of a siege) but you are fairly free to handle situations as you see fit. And all of this is not to mention that the game is drop dead gorgeous.

Monster Hunter: Rise
Want to hunt big monsters? Want to wield a giant sword while you do it? Or how about a lance that is also a gun? Or sour through the sky spinning a glaive at the monster’s unprotected back? Monster Hunter is all about it. The play loop is simple: Hunt monster, return to town, craft new weapons, armor, and items to help hunting bigger monsters, repeat. There is also a story in there, and a nice one too, plus a bunch of lore to justify hunting these monsters. But let’s be real, you aren’t here for the story, you are here for the mechanics. And Rise (like most Monster Hunter games) has a few unique mechanics to offer. Firstly is the wire bugs, allowing both for more mobility than in any other Monster Hunter game to date, and being a resource system for new big moves unique to each weapon. Speaking of weapon’s unique moves, the Switch Skills system allows you to swap out some of the moves on weapons to further customize your playstyle.
Rise is one of the most newbie friendly Monster Hunter games so far. That is not to say it isn’t hard to get into, Monster Hunter games are notorious for being hard to understand. But as long as you are willing to open a wiki or look up some guides on YouTube nothing is too arcane or shrouded in mystery that you cannot master it.

Elder Scrolls and Fallout
Just some good “comfort food” games. If you don’t know them yet… what rock have you been living under? These are more or less the base lines for modern open world games.

Sakuna: Of Rice and Ruin
This game is one part 2D side scrolling beat ’em up and one part shockingly accurate rice farming simulator, yes really. You are Sakuna, you are a Kami and as the daughter of a Kami of agriculture and a Kami of War you have inherited both of your parent’s affinities. As such, you gain power by bringing in a harvest of rice and you gain the resources to harvest that rice by going out and fighting demons. But you have to manage your time fighting because managing your rice field is a surprisingly demanding task and how well you do that determines how good your stats will be.
On the story end the game isn’t lacking either. Sakuna at the start of the story is a lazy, spoiled, arrogant, Kami. But after a chance encounter with a group of humans (a large cowardly man who is knowledgeable, but fails at most of his endeavors. An energetic, rebellious, boy and a shy, reserved girl. A baby. And a Western religious missionary.) Sakuna is forced to live on an island of Demons, tasked with subduing said demons. All the characters undergo a myriad of developments and the story intersects with the mechanics in surprising ways. And finally as with my first pick, it has a surprising amount of fairly accurate (if twisted for story purposes) references to real world things, mostly how the Japanese viewed the Kami, but also daily life and Western Missionaries.

 

I still have plenty of games to recommend, but this is enough for today.

Old Code. When to change it and when not to

As part of my comment pass on my code I started to notice a few parts of my code I should change. Most of these changes were along the lines of removing superfluous {} pairs in for/if/while statements. These got in because when I am first writing the code I like to have them for definition of the areas and because I am never sure how large a given statement will get. So better to just put it in at the start than to figure out where I need it latter.

However, in going through the code again I realized I could remove a fair number of lines of code(around 10-20 lines in my longer scripts), making things a bit cleaner. I also realized that a small for loop should be in its own function, and called by the game as needed, rather than being in the update section constantly being run.

Now on to the bit of code that sparked this post.

When I was first making this game I had a bunch of ideas. These included having a level editor and being able to share level codes. As such I needed to create a “password” system for these codes. Something that would be abstract enough that a casual user might not realize what was going on but that also carried the relevant data. Then I realized that the base game (all out) was basically a 25 digit binary string. If I took that string and split it up into 4 digit sections (with a trailing 1 or 0) I could then convert those to base 16 (0-9, a, b, c, d, e, and f for the additional numerals). This solved both problems of making the passcodes look like gobbledygook while also preserving the data I needed. (I was also a bit proud of figuring out how to do all the math on my own without using any sources)

When creating the Match puzzle variant it was a simple matter to append a second string for the end state as well as the original start state. Decoding it was a bit more challenging, but simple enough. With all that in place I went about making the 200+ levels for each game mode using this passcode system. By this point I had already abandoned the idea of a level creator, or of ever letting the player see any of these passcodes, but I had a system that worked, so why change it?

Then I made something for which the system would not work.

I created what I call the “Chromatic” version of the puzzle, where each box has 4 states (one “off” and three different “on” states). By the way, it is called chromatic because at first I used different colors to differentiate the states, but quickly changed that as soon as I remembered color blind accessibility, back on target.

The observant have already seen the problem. While the base and match puzzles were basically binary strings of on or off, this new puzzle type didn’t share that simplicity. However, this did not present the problem one might think it would. I simply had the puzzle generate 25 digit codes with 0-3 to indicate a given button’s state. simplicity itself.

Now back to the present. I was looking over my code and re-discovered this discrepancy. The function that interpreted codes for two of my puzzle types was well over 100 lines long, and the function in my “chromatic” puzzle for the same purpose… was less than 20 lines. So I immediately thought “should I just replace this old, outdated, code?” And the answer I came to was: no.

There are two reasons for this. First the less important reason: The code still works just fine. That is not to say it couldn’t work better, but it is functional and not causing issues, which means I don’t have a good argument against the more pressing issue. That being, how long it would take to replace it. Replacing the actual code wouldn’t take much time at all 60-80% of the job would be simple copy and paste work. The real problem is that I have a bit over 400 level codes between the two level types that use this old passcode system, and I would need to either convert them all or make new ones. And that is simply more time and energy than making this “upgrade” is worth.

If I ever find a more pressing reason to make the change I will take that time to do it. But until then this side grade is not worth the several weeks of effort it would take to accomplish.

So when do you not change old, outdated code? When the effort to do so outweighs the benefits of doing so.

Life, Fantasy, The Supernatural, and Some of the Most Stunning Art I Have Seen

For the past few weeks I have been posting about various works I recommend (should really get around to recommending some games, but that is for latter). These Recommendations have had a lose theme based on medium. Today the “theme” is a specific artist/author: Stjepan Šejić (and no. I will not attempt to help you figure out how to pronounce that).

So first off I will go into a small bit of personal history: How I found this artist. Years ago I was browsing Deviant Art, and I found a creator that had some cool things. This was Stjepan’s main account and included a bunch of the work he did for some major comic publishers (such as some Witchblade covers and panels, funny non-cannon things he did with various DC characters, and Harlee Quin concept art he would later pitch and have made into a graphic novel). I really liked all this art, but it is not where I became entranced with his work. Following a few of the pages favorited pieces I found another creator, Shiniez, and a silly strip they were making (more on that latter). I was hooked. Not just because of the content (Not going to lie, it was hot) but because of the characters and the ways they interacted. And that highlights a piece of what makes Stjepan such an amazing story teller: you show up for the plot (or “plot” as the case may sometimes be), but you stay for, nay get hooked on, the characters. As you may have put together the Shiniez account was also owned by Stjepan, but he tried to hide this. I had my suspicions for a while (the art style was just too similar to be a case of similar or copied style) but one day he reveled this truth and I began following his work. These are some of those works I recommend.

Death Vigil
Welcome to the Death Vigil. Our job is to stop the eldritch abominations from the other side of the veil from crossing over into our world and turning it into a buffet. Every member of the Vigil has three things in common. Firstly, they all died. But, secondly, they all got the attention of a being known as Bernadette, affectionately called Bernie, also known as The Reaper, complete with giant scythe. She gave these people a chance to be reborn and help defend the world. To help accomplish this each member of the vigil gets a Veilripper, a powerful artifact and one of the only things capable of actually harming the beings from beyond the veil. But on the other side from the vigil are the Necromancers. Poor fools that have lost, and have been promised by those from beyond the veil that their power can bring those the necromancer lost back…
Lots of action, lots of found family themes, and more than a few winding plots intersecting. The first few chapters can be found on Stjepan’s deviant art page, and he is in the process of making the next volume. For more on that, see his Patreon page for updates and early releases of all his independent work.

The Queen and the Woodborn
To be fair, I have not read as much of this story as the others. But it is just as beautiful as the others and has a great set up so…
In this world of medieval fantasy, a Queen recently lost her son and travels into the woods in her grief. These woods are ancient, magical, and forbidden for any that trespass belong to the Woodborn. But the Queen does not care, here lies some faint chance of seeing her dead son. And she thinks she has found it, until the Woodborn shows up and saves the queen from the being that had tricked her and tried to devour her. But now that she is in the woods she is bound in service to the Woodborn, and they come to an agreement: the queen will server the Woodborn until her dyeing breath. At which point it is revealed that the Queen was already dyeing and promptly breaths her dyeing breath. But that is not the end of our story, for death is not an end here, but just the beginning of our tale of mythical beings, gods, and the queen who stumbled into it all.

Sunstone
Anyone familiar with Stjepan’s work was waiting for me to bring this one up. And I don’t think there is a better way to introduce this work that the words of one of the main characters at the start of the story:
“Dear reader, this is the story of how I met the love of my life. That one person that compl–
WAIT! DON’T LEAVE YET! THIS BOOK HAS LOTS OF HOT LESBIAN BONDAGE SEX!
Good. That got your attention…
You bunch of pervs…
But that’s alright. You see, I’mma let you in on a little secret
We are all a bit pervy in our own ways…”
So yeah, this is a love story played out between a pair of women who are into BDSM as a submissive and dominant respectively and the various people around them. Don’t get this confused with 50 Shades of Abuse or any other sadist porn. A very large point is made in the story about needing trust, cooperation, and consent between all parties so that everyone can get what they are looking for… and more or less paints the BDSM community as a bunch of sexual geeks that put more effort into the act and like things a bit spicier than “normal”. This is a story about pleasure, love, trauma, jealousy, miscommunication, and drop dead gorgeous art. And yes, to address the elephant in the room, there are sex scenes in this story. There is full frontal nudity in this story. And every time it happened I was either too enraptured by the character’s inner monologues or too impatient to get back to the story to care.
And yes. This is the story I found on Stjepan’s alt account that got me hooked… or at least… it kind of is. You see how this story came about is a fun story in and of itself. Told in comic form at the end of the physical copy of volume 1. Stjepan was suffering from burnout. To help combat this he created an alt account to post some silly one-shot style work, and chose the theme of the account to be: fetishistic erotic imagery. Just some random pin ups so he could get the creative juices going again, nothing serious, and obviously nothing with a storyline too it… as you can imagine that idea spiraled down the drain as the creativity spiraled out of control. Pretty soon he had characters, he had relationships, the characters were getting arcs, and he had a story that needed to be told. But all he had were loosely connected pinups and a few small comic pages. So he re-wrote it to be the story it is today.

Other works of Stjepan’s to look out for:
Achilles Shieldmaidens: Women in giant mechs fighting as part of a final resistance against aliens in giant mechs. Still in production, but from what I have seen so far I am HYPE for it to see the light of day.
Fine Print: Think Sunstone had too little sex and demons? Well half the main cast of this story are succubi/incubi. And somehow it is just as character driven as Sunstone.
Harleen: Stjepan’s take on the origin story of Harley Quinn. Amazing art (as always) and a fresh take on the story. Unlikely to get a follow up as Stjepan’s independent work is making him more than his contracted work did.

Tutorial or No Tutorial?

For a while I thought my game would need a tutorial, for two simple reasons. Firstly just the simple fact that most games today have some form of tutorial. And secondly because when I tell people “I am making a game based on lights out” they tend to not know what I am talking about. And even when they get the game in their hands it takes them a while to actually understand the mechanics. So the answer is obvious right? Make a tutorial.

Except… making a tutorial is no where near as simple as some people will have you think. I making my tutorial I had to basically recreate all the systems in my game in a… disassembled form, so that I could disable and enable various parts based on how far through the tutorial the player was. I never got it fully functioning, mostly because before I had it “finished” I re-did all the UI. And since I wanted the tutorial to mirror the main UI (while also slowly phasing in UI elements as needed) that meant the entire tutorial would have to be re-made (including most of the programming).

Now starting near, if not at, square one on a tutorial level I asked myself “Is this really necessary? Do I really need a tutorial?” and the answer I came to was: no. And again there were two simple reasons for this. Firstly, I looked at other “Lights Out” games. And none of the ones I found had a tutorial. At most a similar game had a screen of pictures and text that explained the mechanics (Badly. That game needed to be seen “in motion” to be understood.), and that lead to realization number two: I already had a tutorial built in. Yep, from the start I did the same thing as all the other Lights Out games did with there first few levels, I made them super simple 1-2 move “puzzles” that served to show how the game works, served to show what pushing the buttons did and what certain common patterns looked like. The more I thought about it the more sense it made, my testers got better at solving puzzles as time went on, meaning they were learning how to play… except when they were “making a pattern” or otherwise just playing around with it.

So, did I need a tutorial? Yes and no. I do need a way to instruct the player on how to play, but I was stuck on this idea of “what a tutorial is supposed to be” and not seeing what I already had. As with most games, mine needs a tutorial. But also as with most games that tutorial does not need to be a ham fisted “Hey player! THIS is how you do thing.” It can be more organic and integrated into the game itself.

Comments Comments Comments

For those that don’t know, in programing comments are a piece of text that is ignored when the program is run (had to rewrite that about 3 times to avoid using words like “compiler”. If you don’t know what a comment is, a compiler would just confuse you more.). Now you might think: Why write stuff that just gets ignored? Two reasons, both very simple. The first is that you might temporarily comment out a piece of code so that it stops running, useful when you want to disable something without deleting it. And the second reason is: documentation.

Now I am a one man development team, that means I have written all the code (except the base systems unity provides) that goes into my game. As such, I can remember why I wrote a piece of code a specific way fairly easily, taking only a minute or two to re-read a few of the functions. This however means I am a bit… lazy when it comes to adding comments about what things do.

Now I could make excuses about the process being iterative and not wanting to write out an explanation for a line of code that is likely to either change or go away. But the truth is that during the coding process I just forget to write the comments and after I get it working I just move on to the next thing.

That brings us to the solutions for this. The first immediate one is that every now and then I go back in and add comments to my code. A long annoying process that will have to do until I can develop the habit of commenting as I go. The other solution is having other people to work with that can and will look over my code. I know myself, doing something for myself? Sloppy and it just needs to work. Doing something for someone else? Detail oriented, dotting my i’s and crossing my t’s. That extra pair of eyes will force me to develop the good habit of commenting as I go. But that is not going to be a quick process, so for now? Back to adding comments to everything… all at once.