I posted this project way back when in the 1.41 days but figured, since I'm releasing version 1.0 today, I'd post again. It's taken two years to turn this concept from a simple Twine click adventure with no formatting or visual features into a full fledged RPG with something close to professional production quality.
Explore the cyberpunk-inspired space station Scaffold 22 as you take on the role of Vine, a former mercenary turned abomination hunter, on a mission to uncover the truth behind an insidious conspiracy. Hunt down vile abominations, sneak past security teams to hack into corporate systems, or forgo violence in search of diplomatic solutions – and potential allies to help you survive a futuristic world rife with corruption, political intrigue, abominable taint, and ideological conflict.
Free to play cyberpunk RPG available at: http://rage-productions.com/
Key Features:
- Fully illustrated cyberpunk-inspired world
- Branching narrative with multiple outcomes
- 6-10 hours of core gameplay
- Numerous combat and noncombat options
- Intuitive turn-based combat system
- Extensive gear, upgrade, and skill options
- browser-based and available on any device
- free to play
For more information refer to the official site or...
IndieDB: link
YouTube: link (fair warning: I ramble a LOT on this channel)
Facebook: link
Any and all feedback much appreciated.
Comments
About spreading the word, any recommendation, share, or even mention - within or outside the IF community, online or IRL - is much appreciated. I'm not terribly adept at spreading word. I'll be trying in the weeks to come but I really appreciate any additional help, no matter how small.
All that said, and this being the twine forums, I should probably point out that Scaffold 22 is by no way a technological masterpiece. It's based on an archaic iteration of Sugarcube and hacked together so haphazardly that MadExile will probably want to strangle me if he ever sees the source. What it does showcase however is what can be done in terms of depth and content. I imagine that, with better project management, a customized header, and a dedicated team, Twine could be pushed to produce far greater results.
Exactly my reaction upon realizing playlists weren't a thing back then. May update if I ever find the time to properly implement custom code rather than hack it into the compiled js.
You made this with Twine 2.x? How did you actually "hack" Sugarcube?
Twine 1.4.1 actually. When I started writing, 2.x wasn't out yet and I didn't want to wait for the tech to mature.
As for sugarcube hacking, if you look at the HTML source, it's fairly obvious where my modifications are as they're written directly into the compiled SC header. There's one noticeable change to the download savefile function that slips variables into the file name (where the player is & ingame time) to better identify saves.
The other hacks aren't actually changes to sugarcube but I had some issues debugging jscript with Twine-based code as the stack trace would point to some gibberish location in the compiled code.
To make it easier on myself, I implemented all the utility functions (stuff like timed actions, blink elements, assigning scroll position dynamically, etc) in the header's function declaration. This allows them to operate as though they were header functions native to SC (which they are, in essence).
The proper way to do this ofc would be to grab the header source and recompile it with the changes in place. But I didn't think that part through until too late and saw no real reason to go back, as the system I have works - it just isn't pretty.
As a layman and beginner of Twine 1.4.2 (1.4.1 didn't work for me because of a bug), I think it's really advanced!
Hopefully I'll be able to make something playable in the future.
Will look into. Wasn't aware that was a thing. Thanks!
That would be awesome, just in case it is something silly I did. As for making smth playable, if there's one thing I wanted to do with Scaffold, it was demonstrate that some semblance of solid production is indeed possible. I'm hoping that we'll get a lot more impressive content in the months/years to come.
Edit: for simplicity, I'm gonna disable audio on mobile until I can pack this up as an app. The headache on mobile is simply not worth the hassle it'll cause. Look for v.1.0.2 which should be live in an hour or so - that should solve all the crashes (and, sadly, kill the sound design but... oh well).
Although, if it's what I think it may be, I'd suggest two things that you could try.
1. Guard against misspelled IDs
Within the playContextSound() function, you should probably be checking to see if audio is null after the call to document.getElementById(), to guard against misspellings of the IDs, which would cause an exception to be thrown.
2. Guard against the currentTime/metadata SNAFU
Until somewhat recently, most (all?) browser implementations of the HTML5 media elements would throw an exception upon attempting to set the currentTime of a media element which did not have, at least, its metadata loaded. The following code patches this issue by deferring the modification of currentTime until the metadata has been loaded, if an exception is thrown while attempting to do so normally.
FIND: (within the playContextSound() function) REPLACE WITH:
Hopefully that will solve the immediate issue. Though that leaves the other half of the issue (slow streaming and audio / performance hiccups) which can only be averted with local media files. Even with a relatively low per-file size I'm pushing things on mobile; at least on PC the hiccups are slight. Will have to experiment a little to see what works best in practice.
Thanks for the info though. I really should know better than to assume features will work as presumed by now.
To avoid restarting tracks from the last pause point when moving in and out of areas, I simply mute out the audio, fading in and out as the player changes location. This works great as an effect (giving the illusion that events in the world move on without the player clicking anything) and helps smooth over fade in/out hiccups when the player transitions between zones quickly. However it also means that the browser is technically playing up to 7 tracks at once - sometimes even more due to audio cues popping in. PC can handle this no problem but mobile can't (I presume due to not being able to run that many audio channels, either bc SW or memory limits). Best guess is that after X amount of tracks being stacked up, one of the audio players hangs up and causes the tab to crash. This theory is supported by the fact that the tab won't crash immediately on load but only after a certain amount of audio tracks are piled on (plus, it matches what I've heard about mobile browsers being unable to handle multiple media files running at once).
I could simulate a similar effect through various means (set playback position, timers, pausing playback, etc) but it wouldn't solve the underlying issue of audio players overlapping and risking critical mass. The game would be prone to crashing at random points in time for no discernible reason, meaning I'd have to limit the number of sounds playing via some sort of conflict detection, which in turn would cut into the game's feel & responsiveness. This becomes a notable issue when you look at how even simple audio cues can stack up in certain circumstances. For example, even with the baseline tracks paused, a typical combat scenario might play:
- soundtrack loop
- heartbeat loop
- stinger
- click cue
- reload sound
- attack sound
- ally attack
- enemy attack
Depending on how quickly the audio loads in, these could all end up playing at once, resulting in a tab crash (or, at best, un-responsiveness). IMO there's no way I'm gonna solve this issue on mobile unless I completely redo the sound design to the point it will harm the PC experience - or just package the game up in an app and hook sound into shell code.
Packaging seems like the simpler solution.
I'm going to test it right away.
Again, congratulations for the good work !
Sorry for crashing your browser, stormtrooper. I really bungled testing on version 1.0.
Also, for anyone interested in the game's development and a little insight into how the structure is set up in Twine, I made a video that briefly explains how the basic deign translates into what you see on the screen (skip ahead to ~1:30 for development and ~6:20 for the Twine related stuff):
If anyone wants me to go into more detail about certain features, I'd be happy to explain. Just be aware my code is not the best. It's intended to be functional and little more.
Next step is to tackle the issues with the audio player and a few small gameplay features that don't quite work yet. Can't guarantee audio will in fact work in future versions but there seem to be some workarounds that might prevent some of the worst problems (I'm looking at you, Chrome...).
Agreed.
Thanks!
They're all wrapped in HTML divs with the link (<a/>) element expanded to block so it fills the whole container, allowing me to use Sugarcupe syntax to create slightly more fancy buttons while still using variables and all. If you look at the HTML source (eg Element Inspector) you can see how the CSS is set up.
Basically, I wrap:
Thank you. Simply put: because I never planned the project to be commercial.
Long explanation: I wrote the game to help me deal with crippling depression and a rather annoying mental disorder that prevented me from rejoining the workforce. At one point I considered making it a source of income but decided that was disrespecting the original intent. It was central to my healing process and I wanted to share the result with people, not make money off of it.
Indeed. It gave me smth to focus on while I struggled to find ground and kept me focused, preventing me from drifting into unhealth(ier) behavior. Presently looking to get back into the workforce, which was unthinkable when this project started. Given, other things helped too, but seeing I could succeed with patience and perseverence despite all was extremely motivational. Not sure I'd have made it without the project to get up for every day.
That's good to hear.
Quick update for anyone who hasn't been following on IndieDB, I've sadly had to put Scaffold 22 on indefinite hold despite wanting to add a few more things. Reasons are largely due to time and financial constraints, though I am hoping to return to the project in some form - someday.
For those who enjoyed the game and setting, I do have some good news. As of today the distant prequel and narrative inspiration to Scaffold 22 - a novel I wrote called The Municipality - is available on Kindle. Not quite as good as the mobile app I was hoping for but it's the next best I could do on short notice.
More info The Municipality at: RAGE-Productions.com
Direct Amazon Link: here
Video regarding current situation: Prequel & On Hold