Had a pretty good, distraction-free and sickness-free month! Work was done! Huzzah!
What’s been happening, then? Here’s a quick rundown (spoiler alerts!):
Finished “skybox particles” for Island World
2x Dunes biomes + rocky biome completed + biome blending. Super happy with the general scale, realism and variation in this planet. Tweets of WIPs below!
Not as happy with the water skipping gameplay as I once was. Now that there’s “charge/power” levels and pulling up controls, it’s a little less satisfying and simple. Going to leave this and see if a solution pops into my brain at some point!
Biome texturing mostly complete
Island World around 90% complete. Still needs some objects/fine detail placement/intro work etc. This planet has taken far longer than usual/expected because of two different plugins I don’t normally use/didn’t play well together. Now that I’m more comfortable with both, future planets using these should be much faster.
Fixed old nagging terrain specular issues.
Debugging performance issues in island world.
Had some difficulties marrying fog/water/terrain for Island World and combining certain plugins to create the effects on this planet.
The huge range of Unity plugins is great, getting them to work together sometimes is another thing!
Two water plugin options that were solid as of 6 months ago are now both deprecated or unsupported and not working properly in Unity 5.6. I’ve fudged my way around one of them for now.
Spent quite some time ‘debugging’ above plugin issues, texture issues/profiling/bug reporting.
Fireflies can now be picked up (they follow you) on the Ice World, which give more sporadic charge the more you have following you.
I’ve had a little time to decompress, and since then I’ve been doing the following things:
Managing all the rewards/surveys/spreadsheets post-Kickstarter.
Some add-on rewards (the self-print poster) will be sent out shortly. Just trying to minimize the time I spend sending out rewards as new survey results trickle in.
Trying to track down a small number of show-stopper bugs for some players, but not having much luck. This is thankfully only a tiny number of players as far as I know.
Upgrading Unity to 5.6 for its various speed improvements and new plugin versions, which are also offering speed improvements on top.
Experimenting a little with Voxeland, a Voxel terrain plugin for Unity (integration 1000% unconfirmed!) by the creator of Map Magic
Posting a bunch of new bug reports for all the issues I’m running into while upgrading to 5.6
Boring stuff like accounting/tax planning for the Kickstarter money
Next
Moving forward, I’ll be working with Rhys and Tim to plan out the next planets and the music to go with them.
I’ll be completing the Tidal Locked world and optimizing it. Since I created it during the Kickstarter, it was a bit more thrown together than usual, and I’ll likely need to combine all three biomes into one for performance reasons, as all three biomes generate at once due to their close proximity to one another.
I’ll also be integrating fixes from plugin developers as they come in for Unity 5.6.
Plus, I’ll be setting up a pre-order page for Exo One via Humble Bundle too, probably so that pre-order customers get instant access to the backer preview build.
Since survey responses have now slowed to only a couple of responses a day, you can probably expect to receive your Rezzed poster add-on (if you pledged for it) today or tomorrow. Please fill out your survey if you haven’t already!
Polls
I’ll be sending out the first backer-poll very shortly, stay tuned!
Off Topic, Other Games
After an almost games-free Kickstarter month, I’ve finally had downtime to get back to playing a few games. Lately, I’m back on Rocket League, and having a few games of Player Unknown’s Battlegrounds.
I also tried Klei’s Oxygen Not Included, which I liked, but perhaps feels just a little too much like work for me to want to spend that much time with it. When I’m working on solving coding puzzles and business problems all day, somehow base-building/management stuff doesn’t appeal as much as driving around whacking a ball in Rocket League!
Oh, I also tried the new dirt tracks on iRacing, really great physics! I had one race and finished 3rd in my (super low skill!) tier :)
Finally, check out this amazing looking game I spotted via all the E3 press:
I could watch this 1000 times! If all I do is press a button to advance the pretty graphics, I’m sold!
Catch you for the next update, hopefully with a screenshot or two from Unity 5.6!
Since I’ve got a build done for Indiecade, pressure is off a bit for Rezzed, as even if the game dies often, I’ll be there to restart it etc. My biggest fear is I’ll be overseas without my PC and unable to fix any issues that occur. I’m most concerned that there could be some kind of graphics card incompatibility or some other thing that causes the game to run badly or fail, but I’ve tested the game on a number of friends computers with no issues so far.
I took Monday and half of Tuesday off to recover from working most of the weekend into an all-nighter. Now:
Final Rezzed Tasks
Monday
Ensure my build shortcuts work so we can just load planets from wherever we are. ~30 mins
Fine tune camera some more ~30 mins
Script energy spheres so they’re closer to the ground for new players to pick up more easily. Couldn’t get a handle on what my dumb code was doing, gonna bail on this for now at least ~30mins
Try to get level restarting working again ~3 hrs :(
I wasn’t looking close enough at my debug logs ordering or my if else logic!
Improve timing on navigation icon hint animation ~15 mins
Tuesday
More camera fine tuning ~30 mins
Improve planet 2 ~4 hours
Hanging out probably a bit too much on William Chyr’s excellent Manifold Garden stream :P Highly recommended occasionally though, especially if you’re a solo dev. ~2 hrs
Wednesday
New creature stuff for 2nd planet ~ 3 hrs
Integration with MapMagic ~30 mins
Directional vector UI stuff ~2 hrs
Bug fixing above! ~30 mins
Thursday
Further creature improvements ~1hr
Profiling above. Oops it runs like hell :/ ~30 mins
Improving planet 2 biomes, variation. ~2 hrs
Testing ~30 mins
Rezzed prep work ~1 hr
Build testing/uploading ~30 mins
Friday
Not really going to add anything of substance from here on, it’s Friday, I’m leaving Monday for 1 1/2 weeks, so I’m going to make sure it works properly then pack tomorrow and chill out before the hell that is international flying on Monday.
Air particlezzz! I’m embarrassed to say ~3 hrs (it’s hard to get these just right!)
Tweaking both planets ~3hrs
Tweaking lighting ~1 hr
Rezzed prep ~30 mins
Saturday
Final testing has picked up a bug with the wormhole sequence where the screen goes black (but game continues afterward). So this will be my last task before flying off. If anyone going to Rezzed is reading this, I’ll cya there, hopefully without a buggy game on my hands!
My main priority this week (or the first day or two) will be completing my wormhole upgrade, complete with smoother transitions and loading. With any luck it’ll just be a few hours, but I seem to have introduced some new bugs at the same time.
Then I’m back onto a bit of story related stuff, and after that I might reassess what to do next for this Rezzed build.
Monday
Smooth wormhole transitions ~6 hrs
Fixing new WH related bugs ~2 hrs
“Pro” coding tip and OMGTHX to Mr Rhys Lindsay, our EXO ONE musician:
If you start a coroutine from one script on another, ie “StartCoroutine(AnotherScript.instance.thing())” and then destroy your scipt/unload the scene, your coroutine will be destroyed, and you will wonder for HOURS why the helllll said coroutine fails to continue…!
Cleaning up from yesterday. Wormholes mostly working as intended now. Didn’t really get the nice super smooth transitions I wanted by loading the next level in the wormhole, but I think that is perhaps a much bigger task than I realised.
Wormhole clean up completed, bugs removed ~3 hrs
Fixing up overlays a bit when wormhole camera comes on, but still a very average solution. Think I might need some kinda ‘overlay’ camera that handles all my post processing! ~1hr
Fixed random sound loss on first planet ~30 mins
Tutorial tweaks ~30 mins
A whole bunch of other tweaks, now that everything is working again! ~2 hrs
Profiling/fixing some resource hogs
Fixed wrong ground contact sound in tutorial
Added wormhole exit effects to 2nd planet
etc
So, happy to report game is buildable and pretty much bug free.
Wednesday
Going to profile the game a bit and see how the frame rate is, if there’s any easy wins to make it smoother. Noticed some frame hiccups near monoliths, for example…
Sole remaining bugs:
Null ref on some sounds. ~30mins
Somehow at some point, the ParticlePlayground (plugin) manager disappeared from the wormhole scene, which meant I couldn’t turn it back on… Took me ages to realise this! ~2hrs…!
Then I wrestled unsuccessfully with why, in editor, the wormhole transition looks fine, but colors break in the build… ~2hrs
Similar to above where the entire game start screen was broken in build but not editor… ~1hr
Sucky day!
Thursday
Wasted another day in town waiting for my car to be re-repaired (they didn’t fix it the first time…)
Now I need to hunt down why there’s issues with my build, but not the editor. Checking:
Player log for any errors. Went in and fixed some warnings just in case.
Noticed maybe we weren’t in the right quality setting… That wasn’t it.
Logs pointed to my scene loading stuff, realised the intro scene wasn’t loading. Put in a million debug lines.
Tracked it down to (I guess due to load speeds between build and editor) the wormhole scene not finishing loading in time and messing up a coroutine sequence
2 hrs
Perhaps not overly wise (I don’t know?) I updated the camera system to reduce the amount of cliff/ground staring you can do sometimes! Still needs fine tuning but liking the result ~2hrs.
Friday
Indiecade E3 deadline is tomorrow, and I’m wondering whether to submit to that or not.
Pros:
Might have less competition with other submissions because it’s the earliest submission date
Could send it and ‘forget it’/not spend more time on event/award submissions for a while.
Cons:
Potentially lower my chances of being selected because I have less time to improve the game
Barely enough time right now to test the build
I’m going to work assuming I’ll submit for the e3 deadline, then see where I get up to and make a decision tonight/tomorrow morning.
Tasks for tonight’s deadline
Restarting levels/game is a bit broken. Perhaps not a massive problem, especially if I make a note to restart the exe instead, I dunno. Not a great foot to put forward… “my game is broke so don’t press THIS button”.
Had a huge amount of trouble getting this to work in wormholes as I was async loading the next level in the wormhole, and you can’t cancel async operations… Gave up on pause in wormhole! ~3 hrs wasted
Checking normal pause/restart stuff working ~1 hr
Perhaps minor color bug when we enter a wormhole in the tutorial. Ignoring!
Decide whether to fix or remove some new ‘story-like’ feature in the 2nd world (don’t want to spoil) which isn’t 100% working. Fixed this, took ages ~3 hrs
Fine tune new camera stuff or just use old one?
Had a play and had the new stuff working quite fast so sticking with new ~30 mins
Not obvious enough ‘objective arrow’. Use some combination of:
Text/blinking text (at least at start/level load, then turn off). “Energy signature”.
Start the arrow size large/blinking then quickly reduce size.
~1 hr (still not obvious enough!)
Final testing
Picked up lots of restart level/restart game issues. Restart level I removed completely as I was stumped and had no time left. ~2 hrs
Numerous other tweaks to planets, UI, sound, etc, etc. ~2 hrs
Profiling for frame rate issues ~1 hr
Playing through the entire build many many times ~2 hrs.
I ended up pulling an all-nighter to get this finished before the deadline. I still had ~4 hours before the deadline, but I opted to work all night just in case it came down to the wire.
Also quite badly underestimated how much work was required for the Indiecade submission in terms of text. They needed ~300 word answers to a bunch of questions, and that was rather hard at 5-6 am. Took me another hour or two.
Now going to take a day or two off to recharge before Rezzed!
Some news – I’m flying to Rezzed in London, boom! With some help from a very gracious family member, I’ll be heading over for the event and will be making the most of it while I’m there, and hope to meet some new friends, players, developers and press. I lived in London for a year (a few years back) and kinda only made a couple of contacts, but it’s amazing how much help just a couple of people can be. Especially when they have some experience under their belt.
Well, after a slow one last week, my weekly task list isn’t dissimilar to last!
Planned Tasks
Schedule out Rezzed, buy flights, book accommodation, contact people I’ll be meeting over there. 1 day.
Finishing touches to story. Might actually add a day to this to get some final feedback. 1 day.
Send story off to voice actor.
Wormhole transitions. This will take as long as I kinda want it to… So far there’s just a super simple wormhole effect, and for time’s sake I might keep it this way for now and just make sure it works 100%. Currently it is quite janky. 1 day.
Contacting some games press pre-Rezzed.
If all goes well, finishing Planet 2 (art/level design) 2 days.
T-Shirt time wasting I mean design (I did some stuff I didn’t like then just went with the EXO ONE logo…) ~1.5hrs
More wormhole sounds ~30mins
Integrating wormholes into level transitions ~1hr
Rezzed related planning took up a bit of my head space this week but made some decent progress. My nerves leading up to Rezzed will be calmed just as soon as you can play the game through to the second planet, wormholes, narration and all. Hoping this week will be the week, then I can just tweak things!
January 19, 2017 / Jay / Comments Off on Daily EXO ONE Dev Log. Controller Menu Support, Final Rezzed Version
It’s the 19th in Australia, and the deadline is the 20th in the UK, so I have kinda 1 1/2 days to go. Need the controller support 100%, so that’s number one priority!
My fall-back if I fail this will be “mouse and kb only”!
Task Planning:
Controller menu support: N hours? Never done this so no idea.
Yikes, just started and realised I also need to control drop down menus. I have a bad feeling :) AND! I still have some terrible dual Event Systems happening (one in each scene). After this I’m going to have to do some serious tidying. I barely know what an event system is so yeah… bad feeling!
Rewired Event Systemz
Looks like I need to:
Setup Rewired Input Manager and Event System
Add new controller actions for UI and maybe a new controller map/category
Ok so I’ve set it all up and I’m pushing controller sticks and d-pads but nothing happening. Kinda dunno if we can even control UIs in another scene or not… I have Rewired in the Manager Scene and the UI to control in the IntroScene. Reading more!
Seems if I click a button then move the controller stick I can use it, think I just need to set a menu option as active to start with, which is annoying as it’s in a different scene!
Moved some stuff into the Manager scene so it’s easier to reference, now we start with the NEW GAME button selected, and can select menu options but not Action any buttons. 1 hr so far.
Action button working (typo!) as well as drop-down menus, amazingly. Refactoring a bunch of stuff now that scripts and objects were moved around. Getting there! 30 mins
While testing this, I realised that if the game will be in a noisy hall and/or someone isn’t wearing headphones or doesn’t wanna listen to the story, they’ll think the long intro is a bug, or boring or whatever. Anyway, adding a button to skip the intro narration! Functionality already exists for debugging so… 5 mins.
Ack! Gross code! Again I need PlayerControls in my manager scene, but really can’t right now, no time! Maybe I can whack something into the Event System to handle this for now, nfi!
Trying to just ‘whack in’ PlayerControls in the intro scene but bad things are happening. Functionality already exists 5 mins ehhhh? Whoops again! 30 mins later and I’ve mostly got this working using some if(introStarted) and if(gameLevelStarted) in PlayerControls. All works, except if I hit New Game, and the intro starts, with the mouse it’s fine, but the controller seems to ‘double click’ or something, causing us to insta skip the intro. Can’t see anything in Rewired to cause a button press to be down longer or anything, might fudge a delay into introStarted for now. Done, 5 mins.
Ok, main menu just needs the drop down items to be red when selected and we are done. Boom!
Rewired for In-Game Menu
I think the main thing for this will just be that I have to tell the EventSystem to select Resume every time I hit Esc/Start, so we can cycle through menu options. I’ll cross my fingers anyway. Here’s what Rewired says to do:
EventSystem.current.SetSelectedGameObject(selectableObject); and force it to always be Resume? This isn’t a complex menu or anything…
As usual, and probably because my code is a terrible mess, to cut a long story short, there’s lots of broken things happening. The starting menu appears in the tutorial/planet scenes, somehow the ingame menu is appearing in the Intro screen on restart and more! It’s 130 so taking a lunch break.
Lunch
2pm restart. Wondering if I should be trying harder to write good code right now instead of panic rushing stuff. Have a feeling I’ll be working a couple of late nights…
40 minutes in and things are a little cleaner, but still these problems:
Restarting doesn’t turn the Quality/Res/NewGame Canvas back on
If I manually turn it on and try and press New Game there’s a bunch of null refs from unrelated stuff.
When we restart, we can hit escape and the in-game menu appears… 10 mins
Slowly moving everything into sane places in my code, mostly in SceneSetup and LoadEXOScene places instead of just blammed in dumb places with similar function names in an attempt to confuse myself as much as possible.
CofffeeeeeeEeEeeeee! 10 mins
Ok things are looking good! The restart() loop is working fine now except the narration isn’t restarting properly.
My First OnDisable() Ever
I swear, first time I’ve ever done one… to try and handle resetting vars for Restart(). #unitytips4pros
Seriously the fact I’ve never used this is so ridic!
Shortly followed by me writing this comment to myself in my code: //we never disable this script YOUUUUUU!!!
Yeah, I’ll rename this, lol, maybe “ResetVars()”. I’m just being stupid. 45 mins later we can restart and still hear my amazing, self-voiced Aussie-accented narration!
Now the question is, can I restart from ANYWHERE. Testing!
Testing!
An asteroid annoyingly blocks the monoliths blue beam, it’s distracting! Fixed 2 mins
Restart works like a treat except once we’ve completed the game/demo, the narrator (and all sound) isn’t restarting.
Watch me Learn!
After we fire the player off at the end of the demo, I mute everything, so…
Boom! Task complete dare I say? Now building and testing with mouse/kb and controller.
Test Build Notes
4pm
In the build, the dropdowns for Quality and Res are switched around, and resolution was 1180 or something… uh oh! Fixed in 30 mins
Ok now it looks fine but I can’t use the interface at all… Can’t change drop downs without them ‘staying’ and obscuring other interface, and New Game doesn’t work at all either. Fixed in 30 mins
Even while debug says I’m changing quality settings, the game is definitely just using some middling quality setting. Who knows when the last time was that worked… Anyway fixed in-editor, Fixed 15 mins
Getting hit by lightning in tutorial, lawl… This fixed itself??
In the build, we can see menu options but instead of the intro/earth scene in the background it’s pure black. But in editor it’s fine……….!!!!!!!! NFI why the differences. OK maybe being hasty, it’s because in editor I have both scenes open already, so testing with just Manager scene loading first… Fixed 30ish mins.
Narration pauses too long in intro, players might skip in 2 seconds Fixed 2 mins
If I leave the intro to complete, I get a bunch of rewired errors – check to see the difference between skipping intro (which I’ve been doing endlessly) and letting it run
Odd, further testing didn’t replicate the bug… Fixed
Second Round of Testing Notes
Just played through with the controller, striking out stuff that’s too hard basket/not critical:
Fully open tutorial door, we can hit it accidentally
Narrator vol is messed up if we go in clouds. Only adjust mixer if narration not happening. Fixed 5 mins
Controller > start. Resume. In game menu stays open. Fixed 10 mins
Controller > restart, lost focus on Intro Menu. Need another one of these EventSystem.current.SetSelectedGameObject(selectableObject); Fixed
After restart, skip intro, no player or environment volume in tutorial scene
Can’t see some lightning bolts hitting us, usually the first one??
Dinner O’Clock
Breaking for dinner at 630, then probably do another hour or two since I’m running out of time. Also just re-read the closing date for LeftField, seems the 20th is closed, dunno if I can submit on the day or not so…
Committed. 815pm
Now to add the EventSystem.SetSelectedObject to the main menu/new game button in case of a restart… I can’t seem to figure out why I can’t get the New Game button to start selected/highlighted on Restarts, which is unfortunate… It may be something to do with the mouse taking focus away from it, like if I ever move the mouse… However I just tried not touching anything, and that made no difference. The Rewired Event System confirms that it is actually selected/highlighted, and I can just press Action to start a New Game, so it may not be highlighting correctly or using the wrong color for some reason. Might Google this.
Found this: http://answers.unity3d.com/questions/1159573/eventsystemsetselectedgameobject-doesnt-highlight.html
The WaitForEndOfFrame coroutine was a winner. 15 mins.
My other worry is if someone knocks the mouse and takes focus away from the menu… I may need to have something that detects mouse or joystick usage and uses that.
For the joystick, perhaps “if selected object in the event system is null, and if any joystick axis/button down, set new game as the selected object”. Mouse doesn’t need that come to think of it.
Re-activating Menus with Controller if Focus Lost
Was pretty happy with this code, which appears to have worked first go, can now move the mouse off menus/click off menus so they deactivate, then move the d-pad and the menu will come back. Only downside is, controller axis doesn’t do that yet. Gonna try for 5 mins. Wow, things work! Here’s my amazing code, which is mostly other peoples amazing code and plugins!
930PM, going to do another Build Test.
Third Build Test Notes
Can’t select resolution with controller.
At end of demo, the mouse pointer was sat on a button, and no Controller input would budge it… Maybe “if Controller input, lock mouse cursor”? Then, if mouse movement, unlock? Same happened just in the normal in game menu but multiple buttons would get selected. I’m sure there’s a better way of doing this but for now… HACK ITTTT.
Trying to fix the lock state stuff by detecting mouse or joystick inputs, annnd it also worked pretty well:
Hmm, I think I need a wider blog theme so code it more legible!
Lightning, First Strike Sucks
And is invisible. Pretty important player’s realise quickly they can get struck so fixing… 10:15pm
First I will build, zip, upload, since this could be used now I think (still needs more testing though).
I fired off a bolt in secret at the start of the level, lol. Worked! 30 mins.
Still kinda hard to see the sphere covered in lightning too, gonna tweak that some more as well. The way this plugin works, it’s almost hard to have the settings ‘middle ground’ instead of it looking like it’s off or ONFIRELIGHTNING-APOCALYPSE.
Last Thing(?), Sound Levels
Some weird sound stuff happening, I dunno if I reset anything properly from scene to scene. I think I need to look at MasterAudios Dynamic Sound Group stuff to see if we are adding new sound groups endlessly or something…
Uh, lightning going off in tutorial again somehow? I did that hacky lightning so it’d go off only on the first planet… also for some reason I can hear wind now… This problem seems intermittent! Leaving it…
The reason we can hear rain in the intro after a restart is, we enter a cloud, hear rain, then restart, and rain isn’t turned off. I OnDisabled() the shiiiit out of it!
Again, the lightning + inclouds sounds appearing randomly in the tutorial is really bad. Gotta investigate at least 15 mins.
11PM
Added some extra things (sceneIsExterior) to try and shield lightning from going off in the tutorial… MasterAudio must also be firing InClouds to get the sound I hear as well, but nfi how it’s fired. There’s no clouds in the tutorial level! HumMmmMmmm
Oh, and the drop down for resolution…
If I can’t get this, no big deal, who has a monitor that isn’t 1920p?! Well the odds someone does for Rezzed just for my game is 0!
Abandoned! Can’t make sense of the code I copy pasted ages ago!
Final Test
Seems to work, ran 2 full games with mouse/kb and 2 with controller, no problems.
Did one more and still feel like sometimes the sphere doesn’t transform into a glider when entering a cloud with 0 charge with glide button held…! Noticed that it costs more to glide than we can recharge, which might have been the reason? But it only seemed a problem on first cloud enter… Tested a little more, still unsure, good enough though – you often get hit by lightning in clouds anyway I guess(!).
Tidying start position so we definitely roll down the hill the right way… And there’s a bit of geometry you can snag on the tutorial.
Zipping and submitting now and calling it a night once that’s done. Now past midnight!
Phewwwf. Maybe I’ll submit then get up at 9-10, do some more tests just to make sure, and I can submit another updated one if I need to.
January 18, 2017 / Jay / Comments Off on Daily EXO ONE Dev Log. 2 Days till Rezzed Submission.
Two days to go until I submit this build to Rezzed Left Field. I think I could probably do some testing today and submit, but with two days I think I’ll spend all today tweaking stuff, tomorrow doing maybe a touch more + testing, then submit.
Planned Tasks
Rolling over some tasks from yesterday
Wormhole fx don’t show in tutorial
No wind buffeting sound in clouds
Lightning tweaks (received new developer email with a fix)
Player starting position is crap, we start rolling backwards toward the camera. Starting on a hill would be best.
This shouldn’t take too long, I might tackle these, then I have an email to write for Hyperfocal Design that might take a little bit, then I’ll have a playthrough of a build with mouse/kb + XBox controller and see where I’m at, if I’m going to ‘call it’, etc.
Realtime Notes:
Making notes/observations/new tasks as I go:
Wormhole fx fixed, 5 mins
Trying to tweak the sound for wind in clouds but nothing happening – not sure if my fault or plugin’s! Doubt I’d get a fix in time if it’s the plugin, though, so going to have to find some other way.
Now just trying to track down how and why the wind buffeting sound is being held so low while in clouds.
And still trying… really baffled why this sound effect doesn’t go to full volume in clouds anymore!!
The reason I’m still on this is because people often tell me that getting in clouds is one of their favorite things in EXO ONE, and I think the sound is a big part of the whole experience, so I really wanna make sure this is working!
30 mins
Wind Buffeting Volume
When in clouds, Group Master Volume goes to 1 (great!), but the Variation volume only reaches 0.5 (boo!).
An event in Master Audio tells this sounds “Group” to go to 1 volume over 1 second when in clouds, and 0 over 1 second when out. Yet the variation is 0.5… Shouldn’t the variation stay at 1 at all times? I don’t know!
Checked that the sound distance/fall off was correct, check!
Turned off ducking, no effect.
Finally got it, it was a Bus Control volume setting, I think I was possibly confusing this control with Group Control! Ugh!
Since I’ve just realised this I’m taking the opportunity to adjust some volume levels I wasn’t happy with.
1hr
General Volume Tweaks
While tweaking the inclouds stuff, noticed:
Holding shift to glide doesn’t transform us (visually?) if we have 0 charge, then enter clouds (which gives us charge). Needed to release then press again…
General sound and music volume sounds good now, but Narrator gets drowned out
Adding a new Mixer group for when narration plays, should be pretty easy… Umm, I take that back! I kinda need a bit of a system to handle this as all I’m doing now is transitioning between Mixer Snapshots based on if we’re in clouds or not, and this would have to work with that… And it might need a priority system, so if we change to a Narrating Snapshot then enter clouds, we don’t just change everything back… Or for now I could fudge in some stuff into my inClouds SnapShot transition code that checked if narration was happening, and if not, transition… Umumumummmm…
This has taken a couple hours so far messing with volume levels. It’s almost there, the big thing is just that narration is drowned out… Well, I’m just going to go for the hackiest option of lowering all volume levels except the Narrator, so my game will be kinda lower volume than usual… No wait! One more thing I’ll try quickly – in the NarrationOn/Off functions, I’ll try setting all Buses lower volume during narration, then back again afterward…
Ok, implemented that, not toooo hard, still can’t seem to hear any volume adjustment happening on certain sounds though, which is annoying. Unsure if it’s just MA not updating in realtime or I’m not understanding something… It’s good enough, though.
1hr.
Lightning, Round 2
According to the lightning plugin devs email he just missed a file, so trying again.
Whoops, errors, still no good! Moving on!
5 mins
Player Start Position
Since EXO ONE has a procedural terrain, this will probably change, but I’m not changing terrain for this build, so I can just move the player to the top of a nice fun hill and let players drop down.
That was pretty simple, 5 mins.
Glider Transform in Clouds
This isn’t happening, at least the visuals aren’t. It’s total rubbish to have to release your finger and press it again to glide in clouds/after getting hit by lightning… The only thing I changed recently was the execution order of the Player, PlayerControls and PlayerRend scripts, so that might be related.
Realised this was caused when I changed Glider Transformation from a button held to button pressed system. Works well when you have charge, but if you have zero, then gain charge, but you don’t release and Press the button, nothing happens. I need to use one of these kinda bools I think:
if(!doingThing) {doingThing = true}
… to stop it firing every frame I hold the glide button, which I kinda hate cos I feel like they’re so messy and require a million bools, but not sure how else I’d do it.
Lol, I even found duplicate if(glideButtonPressed) code, I am amazing!!
This is actually a bit of a bitch of a problem, as I can’t just do:
if (PlayerControls.instance.glideButtonHeldDown)//need this for auto transforming when at zero charge and we enter clouds
{
if (!glideButtonHeld)
{
glideButtonHeld = true;
TriggerEXOTransform(EXOONEShape.Glider);
}
}
… do I have to go in and set glideButtonHeld false when we reach 0 energy? My logic brain hurrrrts! I wonder how many programmers read this and laugh? luls (no one reads this :).
The bool name for this is definitely misleading as well, but again in the vein of get shit done, this will do. I just did what I said above, it is foul but it works.
Here’s an insight into my code (probably terrible):
30 mins
Just realised lightning seems even worse than it was, I can’t even see it. Perhaps this happened when I was trying to update it?
Lightning Round 3
I feel like this happens a lot somehow, I finish doing things, then they change magically and I need to re-do them!
Done! 15 mins.
Lunch Break
Got up a bit late so just 15 mins.
Pulling Up
Feel like I need to tweak the glider pull-up mechanics some more too. It feels good when we are moving toward the ground or parallel to the ground, but you get punished by trying to pull-up when already going up (in my attempt to stop ridiculous heights). It could also help if perhaps EXO ONE doesn’t move in the direction it’s facing (its velocity) but instead zeroes out Y. This way you couldn’t hold forward and endlessly fly upward. I might try this first as this might be an easier fix with a tweak to how I handle pulling up.
This is taking too long, I’m trying to actually model a glider with my rather simple physics code by hacking things together. It gets close but I don’t know if I’m going to manage anything decent in time. I’m going to give this another 15 minutes then admit defeat for now.
Thought I’d try and record a video in the Unity Editor but I have yet to own video recording software that doesn’t crash everything(!)
Calling this done for now even though it aint!
30 minutes
Build Testing
Going to play with mouse/kb then XBox controller, and make notes on anything that sticks out as super broken.
Notes in order of importance:
RestartLevel from ‘demo complete’ is broken with a black screen
Unpin terrain to avoid the ‘snow bug’ in terrain (Map Magic/RTP issue)
Tiny draw distance (not being set correctly?)
Pull up costs no energy vs jump, which does.
Music too low. Are we returning to max vol after narration?
Alien signal too loud in intro
Sphere not lit in tutorial
Hud arrow in intro shouldn’t be visible.
Can’t glide and pull up from ground?
Plz Restart, Level!
Blarrrgh! What happened to you, RestartLevel!? Time.timescale = 1 yet we seem paused, and having trouble getting the damn black fadeout image off. If we restart anywhere else we still break everything… RestartGame() also no longer working, help me jebus! watafak!
Here’s another example of something that was working and now isn’t. Maybe this is just common? I feel like I need a better methodology for figuring out the cause, and probably some way to code things that doesn’t make them so susceptible to breaking in the first place! Having a lot of trouble with this, 30 mins + in.
Notes:
Clicking restart level seems to properly unload and then load the scene we are in. New intro starts to play but nothing happens from here. Game manager needs resetting or something?
Looking at the LoadEXOScene code (it’s garbage) and have nfi what the problem is
shiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiit
trying to build incase build is different to editor… (hail mary) … Nope!
OK, Debug.Logs, EVERYWHERE. This has taken me hours now for something that was working before…
Looked back through my tasks from yesterday and can’t understand what changes might have done this.
We seem to be staying in our Orbit state during the intro, after restarting… And my debugs tell me the player in orbit isn’t moving.
Checked Time project settings and while I swear to gawwwd it said 1 before, it just read 0 (paused), which is hopefully where my entire problem is.
OMG it’s working again, wtf! I have no idea why the timescaling decided to stop working but I’ve fixed it. Now on to restart()ing
Restart works but the intro text stays if we Restart right away…fixing
So now we are back to square one after most of the day spent redoing what I thought I’d completed already, and the menu > restart or reset level still doesn’t work. I think I may just need to get the black overlay/fader image to go away and this might be done.
RestartLevel is now working, but not RestartGame();
So many hours, 4?
Double Manager Scenes on RestartGame()
It helps sometimes to look at the inspector, #unitytips. So first guess, I don’t actually unload the Manager scene, then load another…
Whoops: //SceneManager.UnloadScene(SceneManager.GetActiveScene()); //can’t unload an active scene!
Where was the warning/error on this? I didn’t see one!
Rewrote my previous terrible code with some less terrible stuff, works!
20 mins
Remaining tasks:
RestartGame from ‘demo complete’ is broken with a black screen
Unpin terrain to avoid the ‘snow bug’ in terrain (Map Magic/RTP issue) 5 mins
Tiny draw distance (not being set correctly?) 15 mins
Pull up costs no energy vs jump, which does.
Music too low. Are we returning to max vol after narration?
Alien signal too loud in intro
Sphere not lit in tutorial
Hud arrow in intro shouldn’t be visible.
Can’t glide and pull up from ground?
And after testing, let’s add a big obvious one – controller support for menus, yikes! I’m a professional … game … makering … guy! Cross fingers I can actually pull this one task off in one day!
Tomorrow will feature getting RestartLeve() working from the demo end, plus controller menu support.
Answer a couple of Hyperfocal (my bread ‘n butter biz) emails. ~30 mins
Do a little Facebook ad research ~15 mins
Write an intro email to an Aussie games journalist ~10 mins
Build EXO ONE and check it actually works (was testing in-editor) ~10 mins
Take deep breath and try to fix the jumping problem for the 10th time. Jumping was never an issue until I rewrote some code to make things clearer/better. Surprise I made it a little worse at the same time! This could take all day, but I might admit defeat at the 2-3 hour mark (because Rezzed Left Field games event deadline) and move on to other tasks like yesterdays:
When reaching the end transport monolith, some tidying up needed for sounds etc.
Add escape/Start menu so players can restart the game
Numerous small things like HUD appearing when it shouldn’t, old text that makes no sense in intro, etc.
Social Media Post Timing I always thought posting social media at 9am was the optimum time. Just saw this, though, which is kinda arguing against that. This is for facebook, but possibly applies to other social media:
Pages to Watch See how often other developers post on Facebook and their level of engagement using “Pages to Watch”. Pages > Insights > scroll down. Requires 100 followers. Ugh, I have 70 something. Going to just buy 30 so I can mess with this.
Video is huge on Facebook I’ve definitely noticed this last year, and need to start uploading videos there instead of just posting links to Youtube.
I thought those 3 were the best points, but check out the article yourself.
Email
Contacted a local journalist (something I do way too infrequently) to see if he was keen to check out the game. I always ‘feel the fear’ of contacting people, mostly because it involves putting yourself and your game out there to be potentially ignored. But that is life or something! In the email was the ‘elevator pitch’:
“EXO ONE is an exo-planetary exploration game where you float, fly, roll and glide with complete freedom across a multitude of surreal, alien worlds.”
Thoughts?
Testing Build
Building and checking that it works first of all… Here’s some notes I took:
Quotes ” ” in tutorial are all over the place, just gonna remove
Debug warning text shouldn’t be showing in tutorial, but is. Prob related to recent addition of Energy Explanation stuff
Wormhole fx don’t show in tutorial
Jump bug almost seems to be happening more than usual :/
No wind buffeting sound in clouds, probably due to tweaking sound levels yesterday.
The sound and music levels are a little off still, but I sense a huge time-sink ahead if I start moving sliders. Slider moving is truly my bane. Maybe if I have time I’ll return to this. Now, jump buuuug!
Took 20 mins.
Jump Bug
Kicking this off at 1130am with some Hyper Light Drifter music by DisasterPeace :)
Playing in-editor to watch when jump count debugs fire off, to try and get an idea what causes one jump to work and not another. It feels like an issue with FixedUpdate, but the way I handle the jump controls, it should only fire for one frame. Removed a line of hacky looking code and tested again, seems to be working. But I’ve thought I’d fixed it before! Will carry on testing it as I do other things. Took 10 mins.
Related to jumping, the visual effect for jumping in glide mode is broken, so working on that now.
Glider to Jump Transformation
Only I could make something as simple as a ball transforming into a flattened ball so hard! Really keen to get a programmer’s eyes on this to get their opinion on my logic/methodology. A friend of mine has offered, so I’m really looking forward to seeing what he thinks.
I think my logic skills are just so bad that I have trouble visualising how to handle all the cases of ball transformation, from sphere to glider, to jumping sphere, jumping glider and back… Typically when I’m stuck like this I just kinda start trying thingz and seeing what the result is. Probably hence how slow I am!
I just adjusted script execution order to hopefully clean up conflicting timings… I think this is probably a bad solution, but surprisingly that fixed it! The reason I tried this, was that in my code ‘tidy up’ prior to holidays, I split the player code out into 3 scripts, and now a few things happen “at the same time(?)” in Update(), whoops. In the future, if doing this, I probably need to do less bools and more calling of functions in the separate scripts, instead of in Update(), using bools to trigger when stuff happens. If that makes any sense…?
30 mins
End of Planet/Level Tidying
Mostly I need to just properly end the ‘demo’ if it’s shown at Rezzed. When you reach the transport monolith and fire into the sky, some sounds go stupid and I need to stop that. I’ll also bring up text with ‘demo over’ and then a menu with Restart Game and Restart Level. Come to think of it, since I should add this for testers and for the Rezzed build in general, in case something breaks, maybe I should make a ‘proper’ little menu screen with these two options that’s available at any time using Start/Esc. Unsure how long this might take, should just need to call my level changing code and make the menu/options/on/off etc… I’m going to wildly guess 1 hour. 12:17pm
So far so good, have a menu in my ManagerScene I can turn on and off with Esc/Start button, displaying the two buttons, but can’t seem to make a click happen. Hopefully there isn’t some dumb code blocking rays somehow…
Ah, nice, found this: https://forum.unity3d.com/threads/cant-click-ui-buttons.431042/ which explained how to use the EventSystem to check what rays are hitting. Nailed this in 2 seconds and restart level is working with a couple nul refs, which don’t seem to be hurting anything too much…!
Kinda happy with how my LoadEXOScene(string levelname) works, as I was able to easily reuse it for the menu level loading/reloading. Added something so Esc can’t be hit in the start menu (level can’t be restart from the start of the game!), and testing now in a build.
A few things,
No mouse appearing on esc/menu in build, due to 3rd person camera plugin hiding it
There’s an errant escape Input somewhere that’s still quitting when I hit esc/start.
Narration continues while paused (leave this for now, doesn’t matter)
Need an Exit button for testers/in case the game bugs out and people wanna completely close and restart the game.
Need an Exit menu item on start screen + actual game exit code
Realised I need a better RestartLevel() because there’s 2 levels (I was cheating and just loading the first planet).
Time: 1:25pm, looks like I might need another half an hour, so might take twice as long as my hail mary guess.
Having a break, now that I’ve completed a few of the above. 1:50
Break O’Clock
Back at 230 with sweet caffeination after dropping in at William Chyr’s Manifold Garden stream.
Finalising Menus/Exiting
Just realised since my Start Screen scene is separate from my Manager Scene, I can’t just drop in my GameManager script to OnClick to Quit, which is annoying. I guess I should maybe move all of this into the Manager scene, but not right now! Added some duplicate Application.Quit code :P
Things taking slightly longer here as I’m trying to test Editor/Build specific stuff like Quit and mouse pointer lockstates, which for some reason seems different in editor vs build.
I’m getting very tempted to move PlayerControls into the Manager Scene, as I now need to ‘re-write’ some more stuff to handle hitting escape when the player isn’t in a scene, ugh. Will need refactoring though… Must… not… do…! OK, no quitting allowed during the intro for now! Boom!
This is turning into an even larger task, lots of stuff I didn’t realise I’d need. Here’s the remaining tasks for restart/reset:
After restart level and restart game,
Menu remains
Game stays paused
Other UI remains.
Need to probably eventually make a state for this?
For some reason mouse pointer doesn’t appear when hitting esc in tutorial scene but does in first planet.
While testing in tutorial, noticed some more broken text/prompt stuff, eep!
3pm now. Might take another hour for this, if I was to double what I actually think it’ll take!
Added Resume() which is called after level restart, and a resume button, so those things now work. On to Restart now.
Wrote a new Restart() function similar to my LoadEXOScene() one. Task now blown out to most of the day :/ 4PM
Getting close now, fixed all the above and Restart() is working with only one problem, music continues after restart.
Boom, done!
Check out this amazing menu (lol):
Certainly good enough to go, IMO!
Lightning
I was having issues with getting lightning visually depicting how much charge a player had, which led me to email the plugin developer for this procedural lightning. I’ve got a response so I’m going to try his tweaks to see what they’re like, so I can respond before end-of-day. I kinda try and prioritize stuff like this when most developers are in a different time zone, I don’t wanna wait too long between emails. Committing first, though! 430PM
Broke to make food… Now 530. About an hour then I’m done.
Updated lightning plugin as the author’s changes didn’t work, suspect this is the reason. Still getting errors, so emailed the author back and moving on.
Other Tasks
In order of importance that I can complete in 45 mins or so:
Tidying sound etc for level ending
Wormhole FX in tutorial isn’t turning on
Wind buffeting sound in clouds is gone for some reason
Player starting position is crap, we start rolling backward toward the camera. Starting on a hill would be best.
For now I’m just muting sound when you touch the monolith and fading to black, completed in 5-10 mins. Buttons don’t look great on black though… And the pointer is invisible… Fixed, 5 more mins…
Ugh, now for some reason my Restart code isn’t working! Perhaps because it’s about 40C in my office right now! Ok phew, it was just because I changed the file/folder names for some scene files…! My rage levels have risen the temp even farther now and it’s dinner time.
DEV COMPLETE. 6PM.
This is working out fairly well. Either I’m getting more done, or am more focused or I just remember now what I’ve done, either way quite liking this! I wonder how boring and incomprehensible it is to read, though? :)
I recently listened to an episode of Tim Ferriss’ podcast that talks about the health benefits of gaming and the lessons we can take from the games we play. Tim’s guest, Jane McGonigal challenges people to ask what the current game they’re playing can teach them, and what they can implement from that game in their every day lives. You can listen to it here.
Currently I’m playing the BestGameEverMade aka Rocket League an inordinate amount, certainly pushing close to (ok, over) the 21 hrs a week limit that Jane feels is a wise upper limit. So I thought I’d write up some thoughts. I’ve considered this topic before in another game I used to play a lot of, which is semi-professional (mid stakes) poker. Thinking again about that game, I think the two share a lot (as I suppose many games do). Read below for the lessons I feel that Rocket League can teach and how they might be applied to life. My examples are pretty skewed towards games development because that’s what I’m focusing on, but I think they’re fairly easily translated to business, study, and other things.
I’m certainly no “life coach” either, so I’ve left my own advice somewhat thin, and linked to people I like on the subject.
Rocket League?
If you haven’t played Rocket League, aka Soccer Cars, its exactly as the latter sounds – you play soccer with cars, ‘ramming’ the ball into the opponents goal to score. You also have access to a jump and rocket boost ability, which funs the game up to ridiculous levels. Its quite a spectacular game – fast cars, airborne cars, flipping cars, a huge floating ball, plus neon lights and epic slow motion replays that let you re-live your glorious goals! Oh and when you score, there’s a giant explosion in the net and nearby cars are flung into the air. Whoever thought of that is a true genius.
1V1
I think most of these “Rocket League lessons” are most applicable in the 1v1 version of the game as it seems to highlight a lot of things. Your team mates aren’t around to pick up the slack created from your errors, you can’t blame them for your mistakes, consciously or otherwise. The best blame game I’ve managed in 1v1 is the (maybe?) very slight RNG’ish-ness of the initial kickoff and some other ‘clash’ situations. Otherwise every action you take has pretty clear repercussions.
In 2V2 and above, forming and working within a team is very important, and I talk about it below.
1. Don’t over extend
This is the first thing that comes to mind when I think of my recent Rocket League games and potential tie in to real life. Most likely this is my number one because it has resulted in some of my most painful defeats. In my very biased opinion, I’ll be the superior player in said defeats, flying around the pitch in spectacular (ridiculous?) fashion, taking shots from all over the place, while my inferior opponent trundles around. Where it all goes wrong is where I overextend, miss a shot, which ricochets into my opponents hands, right when I have zero boost left to catch him. He doesn’t need any skill to walk it into my goal when I’ve over extended sometimes literally inside his goal net.
The problem is partially that I’m trying to play the same game as pro players, but without the requisite skill level. A classic example of this is trying for aerial goals, by far the best way to overextend and get out of position. Aerials require great control to pull off, and if you miss, you’ll sail slowly toward the ground while your opponent again walks the ball into your goal. If you can pull off reliable aerials, great, but otherwise you’re definitely overextending!
Here’s a clip of a player over extending just a little too much (especially in a high skill game like this one):
What’s the real life tie in? I’m personally involved in games development and have developed a couple in the past few years. They were very simple games that I managed to complete to some degree by myself or with another developer (www.class3outbreak.com and Unknown Orbit). Currently I’m attempting a more ambitious title that has made me question if I’m overextending my own skills, time and ability. I’m trying to mitigate this by hiring some part time help, and thankfully I have a business (www.hyperfocaldesign.com) that helps pay the bills while I tackle this, but I certainly still feel on the edge of my capabilities. Realising when you’re overextended in Rocket League is certainly a touch easier than trying to guess the schedule, time, budget and fun-factor of a multi year development cycle on a game, but even just bringing attention to this stuff can help or potentially wake you up a bit.
A friend of mine and concept artist has shared similar thoughts with me in regards to art. He teaches students who can sometimes try to run before they can walk, attempting some extreme perspective drawings of dynamic and complex anatomy with difficult to render materials. They have an epic, grandiose image in their mind of what it will look like, and what may take an experienced artist days the novice student is trying to do in half the time, leaving them inevitably discouraged and frustrated.
So I suppose the lesson is that in life, take into consideration your current skill level, abilities, resources, time and so on, and plan your projects accordingly.
1b. Risk Mitigation
Where will your next action leave you in relation to your opponent? What are the odds of you pulling this action off? Who is in the better position? This is a crucial skill in Rocket League. Watch this guy get it wrong:
This guy’s best possible case situation from this position is that he blocks the hit from his boosting opponent, leaving him still out of position facing the wall while his opponent faces his goal. He also has little chance of moving the ball toward the opponents goal, while his opponent has a very good one, being lined up parrallel to the wall. There’s also a good chance that he will end up upside down or turned over from his opponents hit, making things even worse. He gets lucky when his opponent misses.
The best move in this position is most likely to move back into a defensive position, keeping the ball and opponent between him and the goal, and choose a better spot to play back.
“IRL”, where do your plans leave you if you make a mistake, or when a risky move doesn’t pay off? In poker, people often play with only 1/100th of their entire ‘poker fund’ or bank roll in front of them. This mitigates risk so that during an unlucky streak, you can still survive to play another day.
Did you quit your day job to make a game that has to succeed in 1 year while living off meager savings? You should probably read Dan Cook’s excellent post on Minimum Sustainable Success.
Did you burn all your bridges with previous employers to make your new Oculus Rift VR-but wait for it, the hero is blind, (OMG!) out-there game? You kinda just boosted at a wall and hoped for the best.
The corollary is, as a very wise creative man named James Victore would say, “Use momentum as your friend. You only fail when you stop taking shots.” Rocket League is just extra tough on those damn rebounds every time you take and miss a shot, while games development requires that you get to survive long enough to take enough shots to score once or twice.
2. Prediction and Planning
What’s your opponent about to do? Where’s the ball going to bounce? What are your team mates doing? Judging these things takes a lot of practice and can result in some huge gains to your Rocket League’ing abilities. An obvious example of planning could be designating a goalie or defender, or informing your team mate that you’re about to center a ball, so they should get ready to take a shot. I felt a pretty noticeable click while playing at one point where, instead of forever driving straight at the ball, I’d start thinking a few seconds ahead of time and lining up for (seemingly now obvious) rebounds off walls.
Planning and prediction is a pretty valuable skill to have in real life, you’ll use it to guess at how large your market size might be, how long it’ll take you to develop something, how much money is required, what the server load might be, etc.
3. Meta game
The best place to look at the meta game in Rocket League is the kick off. Especially at lower levels you’ll find a common strategy where some players, instead of driving straight at the ball on kickoff, will sit back and let you fire a shot straight at them. They will save the flat shot easily, in fact kicking it straight back at you and into your own goal. The way to counter this is to chip the ball over them while they sit in goal, which is much harder to save. The meta game consists then of, will this player carry on doing this, or use it as a once off move? Will he come for the ball or sit back? What is your opponent doing, what has he done, what is he most likely to do next?
This ties in a little with prediction, and teaches us to consider the bigger picture and not just focus on each individual situation on its own. In game development, ask yourself how each feature you’re adding fits into the greater picture and how it serves your game’s end goal. How does this game you’re working on now fit in with the other games you’ve developed, or the audience you’ve built? If you’re going to kill yourself making your game, how does that affect the rest of your life and relationships?
4. Savings Strategy
Don’t spend it all at once, ya’ll. That’s what Rocket League teaches us in regards to our valuable boost meters. If you rocket around the place for no particular reason, you’ll soon find yourself with no extra speed when you need it most. The life lesson here is pretty clear, save something for a rainy day, you never know what may come up where saved resources will become invaluable.
5. Stay Calm
Due to the pace of the game, the excitement and thrill of scoring, winning, etc, you can sometimes fly at the ball and toward your opponents goal with such fervor that you may suddenly find yourself a) without savings in the boost bank and b) horribly overextended, or c) simply fumbling the controls and letting an easy save go begging. I think some of the greatest examples of control are the almost robot levels of emotion you see some Dota2 players having while avoiding almost certain death or wiping out an entire team on their own.
https://www.youtube.com/watch?v=8LpBFc3fbE0
Another important part of staying calm is when you’re in a bad, losing position, say 2-0 down or worse. The worst way you could handle this is just to quit the game, leaving you of course with no chance to come back. In the best case scenario you may stage a come back, or your opponent may get over confident. Even if you lose badly you can learn from what your opponent did and how he played, using that to improve your own game.
This is certainly one of the hardest things to keep under control in any competitive game and in more important life situations. I won’t pretend to offer any zen-like habits for keeping your cool, especially when I find it so hard, but the more you can actively practice this kind of thing in a zero downside situation like Rocket League, the better you can prepare for more serious and high emotion situations in real life. A good stepping stone to practicing emotional control is playing low stakes poker for real money, where the stakes are slightly higher, but not so high that you will negatively effect your bank balance too much. Entire books are written on the Psychology of Poker. This guy should read it (language warning):
https://www.youtube.com/watch?v=kojw0by3xcs
See how he does that pointless “rage jump” before the 2nd goal? He *might* have saved that shot if he kept his cool.
I find during games development one of the hardest things for myself is staying calm when I just can’t seem to figure out the cause of a certain bug. Often taking a break or going for a walk helps, as does writing and then not sending an email to a coder friend. This is called rubber duck debugging and I highly suggest trying it out.
6. SWOT
SWOT is a classic business acronym that stands for Strengths, Weaknesses, Opportunities and Threats. Each of these is vital to manage as part of your Rocket League game and in life!
Strengths
Identify what skills you have as a player/person and capitalise on those. Perhaps you played a lot of volley ball in real life, so you’re great at judging and timing an airborne ball? You might choose to use that to contest far more balls and with more aggression and speed than most players. Or years of console gaming has given you great control over your Xbox controller, allowing some more reliable aerials.
Back to the concept art example from No.1, if you’re a beginning artist, you may use the fact that you have a lot of knowledge surrounding … say, the WW2 era, and choose to focus on drawing objects from that area of expertise. If you’re a game developer and love and play a lot of strategy games, it’s probably wise to develop something based on that.
Weaknesses
What do you seem to have trouble with? If you can identify these things, you can change your game plan or project to mitigate them. Bad in goals? Maybe find a team mate who is a great goalie? Or attempt to leave the goal earlier to intercept more balls before they become shots on goal. Can’t code, but want to make a game? Try Unity’s Playmaker plugin, which uses a form of visual scripting.
Of course, you can also begin training to bring up your weak points, but just remember not to over extend and try to do everything.
Opportunities
One of my greatest Rocket League pleasures is biding my time for a loose ball to come toward me as I sit in goal or in midfield, and then spearing forward to make an unexpected shot. Sometimes this can also leave me badly out of position, so I’ve been trying to reign this in a little in 1v1 and 2v2! Opportunities exist for epic, ego boosting playzzz almost every second in Rocket League, and identifying them requires practically every skill in this post. Can you identify a player like me that overextends too often? Where will the ball bounce after he’s taken that wild shot? Is my opponent going for that boost, and can I deny him? What if that goalie misses that cross ball and I’m right there?
Identifying opportunities in real life is just as all encompassing as in Rocket League. In terms of game development it can often take a more simple form of, “this game seemed like it would be great if only it had X”. It can take the form of a coder looking for an artist or vice versa. As in Rocket League, always keep your eye out for opportunities while considering the rest of your SWOT analysis, and try not to over extend with too many!
Threats
In defense you’re often faced with the question of whether to sit back in your goal, or farther out, or whether to even rush out to tackle a threat head on, before it becomes a problem. In Rocket League its easy to forget that you kind of have two threats, the ball and the opposing player’s cars. In your constant fixation on the ball, you can forget its perfectly acceptable to ram or destroy an opponent rather than kick the ball like in real soccer. It can also be easy to forget this while you sit motionless, waiting for a ball to drop down to you.
Also related to prediction and opportunities, try to keep your eyes open for opposing cars trying to take you out, and remember you can play the car, not just the ball, which is often a far easier ground based target.
Try to always be anticipating how a ball could bounce badly or where an opponent could boost forward and take a shot on your goal, and remember its usually best to tackle a problem before its flying into the upper right corner of your net at 100kph.
In real life this is a very important part of SWOT analysis for business and game development. Is there anything on the horizon that could derail your project? Perhaps release dates for big name games that clash with your own? An API that looks like its about to be deprecated? This happened to Class 3 Outbreak, more than once.
7. Study Your Failures
You can save and watch your replays from a variety of perspectives, and what may have been unclear in the heat of the moment can be very educational when viewed after the fact. Did you get carried away near the opponents goal? Use boost where you shouldn’t have? Gotten airborne for no real reason? Maybe that bounce was just a bit awkward and there wasn’t much you could have done about it? Or you could reveal a critical bit of information on how your opponent drives at kickoffs, which caused him to win most of them?
There’s been a huge amount written on the value of failing as the best resource for learning and improving. Look at your replays in Rocket League and look back at past projects to try and learn as much as you can so that you can avoid the same pitfalls next time.
Personally, I recall during development on Unknown Orbit, watching a number of people struggling with the controls but thinking to myself that my awesome, two image tutorial would fix it, or that “its a skill based game, so its supposed to be hard”. When Touch Arcade reviewed it, the video showed the player having some big troubles controlling the comet, which resulted in an unappealing looking game. For Class 3 Outbreak, looking back, I should have realised much earlier that development speed was going too slowly and that our views on where the game should go were too different.
8. Team work
In games, business, study and relationships, good team work and forming a good team is huge. You can quite easily mitigate your weaknesses with other team member’s strengths, pass the ball to each other to gain openings on goal, and back each other up in threatening situations. The right team environments usually boost morale as well as each team member is there to encourage one another and to bring you back up if you’re down (like my team mates often do in Rocket League by spamming “What a save!” repeatedly when I miss a save…).
In real life and game development, the obvious and smallest team is the artist + programmer, each mitigating the other’s weakness and fully utilizing their strengths while working toward the same end goal. Other less obvious examples feature two artists or two programmers but little code or little artwork respectively, creating games that don’t require the skill set they lack in.
A lesson I learned over too long a period with Class 3 Outbreak is that you need to share the same goals for the game. Not just “lets make a successful/great game”, but precisely what type of game it will be and what the focus of development will be. If one person has a dream of writing their own graphics engine while the other wants to make a Dwarf Fortress clone (for an overly obvious example), then you’ll be in trouble. In my case, I wanted to focus on gameplay while the programmer wanted to focus on tools, with the added problem that I had a free schedule while he had a day job.
9, 10, 11. Enjoy Rocket League, Cos Shiiieeet its Fun!
Being brought up in 80’s and 90’s where gaming was pretty squarely relegated to nerd status, I sometimes still feel a bit guilty playing games. So I think it’s also important to just let yourself have fun and play a game of Rocket League, and deafen whoever is on Skype with your screams of delight as you sail through the air, overextending wildly to execute an unlikely but epic shot for glorious, glorious victory, deep into overtime, earning yourself a well deserved MVP.
Nice Shot!
Wow!
OMG!
OMG!
OMG!
Wow!
OMG!
Thanks!
Great Pass!
… here’s some epic, grin inducing footage of some Rocket League pros. I may have watched this more than a few times now:
To be notified of more posts like this in the future, or get notified when there’s some rare news related to my in-development game, subscribe below:
I got this idea from Tom Francis of GunPoint and Crate & Crowbar fame, and thought I’d do a recap of every game I’ve worked on. Partially this is an attempt to share my game dev history, partially to make myself feel better about the lack of progress I’ve made in the last couple of years(!).
I’ll start with the oldest games and end with my most recent.
Powerslide
I worked on this game straight out of high school, it was a post apocalyptic racing game that focused a lot on, yes – powersliding physics. I made (if I can recall that far back) 1-3 tracks, I definitely did the majority of the desert track and maybe a lot of the dam and mountain (?) tracks. As my first job, first game and first crew of non-school related co-workers and friends, it was a pretty huge deal and I’ve got a lot of great memories. A Powerslide ‘plaque’ still sits behind me here in my office, which consists of a team photo and signed gold master disc.
Role: 3D artist / Texturing
Made in: Custom Engine
Platform: PC
Year: 1998
Dirt Track Racing
When you’ve got a game with nice powersliding physics, dirt oval racing is a pretty logical move. DTR let you race in a career mode that mimicked real life competition, complete with sponsorship, multiple classes and progression. I think I was credited as game designer, but when you’re modeling a real life competition from real racing, the game is practically already designed for you.
Role: Game Designer / (artist? so long ago!)
Made in: Custom Engine
Platform: PC
Year: 2000
“Next Game”
Looking back, this was probably an overly ambitious title for its time, and the game designs I wrote for it probably didn’t help! The concept would have looked a lot like GTA but in a Mad Max world, complete with FPS and car combat sections, and an in depth story to boot. I recall the original game design by Richard Harrison (part owner of Ratbag) was far more realistic but I had some huge thing for people leaning out of windows and shooting each other rather than ‘copying’ Interstate 76. Anyway, I think this design morphed over time but never saw the light of day.
Somehow, after getting my dream designer role at Ratbag, I just didn’t seem happy at all, in fact it was the opposite, the last year I was there I wasn’t enjoying it at all. I guess I went from making DTR where I had a lot to do, to being someone who sat in front of the game design document all day long. I left Ratbag in the early stages of development, having picked up a copy of Kiyosaki’s “Rich Dad Poor Dad” – I had a need to go start my own business.
So here’s where I left and formed Hyperfocal Design (sells HDRI sky maps). After the sort of crazy schedules games demanded, I’d somewhat sworn off returning to developing them.
Here’s a video, which ended up being fairly different gameplay wise from what I’d proposed:
I cringe looking back at how much harder the prototyping process was (I don’t think there was one at all), especially with today’s tools like Unity. Back then I’m sure I’d have realised early on that dudes leaning out of car windows shooting at each other in a big open desert would have been a little boring!
“Concrete”
I managed to secure some early funding from our state government for this one, but at the time, with this concept, it was unrealistic to produce without a large team. Even today I’d say unless it was top down/2d sprite based or something it was another over ambitious title and I didn’t want to form the next Ratbag to do it. I got as far as actually meeting with a couple of venture capital people but didn’t get any interest. The gameplay again was GTA-like but ‘cops and robbers’ where the robbers could mark territory with spray paint and blend into the general population (there were no names hovering above heads). I suppose in hindsight the design is a little like APB (minus the MMO part), which was a spectacular failure.
“Zombie Outbreak Simulator”
I teamed up with Saxon Druce from Ratbag to make this one about 5 years ago. It was step one on the way to releasing the next game, Class 3 Outbreak. ZOS was a sandbox simulation, not really a game at all, where you could adjust various attributes of zombies such as their speed, infection time and so on. We had some success in terms of press coverage because the game ran on Google Maps and it had a big novelty hook.
Role: Game Designer/Artist
Made in: Custom Engine
Platform: Web, then iOS, then Android
Year: 2009
“Class 3 Outbreak”
With ZOS ‘complete’, we then released the ‘real game’, which I still felt was quite devoid of features. At least it had a fairly nice core mechanic where you had to use police units to stop the zombies multiplying out of control. Unfortunately, due to Saxon being only part time on the coding side, and due to changes with Google’s APIs, and then some huge screw ups with funding from the government, this never went much further. Eventually Saxon and I went different ways – I was always pushing for more gameplay but he wanted to focus on things like the map editor. We butted heads a bit and eventually I handed over my share of Binary Space to him.
Role: Game Designer/Artist
Made in: Custom Engine
Platform: Web
Year: 2010
“Unknown Orbit”
I’m fairly proud of this little title, which I developed in a year and released on the Apple app store. It’s essentially a 3D Tiny Wings/Endless Runner where you orbit around a small planet as a comet. It did pretty average, made maybe $2-3k or so and now sells a copy a day. I think the biggest let downs from this game were that I probably made it too hard and didn’t make enough content, ie other planets to fly around.
Role: All things! No wait, Rhys Lindsay did the music and Saxon helped with some high score code!
Made with: Unity, Playmaker
Platform: iOS
Year: 2013
Enter the ‘prototype years’
Whereby I make lots of prototypes and never finish anything:
“Zombie Games”
I messed around with a number of different designs for zombie games and never quite settled on any.
Status: This one is still simmering in the background, and I wouldn’t be surprised if I tackled a strategic zombie game at some stage in the future.
“Generation Ship”
I then entered a phase where I thought I’d like to make a game with no combat in it. I still feel this is a very noble goal and that potentially there’s a lot of uncovered non-combat stuff out there, but I didn’t do a great job of finding it. I wanted to make a game about a Generation Ship that was trying to survive out in space, you had a galaxy map and a crew, and had to decide where to go, what to do to survive. In the end it was just no fun, there wasn’t much to do, and I’ve since seen other games come out with similar mechanics that I didn’t like much either!
Status: Now ‘reborn’ (below)
“Fighter Tactics”
Obviously here I’ve totally given up on that theory and decided to do a turn based space combat game. This was probably my most promising prototype, which I abandoned when I saw the Oculus Rift.
Status: Also reborn (below)
“The Station”
This was an Oculus Rift prototype that also got quite far along. I wrote an entire script for it, characters, made a prototype… The only gameplay consisted of this kind of ‘dimensional tuning’, controlled by head movement, that never really seemed to resonate with people. Also I realised if I was going to make this game, I’d become a full time 3D artist again, which didn’t appeal to me.
At this stage I’m realising how lucky I am to have Hyperfocal Design paying my bills.
Status: I may come back to this one day, I’m not sure – I liked the story and concept but just didn’t want to make it I suppose. Its also a pretty big commercial gamble having no idea how Rift games would sell.
“Generation Fleet”
This idea didn’t seem to leave me, and I thought, why the hell didn’t I try combining the two ideas of the Generation Ship and Fighter Tactics? I was thinking a lot about Battlestar Galactica as well, and Star Trek Voyager’s Year of Hell episode. In terms of games, FTL is an obvious inspiration, as is XCom, and I really liked SteamBirds and Hero Generations. So that’s where I stand right now – the Generation Fleet/Fighter Tactics game is in prototype phase, I like the game play and I’m just trying some variants to make sure the turn based space combat is as fun and strategically deep as possible. The Generation Fleet story/world surrounding it will form a kind of XCom style meta game.