Status: WIP
(In Development)
Birthdate: 2018 08 24

During a routine trek through the stars,
your ship has been crippled by a magnetic ion storm! Unfortunately,
the automatic charging array on the Interstellar Plasma Drive (IPD)
has been damaged beyond repair.

You must maintain a constant vigil using the Control Panel of the IPD in order to
manually make the necessary charging calculations to keep your ship alive.
All the while, the ship's main systems keep breaking down
and demand your attention as well.

Can you keep the engines charged up and your ship's systems repaired, or will
you end up lost in space?

No one knows for sure how it ends, but it all started...




Programming and Art by Marc Hickey
Music by Marty Leahy



Status Details

Always accepting playtests, comments, and constructive criticism.

Available Builds:
GMC Jam XXX Submission (sorely unfinished) 2018_08_27
AlphaBuild_2018_08_28 (Improved game functionality and graphical feedback.) AlphaBuild_2018_09_03 (Graphical and sound features added, minor fixes)

Most Recent Build:

AlphaBuild_2018_10_03 (Fixit Meter, Control Panel, Nebula)

Controls:
Arrows left/right: run left or right
Arrows up/down: use elevator
Spacebar: Use charging panel, repair malfunctioning systems.

NOTE:
Pressing "Control-R" at any time restarts the game.
Pressing "Conrtol-ESC" at any time exits the game.​

Next build release date:

Holidays are falling upon us. I might have another update soonish, but if not, we're looking at mid-November.


The Backstory:

This game started out as Jam idea for the GMC Jam XXX at the end of August 2018. The idea was originally inspired by a Ludum Dare 42 entry. I had stumbled upon "20,000 Leaks Under The Sea" just days previous and I found it incredibly charming.


(Click the image to go there.​)

I hope my version ends up looking and playing half as good as this.

So anyway, "Once Upon A Time In Outer Space" is basically the same kind of game as "20,000 Leaks Under The Sea", except you're in a spaceship instead of a submarine, you're in outer space instead of the ocean, you're fixing malfunctioning technology instead of patching leaks, and punching buttons on a control panel instead of pulling a mysterious lever.

Of course, I'm compelled to give a few nods to the world of Star Trek. A fan's gotta do what a fan's gotta do.


(The "DevDate" is the year, month, and date followed by the time of day as a decimal.)

DevLog (In reverse chronological order)

DevDate: 181002

I'm discovering that my code is kinda all over the place as I'm jumping back into this. That's the trouble with game jams -- the time crunch pressures you into making bad code decisions.

After implementing the nebula background without too much effort, I went on to create the "fixing" game mechanic. This entailed creating a new sprite and animation for the character, making the "fixit meter", and coding it all into place.

Drawing the character fixit sprite went pretty straight-forward. I had a small struggle at first, trying to make his head at a 45 degree angle. Fortunately I was having difficulty with it, so I just grabbed the head from the panel animation and tried plopping it in. It was perfect and made me wonder why I just didn't do that in the first place. --shrug-- I ended up with a 6-frame animation, much like the 3-frame animation of the "using panel" character sprite. Actually, it's 3 frames of different hand placements repeated with his head lowered one pixel. I was hoping to make it seem like he's looking around while he's fixing.

Implementing the animation was another matter altogether -- because of bad coding decisions during the jam. I coded it into place the same way I coded the panel animation and it refused to work. It took several tries and experiments to finally figure out what I was doing wrong -- even tho I'm not 100% sure I really figured it out. It's working now, and I know what I did, so I'm calling it a win.

The same kinda thing happened with the fixit meter.



At first, I thought I would make the "fixit meter" dynamically, but it didn't take long to decide to just create a bunch of sprites for it. I tried to divide it up into 10 slices, but after failing to get the slices to look even, I scratched it and went for 1 pixel increments of change around the outer edge of the meter. I ended up with 36 sprite images in all for the meter.

I added a dp (damage points) variable to the differing systems...

Oh, I should mention that I tidied up the systems objects. They were originally linked to a parent object, but being rushed for jam and not very familiar with coding for inheritence, I copy/pasted a lot of the same code for each system. As I implemented the fixit meter, I went ahead and simplified the code to the parent object. The best part of this, since I'm only a self-taught, hobbyist programmer, is that I didn't break the game and got it working! Another win.

Using some funkalicious math, I was able to incorporate the fixit meter to whatever damage points the systems might accumulate. If it's a high amount, it will take longer to fix than a low amount, and the magic math makes the meter look easy.

I should have been done with it for now. This was some good progress, but no - I had to play with the "using panel" stuff. I decided to make it so I could have a second panel somewhere else on the ship, in case I made a larger ship layout for a later series of levels. It was more of the "dealing with badly rushed jam code" again. This was pretty horrible because there's connecting code through 4 different objects. I have a 'gameplay' object that sorta directs the course of the game (where it monitors the "plasma charging level" for completing the level); a 'gui' object for drawing info to the screen (red alert is tied to the panel display); the 'crewman' (player) object when he's interacting with the panel, and the "panel" object itself. I know for a fact that I've coded all this as inefficiently as I possibly could, but again, it's all working, so I best not poke the sleeping bear. At least, not currently. So, I'm gonna go ahead and call this a win, too. Why not? :)

Here's a gif and I'll load up a new build soon.



DevDate: 180929

I've been killing myself trying to find and implement a simple commenting system to these web pages over the last few weeks. I found one that I almost got to work, and another that I think will work but has become unavailable. I've sent out some correspondence to both parties. If they reply, perhaps I'll have a comment section down below for viewers of the page. Until then, I'm giving up on that for now.

So now, because of all the time spent away from the game, I'm kinda cold with my dev on this game, which kinda sucks. It will be interesting to see how long it takes to get back into the thick of it.

To start things back up, I decided to make a nebula background for all the empty space flying by as a way to break up the plain-ness of it. I followed a tutorial I found and after messing around with it in my own way, I came up with this little gem...



Now, I need to read thru my own devlog and catch up with myself to figure out what I want to do next! :P

DevDate: 180919

I haven't been working on the game because I've been making this website. I'm done with this page (for the most part), but I still need to add some basic content for the other game WIPs. After that, I can get back to my gamedev schedule. I suppose we can try for a new game update sometime in October.

DevDate: 180903

Tasks completed:

  • Added stars.
  • This was planned from the beginning. I wanted the ship to appear to be travelling through space, naturally. The implementation of this was quick and crude, but at least it's in place. I may change its appearance at a later time and will definitely change the abrupt stop when the mission is complete, and make it slow down to a stop instead.

  • Implemented the "Red Alert" messages.
  • I was able to put the "offline" messages into a ds_list as the various systems break down. If more than one system is malfunctioning, the game will cycle through the messages at 3 second intervals. When one of the systems is repaired, that system's "offline" message is removed from the list.

  • Fixed the charge meter graphics.
  • The charge meter's background was 2 pixels wider than it should have been. Easy fix. However, the meter notches (that designate the amount of charge) were displaying a 21st column when the charge was completely full (210). Since it's a two-part for-loop, I forgot it would display the 21 columns. (I apologize - this isn't a very good explanation. Words are hard.)

  • Added the game-loop music.
  • Added a game-loop ambient background sound effect.
  • Added a classic "Red Alert!" sound effect.
  • When I added the game-loop music, I started looking for other sci-fi spaceship sounds. I wanted to be able to cycle in and out of the music, in order to break it up. I got lost looking through a bunch of sounds for over an hour, I'm guessing. I'm not sure, but it was a long time. I found several different ambient sounds and I was thinking of using different sounds for the different rooms the character would be in. However, I think that might be overkill for this project. I'm trying to keep things minimal and relatively simple. Perhaps in "Once Upon A Time In Outer Space 2".

    The "Red Alert"" sound effect added so much character to the game! It amazed me how much difference it made. Now that I have a few sounds implemented, it's making the lack of other sounds really stand out. I can't wait to get more sound effects in place.

  • Shirt color
  • What's this? A red shirt? Is something bad about to happen? Of course it is! Haha!

    Well, not really. I was just experimenting with making different shirt colors. I have it set up so I can choose the shirt color from gold, blue, or red. I may implement a feature that lets the player choose the shirt color at a later time.



    What's next?:

  • Fixing "offline systems".
  • It was always intended for there to be a "fixing time" when the character is repairing an "offline system". In fact, I just noticed I mentioned this for the last update. Time got away from me, so it didn't happen yet, but it will be in the next update, for sure. As I said before, I'll need a new animated character "fixing" sprite, a "fixing" meter (which will include sprites as well) to show the progress of the fix, and a bunch of code wedged into the proper places, of course.

    This is going to be fun - seriously, I've been looking forward to it. I'm just hoping it won't be too hard to balance the gameplay. With the way the game is currently running, I'm thinking it will fit right in to place since the gameplay feels a touch too easy at the moment, even for the beginning missions. Of course, it might just seem easy to me because I'm already a pro at the game. Hopefully I can fool convince a few poor shmucks willing participants to do some playtesting for me when the time comes.

  • Frontend and Menu.
  • I really need to get this going. I want to make a cool, dynamic menu and a fun cutscene intro, but just to get things started I'll just be making a few simple splashscreens for my frontend and a basic menu, unless I get really ambitious.

  • Level advancing.
  • I haven't fully decided how, exactly, I'm going to go about this. But for demo purposes, I guess it's a pretty necessary evil to let the game be able to advance past a single, quick and easy mission, eh? I will at least implement this, but it may be pretty rough, lacking transitions and such, if I even get this far.

  • Start, Win, and Lose screens.
  • The game needs a "Mission Briefing" screen before the gameplay, and a "Debriefing" after a success or failure. I still need to decide exactly how I want these to work as well, but I just came up with some insight writing this just now. These probably won't be in the next update.


    At some point, I either need to update my website or create a completely new one. Not sure when I'll do this. It could happen in this timeframe (I tend to flip around from one thing to the other so it's hard to say for sure), and if it does, I probably won't get as much accomplished on the game as I would have liked to. OR -- I'll extend the next update's release date. We'll see how it goes. No stress, just progress.

    The one-man dev show is a tough gig.

    DevDate: 180831 - Supplemental

    I talked with Marty today. He sent me a game loop to use during the gameplay. I had made the mistake of using the theme song for the game loop in the jam version, being rushed to finish and at least having some sound in the submission. I've been contemplating using some different music because it didn't sound quite right, but then I realized my mistake. The theme music wasn't meant to be a game loop.

    So the original theme music will stay. I'll be using it to compliment the intro cutscene and such, and adding in the game loop music for gameplay. Should work out well.

    DevDate: 180830.3

    So the Jam was over and I submitted my awfully unfinished game without remorse. I submitted it 20 minutes late, even. And then, I continued to work on it because I think I'm in love with it. I'm okay with that and you should be, too.

    Here's what I did after the jam...

  • Added larger explosions to the malfunctioning systems equipment.
  • Tied in the IPD Control Panel to the malfunctioning equipment.
  • Added the Red Alert light and the blinking red splash on the Control Panel.
  • Added pulsing to the plasma tube orbs and made them move a little slower.
  • Fixed issue with character depth after using the elevator.
  • Maybe some other stuff - - can't remember.
  • I ended up with this gif afterwards.



    Then, I did some more work...

  • Made the charge meter sprites and added it's functionality.
  • That was a fun for-loop to figure out. Took me a few tries to get it working. It's still slightly buggy - - an extra column lights up when it reaches max level (210, for a buffer zone to the player) while the spacebar is being held. I don't understand why, but I'll figure it out eventually.

  • Made Target "Selection" and Distance (A destination - works kinda like a level timer.)
  • For this, I made two arrays: target_name[ ] and target_number[ ]. For target_name I used the letters of the Greek alphabet (alpha, beta, gamma, delta, ...) and for the target_number I used Roman Numerals up to 18 (because 18 wheels on a big rig, of course). I then randomly pick from each array and slap 'em together to get a name like "Delta V, or Gamma XIV. Each successive level should end up with a new, random star system/outpost destination. The distance is randomly obtained as well, with weighting in relation to the level. So at the beginning of the game on level 1 the distance is short, but as you beat levels, the distance gets longer and longer. I may have to put a cap on it or something, or we'd end up with hours long distances. Though I'm hoping this will be a fun game, that would be... not fascinating.

  • Tied the Target Info in with the game.
  • Now the game is actually, somewhat, a real game. Kinda sorta almost. Except, there's only one short level, there's no intro, there's no win or lose confirmation, and lots of other stuff. In other words, there's still much more to do.

    That leads us to this gif.



    So, what's next? How about some more bullet points?...

  • Red Alert! messages, for when things break down.
  • Background stars to simulate travelling through space.
  • Add a "fixing" time and meter for when the character is repairing a broken item. (I'll also make a "fixing" character sprite, but probably not until later.)
  • Start , win, and lose screens.
  • I don't know if all of this will make the next alpha_build (in fact, I know it all won't - might get one of them), but I'm still planning to release the next version on the 1st of September.

    JamLog (progress made during the jam)

    DevDate: 180826.6

    Welp, no mustard for my custard. Couldn't get outta bed early, but I was able to draw up a couple wall sprites on my lunch break. Still so much to do -- hope I can at least have something playable at deadline.

    DevDate: 180826.1

    I was only able to go about two more hours, but I managed to get control panels working. Also started drawing the Plasma Tubes. (Hopefully it all makes sense in the game.) No time for pics or gifs until tomorrow.

    At this point, because of my time constraints, I'm not optimistic about having a completed game by deadline. Hopefully I can muster out of bed early with a little less sleep.

    DevDate: 180826.0

    After work, and after about 3 hours, I've managed to get the elevators working, make a logo, and write up this devlog (from the beginning). I think I'm all caught up with myself now. Just gotta make a couple elevator gifs for here, then back to gamedev for as long as I can stay awake.


    DevDate: 180825.6

    Home for lunch. I had about a half hour to start coding the elevators. Didn't get very far, but got the ideas going. Fixed some project settings.

    DevDate: 180825.5

    I managed to get up early enough to give myself about an hour to gamedev before going to work. I started working on the turbolif...er, I mean, the elevators. Despite interuptions from 11-year-old daughter, I was able to sprite up an animated elevator door.


    (Using GIMP, I could only make a gif of the doors closing.)

    DevDate: 180825.1

    I recently stumbled across a great game that was made for Ludum Dare 42 called "20,000 Leaks Under The Sea". I liked it so much I thought I'd make my own version of it for this jam.

    The main theme I'm using is "Charging Up", but there might be some "Stick Together" in there. If I'm lucky, I'll be able to get some "Switch Between Different Genres", but I'm not counting on it.

    I spent the first 3 (or so) hours of my time on creating a character sprite and some background sprites. Of course, I must give my nods to Star Trek, as you can probably tell.


    (scaled up 800%)

    I made a quick-(yeah, right)-and-dirty, four-frame run animation and was able to implement very basic movement.

    At this point, it was about 3:30 AM and I had to be to work in 9 hours. I was hoping I could get up a bit early to do some more work.