A Few More Webcomics

So I have SO MANY Webcomics I can recommend, a lot of them are a bit… hard to explain. Mostly this is because they have evolved over time (for instance going from one-shot gag comics to a full blown world spanning storyline) and some of them, when I think about how I would describe them, just don’t sound interesting. Then there are the more than a few on hiatus and so I don’t really want to recommend while they aren’t updating… but otherwise totally would. All that out of the way, here are today’s recommendations:

First off we have a weird one:
Widdershins by Kate Ashwin
First page: https://www.widdershinscomic.com/wdshn/sleight-of-hand-cover
Current page: https://www.widdershinscomic.com/
Magic, Bounty Hunters, Spirits, Wizards, Victorian sensibilities, and Magicians (and yes, those are different from wizards, one of them uses “real” magic). All this and more combine in this strange multi part story. The first of these stories involves a wizard drop out getting captured by one of Britain’s most famous bounty hunters… after he accidentally became the king of thieves. As this and the other stories unfold a generation spanning plot is slowly reveled as more equally weird characters are introduced. And all that is just the first 7 books, the story is still going even after all that gets resolved.

Next up we have another fantastical story:
Skin Deep by Kory Bing
First page: http://www.skindeepcomic.com/archive/issue-1-cover/
Current page: http://www.skindeepcomic.com/
Michelle Jocasta is just a normal girl going away for college. She gets paired with a outgoing roommate and quickly falls in with her friend group. Until one day she gets a weird amulet from a mysterious stranger and everything goes sideways. Turns out, she’s a sphinx, she appeared human because of ancient magic that the amulet broke (don’t worry, she can change back). All her new friends? Also various mythical beings with amulets of their own that allow them to pass for human. And just to make things a bit more complicated, the thing about sphinxes? They are supposed to be extinct.

And finally we have the first webtoon I am putting on one of these lists:
Lore Olympus by Rachel Smythe
Archive page: https://www.webtoons.com/en/romance/lore-olympus/list?title_no=1320 (note, if this is the first time you are visiting the webtoons site today, it may reroute you to the webtoons home page. Either search for Lore Olympus from there or come back here and try the link again. No I don’t know why this happens.)
Welcome to yet another retelling of the story of Hades and Persephone. WAIT! Don’t leave yet. First let me tell you what sets this one apart. Firstly there is the setting. The mortal world is pretty much what you expect from the ancient world, but Olympus? modern tech, styles, and fashion. And that is where most of the story takes place. This is not your usual retelling of the story. So far Hades has never once kidnaped Persephone. The young Goddess is given much more agency than usual (even if she is reluctant to exercise that agency). And many, MANY, other stories and plots are woven into this tale (mythology buffs are going to freak when they read the name of a specific mortal. Knowing almost exactly how that is going to go). For example, woven into this story is a re-telling of the story of Eros and Psyche. Many of the gods are just as… flawed, as we knew them to be (cough, cough, Zeus, Cough) and a few are broken in new ways. Come and see how this old story unfolds this time.
WARNING: This comic discuses some very heavy topics, including rape. Each episode has warnings at the top for these topics. You have been warned.

Book Recommendations

Last week I presented some recommendations for free webcomics. And I do have more… oh so many more… but today I would like to recommend some of my favorite books.

First up is one of my favorite series of all time:
The Callahan’s Series by Spider Robinson
Welcome to Callahan’s bar where all the drinks are a dollar, you smash your glass in the fireplace (after giving a toast), the puns are plentiful, the company is great, and every now and then a time traveler or alien walks in for a drink.
The first few books of the Callahan’s series (collected in the omnibus: The Callahan Chronicles) are collections of short stories told from the perspective of one of the bar’s regulars: Jake Stonebender. Each story introduces some new problem for our fun loving bar flies to contend with, ranging from an alien that needs them to stop him from destroying the Earth, to a time traveler trying to save the woman he loves, to (in a latter book) an Irish Spirit that loves nothing more than getting drunk on Irish spirits (almost closed the bar single handed). Not to say all the problems they deal with are supernatural or otherworldly, but it does make for the most memorable ones.

Next up, in an entirely different direction we have:
The Codex Alera by Jim Butcher
Welcome to the world of Alera, where Roman like people rule the land with the power of elemental spirits known as furies. These furies come in 6 elements, fire, wind, water, earth, wood, and metal, and bond with a person in childhood for life. But after the First Lord’s heir dies plots begin to form to replace him. As our story begins one such plot begins to unfold and one unlikely young man, the only Aleran to have no furies of his own, will pulled in and forced to try and stop it… or else lose his home and everyone he loves.
The Codex Alera is told from multiple perspectives and almost every chapter ends on a cliffhanger of one kind or another. Excellent world building and creative story telling keep the action interesting. The series was born when Jim Butcher claimed there “was no such thing as a bad writing prompt” and challenged an internet forum to give him a so called “bad writing prompt”. What he got was this: The lost Roman Legion + Pokemon. And somehow he created this series.

And finally for this entry we have a true classic:
The Dragonriders of Pern by Anne McCaffrey
Welcome to the world of Pern. An idyllic agrarian society (with only a small bit of sexism… they are dealing with it). The people are happy in their holds, tilling the land, and serving their Lords… up until the Thread returns. A long thing white organism that rains from the sky sporadically in hundred year on/off cycles, thread eats any organic mater it comes into contact with and rapidly propagates if it reaches fertile soil, spreading its destruction even further. Good thing the brave Dragonriders and their colossal mounts are here to burn the Thread from the sky… or at least that is how it always was. But now Thread has been gone far longer than is normal (around four times as long as normal) and the Dragonriders have fallen into disfavor. In fact most of the Dragonriders disappeared. So now an under maned group of Dragonriders must unite a world that does not yet realize it is in peril before it is too late.
This book is one of the classics. The first book was originally published in 1968 and popularized the idea of “dragons as noble mounts” rather than “dragons as terrifying monster”. The Dragons in this series form life long bonds with their riders upon hatching, along with a psychic link they use to communicate with one another, and have the ability to travel through a space called between, effectively teleporting. Oh! And one more thing. I should mention the series’ genre. One would think with the importance of Dragons and the low tech society this would be a fantasy book… but nope, you fairly quickly realize this is a sci-fi book. And that only gets stronger the more books you read in the series.

Text and the Importance of Font

Something I have known I would need to do, but had been putting off, is to find a new font for my game’s text. I had for most of the development been using a “default” font that came with Unity, perfectly functional and great for experimenting with to learn the ins and outs of TextMeshPro… but that is the only good thing I could say about it. It wasn’t an interesting text.

The first step is one I didn’t consider until I started getting into it: What fonts can I legally use? After some digging I found a few sites that listed if the font was free for commercial use. But digging around a bit more I found what should have been obvious: Google has a repository of free fonts submitted by various people. So that is the source of my font settled, but there is another problem.

But, when it comes to picking artistic styles and the such I don’t have much confidence. As such I asked for some advice on fonts I should use… and got instruction on how many fonts I should grab. And so I sought out 2-3 fonts. The minimum being 2 fonts, one for the buttons (aka the text that the player will directly interact with) and another for instructional text (aka the text that just sits on screen giving information), with an optional third for titles and such. At first I was given to sets of paired fonts to try out, but most of those fonts had hidden issues that made them unsuitable for my game (mostly in the size of line breaks).

These initial text suggestions focused on readability and a “futuristic” feel. But once I started exploring Google’s repository I found another style I was drawn to. A more flowing style that gave a “fantasy” feel. I felt that fit better with the theme of a night sky I had created with the stars. But a new problem arose… this text sacrificed readability for a fancier form. But no problem cannot be overcome. This initial font I found would become my title font and I found two more similar, but much more readable, fonts for both the buttons and instructional text.

Comic Recommendations

So for a while I have been thinking “I should write a review stories I really like”. Part of this is that I read a lot of web comics, another is I read more than a few books, and finally I enjoy having people to talk to about these interests. As such it is helpful if other people also read these stories… and now we come to the reviews.

Unfortunately I can’t pick just one property to review so initially I will just list a few I recommend and give a short summary to try and get you interested.

First up is a long running series by a semi-legendary couple:
Girl Genius by Kaja and Phil Foglio
Home page: https://www.girlgeniusonline.com/index.php
In the world of Girl Genius being a mad scientist is not something you chose to be (I mean you can, but you will be at a disadvantage) it is something you are born into. This is called “The Spark” and gives you insight and inspiration into inventions. Surrounded by steam punk gadgetry everywhere these sparks via for power. Our main character Agatha is a small town girl attending an academy… but nothing she constructs works. It all falls apart and she doesn’t know why. One day her heirloom necklace is stolen and that triggers the unwinding of many secrets about both Agatha’s heritage, and the world at large.

Next up we move from sci-fi to fantasy with:
Namesake by Megan Lavey-Heaton
First page: https://www.namesakecomic.com/comic/the-journey-begins
Current page: https://www.namesakecomic.com/
One day a girl witnesses an accident in a library that catches the building on fire, and ends up transported to OZ. Yes that OZ, of Dorthey and Yellow Brick roads. Upon accidentally solving a “wicked witch” incident she is all set to go off on an adventure… except for a few problems. Firstly, as you might expect, not everything is as it seems and something in OZ is… off. Secondly, this girl… ISN’T DORTHY! Her name is Emma and would you stop calling her “The Dorthey” please!
Welcome to a story where fairytales are real, magical, and dangerous.

Now we have a much more recent creation:
Aurora by Red of the YouTube channel “Overly Sarcastic Productions” (I also recommend the YouTube channel: https://www.youtube.com/c/OverlySarcasticProductionsChannel)
First page: https://comicaurora.com/aurora/0-1-1/
Current Page: https://comicaurora.com/
Welcome to the world of Aurora. A world literally crafted from the dying forms of 6 elemental Primordials: Earth, Fire, Water, Wind, Lightning, and Life,. A world with a myriad of races crafted by the creator gods known as The Twins. A world where any sufficiently sized and old city/forest/mountain/lake has a god of its own, where mages sculpt the energies of the Primordials that died to make this world. But darkness lurks at the edges of this world… or should I say its heart? An ancient evil lurks sealed away and another actor, simply known as “The Collector”, has started hunting the gods themselves. As the curtain rises a great city is brought low by this “Collector” and the broken vessel of the city’s captured god has somehow gained a life of its own! Follow along as a motley crew of people, each with their own baggage, group together to face these evils… and any other they find along the way.

And finally (for this post anyway) we have:
Grrl Power by Dave Barrack
First page: https://grrlpowercomic.com/archives/comic/gp0001/
Current page: https://grrlpowercomic.com/
Welcome to an alternative version of our world… if our world had super people running around. That is not to say that super heroes are running around. Super powers are fairly rare and not well understood, and not everyone that has them is heroic (or villainous for that matter. Some are just like, barbers who happen to have super strength). Enter Sydney Scoville, the co-owner of a local comic shop. Sydney is a bit of a… hyperactive spaz with a few quirks. And after some appropriate shenanigans ends up joining the first super hero team… as a recruit. Can’t just put her on the street and say “Go get bad guys” need some training first. But her unique powerset, and talent for getting into and out of trouble, will keep her near the front lines whether she is ready or not.

Adding Theme and Stars

For most of the development of my game I have specifically avoided theming any element of the game, focusing instead on purely mechanical elements. Basic button images, abstract shapes for icons and simple monochrome colored backgrounds. As development progressed I eventually shifted into trying to make the elements look better of course. Adding a simple gradient to the background, having the background color react to the game state, and custom (if simple) images for the buttons.

But more recently I have decided to try and start actually incorporating a theme into the visuals. First step: What theme should I go with?

If you read the title you probably know what I went with, but let me tell you the process. Firstly I have been using a temp name for the title in the main menu of “Sky Lights” as such I have always had a bit of a star/space theme in the back of my mind. But when I was first making the game the ideas of a circuit board or even magic scrolls where also present as theming ideas. However, in the intervening time I have taken to using transparency as a big motif in the images I use for the game, and so the idea of putting a shifting star field behind everything captured my imagination.

So, step 2. I have decided on the theming and the first element I was going to add. Now comes my favorite part: implementation. First was to make 3 “star fields”. This was a simple, if tedious, process. I don’t have a good graphics editing program (or looked into free options yet) but have found that PowerPoint makes a good fall back for quick prototyping of simple shape designs. A few tweaks to object settings latter and I had a “star” to copy around a space. A giant transparent box behind everything to set boarders and I just needed to arrange the stars. 3 patterns made I whipped up a script to cycle through them at random via random intervals (fade in/out times and time sitting on one image randomized each cycle). It looked nice, but I had a few ideas to improve it.

Idea one, instead of one big “Field” behind everything I would have 5 “Fields”, one in each corner for the main stars and one big one for extra stars. At first I tried making the corner “Fields” overlap slightly so that it wouldn’t be as obvious that there were 4 distinct quadrants, but quickly discarded that idea when the overlapping areas got overcrowded and actually drew more attention to that.

And so I moved onto idea two: Rather than having 3 big “star fields” to cycle through I would have 3 sets of 3 smaller “star fields” each set to its own cycle rate. Trying it out I loved the effect. Theoretically I would want each “star field” to only be one star and have something like 16-22 sets per corner… but that feels like extreme overkill.

Idea 3, because yes we aren’t done yet, was fairly simple: vary the size of the stars. This is where the 5th “Field” comes in, it includes smaller stars, a few normal size stars, and one collection of larger stars. The smaller and normal stars are on a normal cycle and exists mostly to hide the “line” between the 4 corner “Fields”. The large stars originally also cycled through a set of 3, but after talking with some people one thought changed this idea: “Larger stars wouldn’t completely disappear while smaller stars were still visible”. So I set a single large star set to simply flicker (going to a low opacity rather than a 0% opacity and then back to 100% opacity) and it looked good. I latter cut that single image into 3 images to put the flickers on different cycles.

Buttons and UI layout

So most of the game has been designed and is working, what comes next? Making it look good… and making the UI make sense.

At first I just put buttons in as I needed them. Need a restart button? Here’s one. Need a stats screen? Here is a button to bring it in from off screen. Need a hint button? Getting a bit cramped but I can fit that. As you can imagine this did not look “good”. Functional, but not good.

So I did a pass to see what was actually needed. Obviously the main menu button and main control buttons (restart, hints, new puzzle for randomized) all needed to be visible all the time. But a few buttons could be hidden, such as the level select buttons and the custom difficulty select, when not in use. I also came to the decision that the hint button should be disabled after the player starts the game, since with player input the hints might no longer be relevant. As such I had the hint and restart buttons overlap with only one of them active and visible at a time (saving some screen space).

Back on the main menu it now starts with a selection for what kind of puzzle you want (classic, match, or “experimental” (still need a better name for that one)) and then slides in new options for if you want levels, random, or to go back and pick a new puzzle type.

While I am still deciding what the buttons are to look like, I am happy with the layout I have now created.

So, Where am I?

Been a while since I last posted about my game. As such this post will be a catch up that assumes you have read none of my previous posts about my game.

So, what game am I making? I am making my take on a classic game: Lights Out. In the game you have a 5X5 grid of lights with some number of those lights turned on. Your objective is to turn them all off (as the name suggests), the cavate is that if you press one of the lights the lights adjacent to it also toggle on/off. This creates a puzzle for the player to solve. It took me a bit to figure out the background logistics of how to make this work in Unity (that “Right way to do it” mind set I had getting in the way here and there) but eventually I got the basic game working.

That is when I started making my takes on the game. The first alt version I call match pattern. In this mode rather than trying to turn out all the lights you are trying to match a given pattern of lights. The second alt version adds a different dimension. In the basic and match pattern game the lights only have an on and off state, in this new version the lights have an off and 3 on modes with the objective still being to turn them all off.

So far we have 3 versions of this puzzle game, but where are the puzzles? Now, I could (and sometimes do) hand make these puzzles, but instead I created a program to create these puzzles for me, basically by working backwards. The program starts with a blank grid (or a completely randomized one if creating a match pattern) and simulating moves until it reaches the number of target moves desired. Using this I both created 100+ puzzles to progress through for each mode and a randomized version for each mode.

Since creating all of this I played with creating a tutorial (but have currently put it on the back burner as the game feels self explanatory enough) and several passes on the UI elements. Now I am working on the visual design and figuring out how to get the game published to the Apple and Android stores (and pc if it is viable).

Returning to Posting

Okay, here we are again. THIS time I am going to try something a little new, at least to me. In the past I have tried to set myself a strict schedule and stick to it, but as with many strict things such a schedule was brittle and once broken was hard to keep going. I have come to realize (from similar experiences in other things) that part of this is my having preconceived notions of “how this is supposed to be done”. And if I couldn’t do them that way I must be failing and better to run away.

But then, when talking to someone about one of those similar activities, I said “Wait… I can do that?!” because it had honestly not occurred to me that I could change the schedule of when an event should take place. In my mind it always took place at a specific time, and to deviate from that was to do it wrong. But now with this new understanding I can be much loser about things.

Long story short: hopefully this time I will have made the changes I need to so that I can actually keep posting here. The main two being this: one I am going to post about work on Fridays and two I will also allow myself to post whenever I want about whatever I want if I feel like it.

Random Chance and Deviations

Update to my last post. Sat down and played with the seed numbers for my random puzzle generator and got some interesting results. Now I have said many times that “numbers in a vacuum are meaningless” which I recently realized is just a rephrasing of “everything is relative” so I will give some base numbers for reference before anything else.

The target number of moves for these test puzzles is 8, this means (with 25 possible buttons to push) that the average chance for any given button to be pushed should be 32%. When I started my testing for smoothing out the average number of times any given button was pushed I made the default chance of a selection be around 5% and increment that by 10% each time a button was not selected (resetting each time one WAS selected). Since I was simulating the creation of 10,000 puzzles per cycle and averaging the results I was fairy certain that my results would be accurate.

As I said previously these numbers gave me results that clumped where the button presses would be with a large deviation from the desired 32% being around 10-15% above the target. As I raised and lowered the seed numbers the location and nature of the clump would shift but not completely disappear, for instance sometimes most of the buttons would have smoother deviation numbers but I would have two buttons with 15-20% lower chance to be selected. Then I tried a 12.5% default and incremental chance and got the best results yet (still not the desired results but better). On a lark I cut those numbers in half (around 6.5%) and got even better results. Surprised at first I started to see some logic to it and decided to go with an extreme case dropping both to 1% and then 0.1% I had found that the deviations had become negligible with a large deviation being around 1% and averaging closer to 0.3%. this meant that even if a clump existed it would be unnoticeable to an average player. Now my only concern is balancing the better deviation numbers with load times as the best solution requires more passes to create a puzzle.

Math, Testing, More Math, and Getting Useful Data

So I had a bit of a brainstorm for how to make my randomized puzzles and decided to use a new method. But then I started to wonder how the distribution of moves on the play area would be. Would they clump in one spot? Would they clump according to some rule or at random? Or would I get a good spread? This is a bit of how I figured that out.

I have already been using the debug log for lots of data gathering but unfortunately with a sample size of 800-80,000 or more the Log system in Unity is simply not robust enough for my purposes (Turns out latter it could have been but I still prefer the way I ended up using). Namely I needed a better find function that could tell my: “how many toggles in this column/row” or “how many toggles for this specific button”. So I had the output placed in a txt file before copy pasting that into a Word file and putting the data in an Excel file for ease of viewing. After doing this once (for a sample size of 100 puzzle generations) I figured I could do more of the work in the programming. I then had a txt file with the toggles for the specific buttons. But I realized fairly quickly that this data, while helpful, was a bit hard to understand. So I made it instead output the average number of toggles per puzzle over the 10,000 simulated puzzles. And since this new method allowed me to control exactly the number of toggles per puzzle I could figure out the number of average button presses per button if it were an ideally even spread. This was better but still a bit hard to read. Then I finally figured out what I was looking for was who far off the ideal average the actual averages were. so once I started to also output the deviation I saw the pattern clearly. And yep, as I feared it was clumping in almost the exact place I thought it would. Time to tweak some more numbers and see if I can smooth it out.