ASotC: Jam Release + Technical Breakdown


Thanks for checking out A Stain on the Company!

...At least, I assume you have. This post is going to briefly cover all the nerdshit technical specifics on how/why the game looks the way it does, so if you haven't played it yet, go do that. It's not the most plot-heavy game but there are still gonna be spoilers in this post.


ONE SPRITE:
Joseph was drawn in full in case I ever wanted to go the ol TintSprite(); Character.Scale(); route and have a spooky figure t-posing at the end of a corridor, but I ran out of time, so his legs are only visible in the intro. Maybe in a post-jam patch. His head is a separate character to the rest of his body, per standard for lip flaps. It's great until I forget the line of code that locks it to his neck and accidentally decapitate him by turning around too fast.

Fun fact, this game originally had a very different plot and was told from his perspective instead. The idea was that the dialog would branch depending on where you were looking at certain points, but implementing all those trees got way too hard. I think only one of them made it into the final product.

Ah well. Another time. Regardless, here's a bonus sketch of the protagonist. (She looks a little too close to Amethyst from BONE for my liking.)


ONE BACKGROUND:
This game uses the absolutely ancient Panorama 1.6 module for Adventure Game Studio, which redraws a 2D image as if it were a 3D cube. Cool stuff. Unfortunately the engine's changed how it handles math a lot since those days, so it chugs like hell if you try to render anything larger than 320x240px. Great for 1-bit games though!

One day I'll roll my sleeves up and rewrite it

It really is all one background! Since you can't pan down at will, the blood stain is always just slightly below your field of view. There was originally a sequence where the camera would dramatically pan down to reveal it, but for some reason it would launch Joseph into the stratosphere and he would NOT come back down. Very rude.

So instead it's a single Panorama3d.SetPitch(-90.0); with a side of cJoseph.Transparency=100;.


The "posters" scattered throughout are drawn at runtime via AGS's DrawRectangle(); and DrawCircle(); functions, like so:

poster = DynamicSprite.Create(320, 240, true);
psurface = poster.GetDrawingSurface();
psurface.DrawingColor=65535;
psurface.DrawRectangle(59, 0, 241, 239);
psurface.DrawingColor=0;
psurface.DrawRectangle(60, 2, 240, 238);
psurface.DrawingColor=65535;
psurface.DrawRectangle(62, 4, 238, 236);
psurface.DrawingColor=0;
psurface.DrawRectangle(60, 2, 110, 238);
psurface.DrawCircle(100, 40, 30);
o = Overlay.CreateGraphical(0, 0, poster.Graphic, false, false);
txt = Overlay.CreateTextual(135, 40, 200, eFontFont3, 0, text);
o.ZOrder=18;
txt.ZOrder=19;

There's probably an easier way of doing it, but this is my first time using DynamicSprites in this fashion so I feel like Da Vinci.


ONE THOUSAND WORDS:
Google Docs estimates a wordcount of 953 words, including dialog, observation text, and the word bank for the posters and cameras.

The posters and security camera labels all have a small pool of phrases/numbers they can display, which the game picks randomly from any time you change rooms.

FWIW there's exactly one bit of branching dialog in the game, and it only triggers if you have your back to joseph for the bulk of the introduction. Would've liked to include a gag for if you do nothing but spin around in a circle, but - well you know the drill.


MISCELLANEA
This game is set in a shared universe with most of my other projects! Joseph was previously mentioned in There's Something in the Pipes, and the protagonist has also snuck her way in to one of my other games. Not one of the good ones, but nevertheless. One day this'll all be relevant. One day. 

This particular office building is the setting of a concept I call Budget Cuts. I post about it on my twitter from time to time, but it's not in active development right now. Mostly because holy mother of technical problems, Batman. Anyway here's some old art of Eldora, Joseph's friend, and the building's receptionist.


The jam didn't permit the use of old assets, which is completely fair enough. It did mean I had to invent a whole new floor for the building, but that was just an excuse to do some good ol' worldbuilding! If I had been allowed to reuse backgrounds, I probably would've set the game in the building's elevator, or at Joseph's desk.

 

Despite how the game looks, ASotC shares very little in common code-wise with my previous 1-bit games. People have been complaining since Beat the Buzzer about not being able to open the menu during dialog, so this jam was a good excuse to sit down, stare at other people's modules, like a LOT of them, and figure it all out.

It's weird not being bound by the Wait(1); command. I have all this power now. People can walk while they talk.

Now if only I could figure out how to calculate radians properly so I can add in quickturn keys.

Files

[O2A2 Build] A Stain on the Company - v0.9 8.4 MB
60 days ago

Get A Stain on the Company

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.