Scott Purcival

Game Programmer

Blog

The Dark

By on 10 March, 2018

The Dark

A bit of a late post for me, so I will make it a postmortem, i suppose.

I started working on The Dark as my first assignment while studying at AIE. It was to be a text adventure showcasing all of the skills we had mastered over the 6 month duration of the subject, and it was to use our own custom string data type class.

The concept of the game is that you are stranded in a dark labyrinth, and must find your way out before you starve.
The labyrinth offers only the occasional morsel of food, rare torch batteries, and other throwable objects.
You may use your torch to see what is around you, or throw objects that you find in a direction you choose to listen for openings.

Looking back, I would admit that I programmed this game quite conservatively, using only the minimum required data types and facets of the C++ language.
I was still at this time in a frame of mind where I looked down upon using any code that was not my own, as if it were some form of ‘cheating’. I have of course come to realise that the STL is no more or less someone elses code, than the entire C language and compiler are. However, I am still wary of adopting outside code unless absolutely necessary, as I feel this opens the door to potential bugs and inefficiencies. (as you can see, I am using Unity heavily now. I see the benefits of that engine to my development time outweigh any shortcomings.)

The most difficult aspect was the random level generator by far. I ran multiple concepts of possible generation styles with pen and paper before settling on the idea of a single winding path with rooms leading out from it.
The general algorithm went as follows;

  1. Create a random winding path from room 0,0 until there are no more possible exits
  2. Scan through the map top to bottom, left to right and find an empty room
    1. Create a winding path until there are no more possible exits
    2. Break through to nearest room
  3. Repeat 2, until no empty rooms left
  4. Randomly place start room, and exit room

I then created a handful of random room descriptions and Items to place in the rooms, and the game begins!

I would like to invite you to give it a try, it’s a simple game but quite challenging.
Let me know what you think! 😀

Download Here (Windows)

Cheers,
Scott.

The Ballmer Peak (Part 2)

By on 20 January, 2018

The Ballmer Peak (pt. 2)

-LAST WEEK-

So I took a short break from working on Ballmer Peak for a couple of weeks, then I came back to it.
At this point it was early in the new year, and as I had made a promise to myself to release something to the app store, I thought it best that I get it over with, and launch it, if only in early access Alpha.

I cleaned up the game, and started to implement what began as Story Mode, but ended up being the first 4 tutorial levels. I added a sort of credits screen, and replaced any art that could be the subject of a copyright issue, and set about uploading it the the Google Play store.

There were a bunch of hurdles to overcome, and I still find the whole process rather counter-intuitive – but my game is Live! And to date it has had 18 installs :O (thats about 17 more than I expected…) I hope these 17 people appreciate the update to version 0.3 that I pushed today :).
Among the major learning points were;
– Learning how to create a certificate and sign an apk for the Play Store
– Everything about navigating the Play Developer portal. Everything.

-TODAY-

I left the game on the Play store for about a week before working on it again. One of the major points i wanted to work out was in game music – as i feel this really sets the mood for a game, and everything feels a little bland and unfinished without it.
I didn’t want to use any off the shelf music, so after working with my nephew for a couple of weeks on some tracks, and really listening to what other games had done with their BGM, I came up with an idea of what i thought good game music should sound like.

Starting with the idea that I wanted the music to sound digital and computer-y, I spent some hours making and revising a track in an Android app called Music Maker Jam.

I then connected the BGM track to the coding rate in the gameManager in game, so that the music will speed up and slow down with the coding rate of the player, as a sort of non-visual cue.
Finally I created a static reference to the audio source in engine to allow me to keep the music playing uninterrupted across scenes, and I added audio feedback to button presses in the UI.

After toiling away for most of the day, i had a really nice menu system, credits, a tutorial, a free play mode, but still no high score system – which was really a problem, since outside of the tutorial, the only other game mode, freeplay, really only had one goal – beat your own high score.
For now, I thought the best implementation would be a platform independent local storage method until I decide how I want to host the leaderboard online. After a quick search I found the native Unity PlayerPrefs interface, and was able to save and load High Scores locally.
I intend to later upload any local high scores to the online leaderboard once it is created.

I then set out to upload my updated app to the Play Store, which was another learning experience. But once again, my app is LIVE! 😀

Hopefully my next update will be an online leaderboard, and some of the first chapters of Story Mode 🙂
In the meantime, feel free to Play it HERE! (WebGL) or HERE (Android)

Cheers,
Scott.

HowTo: Change Region Code on Samsung Gear S3

By on 29 December, 2017

YAAAY SAMSUNG PAY! 😀

Hey All,

I’m happy to say that I have successfully converted my cheaper UAE import Gear S3 Frontier to an AUD model, and now Samsung pay works flawlessly, and I have received the Tizen 3.0 update! 😀 😀
If you want to do this to your own Gear S3, follow the steps below, but BEWARE: This can BRICK your device! There is a very real inherent RISK in flashing firmware, especially non-standard firmware. If you brick your device, I will not be held accountable, however, I will try to help where I can. Just be prepared for a bricked device – and know your contingency.

Big shout out to the following members on the xda-developers forums for their info and guides;
adfree – for providing the firmwares
namrepus2010 – for making the main guide I followed
xedamen
BiggPharma
Honestly Annoying

WARNING!! AS WRITTEN, THIS IS ONLY FOR A SAMSUNG GEAR S3 MODEL SM-R760. THE FIRMWARE HERE IS FOR A FRONTIER.
(I have been lead to believe that you can do this to a Classic, but it will believe it is a Frontier now. Classic firmware may be available at the firmware link below.)

I CAN NOT STRESS ENOUGH HOW RISKY THIS CAN BE – THIS IS SERIOUS NERD TERRITORY

STEPS
1) Download:
netOdin (this is the program that will flash your watch – it requires a WiFi card to work)
Combination Firmware FTMA_R760XXU2BQC2 (aka Service Firmware – this is special technician only firmware that will let you change the country code)
Stock Firmware R760OXA2BQC5 (this is the standard firmware that comes with your device – we will reflash this after we make our changes)

BEWARE!!!!!
Before you flash anything, you must make sure that the firmwares you have are compatible with your device!
The links above are to suit model SM-R760 ONLY!!!
More firmwares can be found HERE.

To check your device/model/firmware;
On your watch, go Settings->About Gear
Model Number must be SM-R760
go to Settings->About Gear->Software Information
Software Version should be R760xxx2BQC5 (where xxx can be any number combination)
if your software version does NOT match this, all is not lost. This method should work with any firmware starting with R760xxx2 – but I have not tested on any other firmware. The important part is the number in the spot where the ‘2’ is, matches in all the firmwares. Going back from a ‘2’ to a ‘1’ (or a ‘3’ to a ‘2’) will brick your device.

More info:
If you care – the model number break down is as such
R760xxxyzzzz
R760 = model number
xxx = country code
Yzzzz = firmware version – Y = major revision, xxxx = minor revision (NEVER  roll back a major revision!!! minor is ok.)

Now that you have the software and firmware files to match your watch, follow this excerpt from the post at xda-developers (original post – do not download any files from the original xda post – unless you have a Classic, and you seriously check your version numbers – I have not verified them)

INSTRUCTIONS:
—————-

1. Check reactivation lock is off
– On your phone, go to Samsung Gear App
– Go to Setttings Tab, choose “Find my Gear”
– Make sure Reactivation Lock is off

2. Connect your watch to your PC
– Hold down the home/power button until you see the “rebooting” screen
– Release the home/power button then quickly press it three times to bring up the boot menu
– Quick press the home/power button to cycle through the menu to “Download (wireless)”
– Long press the home/button to confirm the menu selection
– The phone will then go into WPS mode
– Double press the home/power button to change to AP mode
– On your PC, enable WiFi and connect to the access point on you watch.
NOTE: Until you successfully connect to NetOdin, your watch may display red text stating “Connection Timeout” – this is OK
– Open up NetOdin. You should now be connected to your watch (you should see the IP in the NetOdin window and “Connected to xx.xx.xx.xx” on your watch face.
NOTE: I had to disable Windows Defender public firewall temporarily for NetOdin to work properly

3. Flash combination (service) firmware
– Load the unzipped .tar.md5 file into the “AP” box of NetOdin, wait for it to finish checking then click “Start”. This should take about 10 minutes to complete after clicking “Start”.
Watch will now reboot.

4. You will need to re-enter flash mode (Step 2)

5. Flash CSC file from stock firmware
– Load the unzipped CSC_xxx.tar.md5 file into the “CSC” box of NetOdin, wait for it to finish checking then click “Start”. This should take about 1-2 minutes to complete after clicking “Start”.

6. Factory reset
– In your Gear, go to Settings > Gear Info > Reset Gear > Confirm
NOTE: BiggPharma got a warning at this stage that Reactivation Lock was on. Don’t know why they got this message as they had definitely turned it off in step 1. They ignored it (no guts, no glory!) and was fine. Your mileage may vary. I however did not have this happen (I also got this warning – hit ok, no problems – SP)

7. Set CSC code
– In the Gear, go to the Tizen Keystring app
NOTE: screenshots of what your interface will look like:

– Type in the following code exactly: *#272*719434266344#
– You will be taken to a list of CSC codes that you can scroll through. Find the code you want to change to and select it. I used “XAR” for US so that i could use samsung pay.
LIST OF COUNTRY CODES HERE (I used XSA for Australia – SP)

8. Reflash complete current stock ROM
– Load the unzipped CSC_xxx.tar.md5 file into the “CSC” box of NetOdin, wait for it to finish checking.
– Load the unzipped AP_xxx.tar.md5 file into the “AP” box of NetOdin, wait for it to finish checking.
– Load the unzipped BL_xxx.tar.md5 file into the “BL” box of NetOdin, wait for it to finish checking.
– Click “Start”. This should take about 15 minutes to complete after clicking “OK”.

You are done!

And that’s it!
At this point I reconnected to my phone, and my watch started two urgent updates, one to Samsung Pay, and the other update was the new Tizen 3 update.
did have issues with some widgets not working after the Tizen 3 update, but one more final watch factory reset resolved those issues.

GOOD LUCK! 😀

The Ballmer Peak

By on 19 December, 2017

Game Screenshot

The Ballmer Peak

At the start of this year, I promised myself that I would release a game to the app store by the end of the year.

I started out working on ‘Tower’ – which was progressing really quite well, however, I hit a roadblock with art. I progressed as far as the free assets would allow me while retaining my creative vision for the game aesthetically. I did not have the spare money to spend on assets which I really only partially liked anyway, and with work and studies I found myself too time poor to learn 3D modelling, and so the game was shelved.

I then saw a new possibility in ‘Jeeves’ – the team project we are still currently working on for our Major Production, however the planned completion date is not until mid 2018, and I wanted the game that I put out there to be and example of my own work and so I decided that it would not fit the bill.

In a flash of inspiration an idea for a top down zombie survival RTS game struck me. It has unique game mechanics which bend the definition of the RTS genre, and I was receiving overwhelmingly positive feedback on the idea, but at this point, I would think it would have taken too long to make – and therefore was not an ideal candidate for publishing by the end of the year.

It was in a team meeting for ‘Jeeves’ that I was making a joke about how I avoid burnout through a finely balanced mix of energy drinks and bourbon, that the possibility of making a game mechanic from this struck me.
A quick brainstorm later, and I had a solid idea for a novel game using a traditional game mechanic, interwoven with a modern control scheme and a somewhat complex, but intuitive scoring and power-up system. The goal of which is to embody the essence of long coding sessions into the wee hours of the morning, and the hunt for the elusive Ballmer Peak.

At this point I am ~3 days into development. The art is all my own bar from the pixel font and falling pizza and V can assets (the both of which I will be replacing in short time). The font is free for commercial use and the author will be credited in the credits (when I make them).
I am really enjoying honing my pixel art skills, and quite enjoyed making the sound effects with wet sponges and real falling pizza.
As of writing this I am actually watching a video on Facebook integration. At this point the plan is to store and share high scores.

I personally think the game is at a fun to play state. I got this impression as I found myself cringing and yelling “OH NO!” at about the 1 day, 10 hour mark in a particularly good play session. XD

Anyway, let me know what you think about it below!
Play it HERE! (WebGL) or HERE (Android)

Cheers,
Scott.

2nd Place at NASA Space Apps! :O

By on 24 May, 2017

Kickin it for NASA

 

So a very late update for this one – mind you that depends on how you look at things, for me the NASA Space Apps experience is still far from over.
We still have 12 weeks of MoonshotX to go, a day of Academy Xi and a weekend of Coder Factory Academy to work our way through, and Global Judging is only 6 days away :O

To say this has been an experience and a thrill ride is an understatement. It’s all thanks to AIE (The Academy of Interactive Entertainment), where i study, for sending me down to Sydney to compete, and my great team Craig Bentick and Ryan Whitmore for knuckling down with me when knuckling down was needed, and shenanigans and laughs when S&L was needed. Also my amazing wife for playing team support and pep talk queen. She called us the winners before we even arrived in Sydney and would not let up the whole weekend. XD

The video above is our global submission for our project that we made in 48hours (24hours of actual hard coding). It is a Google Daydream VR data visualisation tool, but it goes much further than that.

Our ultimate goal is to develop this into a great learning and curiosity tool, one where you can put it on, and bring up an area of interest such as, say, dinosaurs. Then you can choose Triceratops for example and lights will appear on earth, showing locations that Triceratops have been discovered. You could hover over a point to see a photo of the fossil find, and some associated data. Click the archaeologists name in that box, and bam! more data points appear showing points of interest surrounding that person, such as other finds, their university, birthplace and so on.

In this way, learning and curiosity could become all absorbing, natural and intuitive. It would create a learning space that kids would not want to leave. This is where we hope this project can go 🙂

At present, it is as it was when we left the hackathon. You can display data, play with time, and overlay information to observe correlations. Feel free to try it out on any Google Daydream compatible device. Let me know what you think in the comments!

Download Here! (Android .apk)

The Tower – update #3

By on 17 April, 2017

The Tower! update #3

 

To be honest, I usually post these updates so late at night, I have trouble remembering what I have and have not released. It’s only when I get feedback about issues that I fixed 3 builds ago that I realise the releases are lagging behind :O

Anyway, here are the latest changes;

  • Much testing with many people and myself and I was still not happy with the controls, so completely rewrote the control sript from scratch, to now have twin virtuSticks, and a constant on screen indicator, as people were finding it unintuitive, and trying to look under their finger to see the dPad… :/ (people are strange) – SO! we now have twin sticks for touch, and lock on targeting for keyboard to make your life easier!
  • MobAI – changes to the mob AI have given them a blind spot directly behind them, you can now perform a sneak attack for double damage! Just sneak up and dont let the slime see you…
  • MiniMap! – so many people asked for it so here it is, minimap! Its a work in progress. I have not decided on the final location of the map on screen yet, and it also needs indicators around the ring to let the player know the direction to the next objective. So, work in progress
  • Main Menu – another WIP – this is currently only for quitting the game, but it was time consuming art wise – so please appreciate. 😀
  • Other Fixes – collider fixes on broken floor lava holes, Crystals now have health bars!
  • Removed Herobrine

v0.15 – Enjoy!

Download Here! (Android .apk)
Download Here! (Windows .exe)

The Tower! Update #2

By on 15 April, 2017

The Tower! update #2

 

Many hours of work and many major changes to the game.
It is now actually what one could classify as a *game* – with level progression, win conditions and the like.
We now have game levels which increase in difficulty the higher you go, a persistent player character throughout the levels, and some fancy schmancy level up effects, win effects and such – oh and a UI!!

Still to do is work on the character levelling – stats, damage and the like. More classes/weapons (im anti classist – more inclined to allow the player to express their class through items and such)

But yes. getting to the point where i can start to implement a game save mechanic and work on player progression and enemy progression to more devious foes!

Enjoy the latest build below, or watch the video above!

EDIT: v0.13 HOTFIX – Fixed all issues noted in Video above.
Download Here! (Android .apk)
Download Here! (Windows .exe)

The Tower!

By on 4 April, 2017

The Tower… post 1.

 

Currently a work in progress for my Cross Platform Development subject, the game is set to be a diablo-esque dungeon crawler for mobile.

Take on The Tower and prove yourself to be the greatest hero of all time!

Download Here! (Android .apk)
Download Here! (Windows .exe)

GoFarts Kart Fartin!

By on 24 October, 2016

gophartsmainmenubg

Old Pharts in Karts

A week of hard sprint down and our game is finally looking and playing like a game! With only one week left to polish (and I may have accepted the challenge to create online multiplayer…) this is our latest critically acclaimed build! Consider it as GoFarts alpha.

This is a lot of blood, sweat and frustration (tears are for pussies) so please try it out! 😀

Download Here!

ASSteroids!

By on 4 September, 2016

assteroids

ASSteroids!

So we had to make a game/demo graphical application for Maths for Games to show off our matrix library.
I figured something simple would do, something like Pong, Pac-Man… Asteroids! But I didn’t wan’t it to be just an Asteroids clone bit for bit… so I got thinking… Asteroids… ASSteroids… ASS Steroids? and yeah… ASSteroids was born!

It’s better if you just play it…

Download ASSteroids! – NEW for-everyone version!!

If it will not run, get the Visual C++ installer from Microsoft here. (you should already have this)