My name is Jaycee Salinas. I am the Creative Director and sole employee of Ask An Enemy Studios. I am fully responsible for the beast that is A Duel Hand Disaster: Trackher both aesthetically and mechanically.
Separating A Duel Hand Disaster: Trackher from other Shoot ‘Em Ups
A Duel Hand Disaster: Trackher is a Split-Screen Single Player Twin Stick Risk ‘Em Up in which your score is meaningless unless you exist. The thing that sets ADHD apart is the scoring system. In just about every shmup I’ve seen and played you keep your score on death, but I decided to give that mechanic a twist and then punch it square in the face. In ADHD playing until death is not an option. You must decide when to keep your score and exit the level. The longer you stay in, the bonus gets higher along with the risk. Every new run also wipes your previous leaderboard position.
Programming Languages Used
C-Sharp Programming Language, Unity, Qubicle, ShaderForge, Rewired, PicaVoxel.
Coding Alone and Learning from Peers
In regards to my design, and the logic behind it I did all the coding myself, but it wouldn’t have been possible without the help of some extremely supportive friends and family. I dropped out my game design program because I didn’t learn a damn thing about game design let alone programming. So the first thing I did was look up tutorials, bought books, and taught myself the basics of C-Sharp so that I could hit the ground running. When things got crazy difficult I reached out and asked questions and applied myself as much as possible. In addition, a huge bonus to using Unity is its asset store. The assets I used, in particular, are Rewired, which handles player input allowing for the use of an amazingly diverse amount of gamepads, Shader Forge, which gives the game its unique look, and PicaVoxel, which allows me to import and edit the 3D voxel models I create in Qubicle. C.J. Kimberlin of Galvanic Games also provided me with some scripts that tied into Unity’s events system which is responsible for the game’s quick restart with no loading screens. Unity’s extensibility isn’t magic though. If something breaks, which it often will, I have no right to demand anyone help me unbreak it. I put myself in this situation and I need to dig myself out. You can ask any question you want, but you cannot demand an answer.
Programming Challenges for a Split-Screen Game?
Directing the player’s attention. To be honest I don’t think I have solved it yet. Splitting the screen was intentional for a variety of reasons. First and foremost, I drew my inspiration for controlling two objects simultaneously after playing Brothers: A Tale of Two Sons, and Ibb and Obb. Both of these games had the player controlling two characters, however, since they were both on the same screen when one character crossed the center of the screen you’d lose focus on which character you were controlling. When you were trying to solve a puzzle this became extremely frustrating. In the case of Ibb and Obb, the game also changed the direction of gravity on a horizontal plane. In its defense, Ibb and Obb was primarily designed as a co-op game. With ADHD I thought I would “solve” that problem by splitting the screen and giving you two distinct objectives on each side. From a gameplay perspective, this works brilliantly, however, when it comes to directing or informing the player on where to look, it definitely presents a challenge. The immediate response is to introduce each side independently of the other and instruct the player through text or audio cues, but not only do players not read or listen, this slowed the game down dramatically which was not something I wanted to do. It went against the very core of the fast-paced design I was going for. In addition, what you do on one side affects the other and this is almost always simultaneous. So that was a poor solution. The current solution is to slow down the pacing of spawning enemies and hazards, requiring player engagement on the right side for initialization, then ramping them up based on player choice. This works by introducing the player to the flow of combat and the focus on recovery and its many benefits. While this is working so far it still requires a bit more love to nail down just right.
The Challenges of Implementing High Score Betting
For properly trained programmers I’m sure this would not have been an issue, but for my dumbass, oh hell yes. Wrapping my head around how leaderboards are created, queried, and function was a monumental task, but thanks to my brother, and the unbelievable amount of work Riley Labrecque has put into Steamworks.net, I was able to finally figure them out. Steamworks.NET is a C-Sharp wrapper for Valve’s Steamworks API which is very well written and more than anything a massive time saver. Had I needed to hand code that stuff myself I’d be in a world of hurt. As of this writing, I’m still in development so the final release may change a bit, but I currently only allow the wagering to be done on a consecutive run which makes tracking scores easier. The goal is to have the final release allow a wager at the start of any run. I’m currently wrapping my head around how to query the leaderboards, check what the previous score was if there was one, and what to do if there is no internet connection.
Developing a Cross Platform Game
Currently, ADHD will be coming to PS4, Xbox One, and Steam. Time. Time is how you ensure each platform is similar to the other. Unity is great for this reason, but that doesn’t mean it solves all of your problems. Each console has its strength and weaknesses so you still must take the time to optimize your game for each of those. This is especially important when jumping from console or PC to handheld or mobile. Too many games are not given the attention required when scaling down, leading to severe drops in framerate or other frustrating performance issues. Unity has an extremely useful tool called the profiler which is there to help optimize the project. Learn to read it. I sure as hell will. You should also consider the input options available on each platform. Take advantage of them whenever possible. For example, on Xbox One rumble triggers are a great addition that allows you to give just a bit more feedback to the player that is not possible of any other controller.
Twitch Integration and VR Support
Twitch integration was something I had in the design docs from the start. I was always fascinated by the idea of allowing viewers on a stream to manipulate the game they were watching, so I started designing what I called E.V.A. control types. These functions flip the player’s screen, invert controls, and much more. The idea is that the viewers would vote for or against the player affecting the outcome of the bonus applied and the E.V.A. control type was randomized. Once applied, the player had to survive and the only way to take advantage of the bonus was to stay active and continue earning points and recovering resources. When it finally came time to start working on this, the programming was more than I could handle. I made the tough decision of keeping this out of the final game so that I could focus on a release date. All that work wasn’t in vain though, as I decided it was still an extremely fun aspect of the game and found another way to make it work in the game proper. Currently, the plan is to have this be accessible if the player reaches Tier 3.
At the moment I need to stay focused on releasing in 2017. If I didn’t I would have kept working on this game until the day I died. VR is something that I would explore as feature after release. I’ve invested in multiple VR headsets and have experimented with the tech to the point that my mind is going wild with ideas. Above all, if and when I decide to venture into VR it will have to be a fun and interesting twist on the design and not shoehorned in simply for the sake of VR.
Iterating Based on Feedback
Events like PAX provide me with a wide swath of players which lets me gauge attention and engagement in just about every category. For a game like ADHD, which is fast-paced and entirely focused on score chasing, this was the best avenue to take. When I first showed the game to the public at E3 2015 there was no tutorial, and the mechanics had not been implemented to the point where players could exploit them allowing them to become dynamic. Over time I did get to see what players were understanding, and what they weren’t. I acknowledged where players were having the hardest time, and most importantly where they were having the most fun. The competition was fierce and while I loved the hardcore for being as hardcore as they were, I also noticed a ton of people that liked the concept but were intimidated by it at face value. My focus was now set on the barrier to entry. What was scaring them away? Chaos. Limit the chaos, tame the chaos, and allow the player to control it at will.
Helpful Resources and Self-Teaching
Friends much smarter than you who actually went to college with proper intentions, YouTube, Google, books on C-Sharp, Unity3D.com/learn, blog.theknightsofunity.com, any of the live streams (archived especially) by Mike Geig, Adam Buckner, and Matt Schell. If you are looking at developing using GameMaker, Tom Francis of Gunpoint fame has some great tutorials on YouTube. Learn to use co-routines and state machines. This is something that my buddy Zach of 17-Bit, not only helped me with, but he explained it to me in a way that I could interpret and now I can write them on my own. If possible attend events like PAX Dev or GDC.
Being officially chosen for the Indie MEGABOOTH at GDC in 2017. After years of hard work and rejection letters to multiple events, I had finally made it. The design of the game and the fact that I even got this idea into a fully functioning interactive video game is something I’m proud of every day, but to be validated by the very people I’ve come to respect in the industry just leaves me speechless. It’s justified my decisions. From an outside perspective this may not seem like much, but to me, the work I put in to get there is an achievement I never thought possible.
Giving advice implies that I know what I’m talking about. I’ll only voice my opinions or views, and let others interpret them as they see fit. Give an absolute, unwavering, megaton fuck about what you do. No one wants to hear someone describe a game they are working on with the passion of a smashed grape. Take full responsibility for your decisions and actions. You must not lack a desire to learn and it must be sincere. Listen to what people tell you, but not what they tell you to do. Be pragmatic, be realistic, and most importantly be willing to accept defeat. Leave your sense of entitlement at the door. Your words are welcome, but your actions are what the host is waiting for.
Whether or not school is right for you is a decision that you’ll have to make. Some people need the structure others don’t. Some people need that paper on the wall. I framed my withdrawal letter it motivates me just as much. I had no plans of joining a huge AAA dev studio, you might. We all have different goals and must make our own decisions, but we must be willing to take full responsibility for the consequences of those actions. Get a job (yes it sucks massive balls), borrow as little money as possible, give it everything you’ve got, and in the end, even if you fail, you were in control the whole time. Or sell your soul to the devil.
We thank Jaycee Salinas for talking about the development process on A Duel Hand Disaster: Trackher.
You can support the game on Kickstarter!