Category: Programming

The Only Thing That is Constant is Change.

September 25, 2016 | By | Add a Comment

I don’t update this site often, and I always get a kick out of reading the last few posts, sometimes years old, and having a laugh at my sincere naivety. It also makes me cringe a little, to read about stuff that just never panned out for one reason or another. Oh well, such is life.

Take my post about being a “Born Again Indie”. All very true, no dispute there, but shortly after that, things changed yet again, and then again and god knows how many times after that. Opportunities arose, and distractions tugged at me from every direction. Shiny, interesting things that all demanded little pieces of my mind, to greater and lesser extents.

The game I mentioned in that post was a top down, 2D, Egyptian themed dungeon crawler, RPG. It was actually going quite well, and then I had some problems with the artist I had teamed up with, and the whole thing just sucked all the wind out my sails. I sulked for a bit, and then, despite myself, I dipped my toe back into iOS and mobile for a few months, finally releasing one of my shelved iOS games. And then the game got swallowed by the App Store, and I got sad about mobile again and went back to the drawing board.

Then, about 8 months ago, I was having coffee with my good friend, and we were talking about the games we’d like to make. We do this regularly. We sit and torture ourselves with fantastical ideas and fantasies of RPGs and Dungeon Crawlers, and we always say we need to make something, but circumstances are always against us.

This time was different. This time, we were both in a position to commit some real time to a long project. We kicked around ideas and we toyed with making a small, quick game, and even a mobile game. But we kept coming back to our favorite things. Playing D&D, RPGs and Dungeon Crawlers. So we started to define our ultimate dungeon crawler game, constrained by the limitations of our dev resources (just 2 of us). We came up with something we both got excited about. By the end of our coffee, we were totally into the idea and decided to proceed by making a fully playable, polished prototype, to prove out the game’s viability as a full project.

We chose Unity to make the game, and we spent the next 3 months on the prototype. Quite a long time for a prototype, but our mandate was for all the system created would be production ready and usable in the actual project. No cutting corners and no temp or bought code and art. We developed a custom toolset around the Unity editor, and I built a number of highly flexible systems and game mechanics, that allowed Damon to do his thing, and put all his energy into making art and building dungeons and enemies and puzzles.

We quickly realized that Unity was a fantastic choice, and our strategy for simplicity with massive flexibility, was the correct one. Things came together quickly and easily, and we were both having a blast. Once the prototype was ready, we enrolled a bunch of people in a play test. We set up a SurveyMonkey questionnaire for our testers to fill out, rating everything we could think of and offering the chance to give us real, honest feedback. The play test went very well and the data we got back was incredibly valuable. We got some excellent insight into some of our best and worse mistakes and assumptions. Based on the feedback we got, we decided to move ahead with the full project, and spent a few weeks making adjustments to the design and laying out story and detailed design for the entire game.

We kicked off the project officially at the beginning of August. We’re coming up to 2 months in and the project is going really, really well. We’re both still excited about the project, which for a couple of cynical old gits like us, is something new. We meet for coffee and plan and design and figure out problems. We’re heads down right now, building and testing and refining our tools and systems. In a month or so, I’ll be putting a website together for the game, and I’ll be doing some sort of regular game blog update thing. If you’re a real person, and not a bot or an Eastern European or Korean spammer, I hope you’ll join us and follow along. I’ll let you know when things kick off.

Meanwhile, here’s a couple of videos from the prototype.

Batman Returns (Sega CD) 3D Driving Game Source Code

March 27, 2015 | By | Add a Comment

Hey gang!

I finally found the source code to the Batman Returns project on Sega CD.  Yay!  I know I’ve been teasing you with the dead link on the archive page for so long, and I’m sorry.  The package is now live and ready to download for you delight and amusement.

Please link to the page and not the file.  For educational purposes only.  Yadda, yadda, yadda.

Cheers and enjoy!

Born Again Indie

August 14, 2014 | By | Add a Comment

For a good year and a half now, I’ve wandered around, trying to figure out what it is I want to do and what I would like to accomplish with my Indie dreams.  First a little back story.

I left a high paid, high stress job as a director of technology at a large media company in April 2013.  The change was forced on me after my eyesight began to deteriorate rapidly, and I could no longer execute my role effectively.  I was at the top of my game, and I was kicking butt, and then it was all over within a short two week span of days.  I sat at home and thought, OK that was interesting.  Now what?

I decided to do what I do best. The one thing I truly enjoy. The one thing I’d NOT done the past 5 years. I decided to dust off the old programming skills and make some games again.  I did a quick port of an old Mahjong game I made for PC a few years back, to iOS, as a warm up.

My foray into mobile / iOS development was pretty typical.  Basically a waste of time and energy (although, as a generally positive person, I did learn a lot and I did make some pretty cool code).  To date, I’ve made around $500 from the Mahjong game. I put this failure down to a couple of things.  First and foremost, it’s just too damn difficult to get a game noticed on the app store, unless you have some serious marketing dollars, or get lucky.  I don’t think it was a quality issue.  The game was polished and played well.  And looking at what does do well on the app store, quality doesn’t seem to be a factor, always.  No, the key is exposure, plain and simple.  Getting your game ranted at by PewDePie, or one of the other sweary, game celebs on Youtube seems to be where it’s at.

Additionally, making stuff that people actually like is also pretty key.  Now that sounds a bit obvious, but if you’re wanting to tap the mass market, then you have to make mass market stuff.  Mahjong isn’t mass market, and it doesn’t have Kim Kardashian in it.  Like any sort of media, you can be an artist or a boy band, and you can make niche stuff, or crap for mass consumption.  Now, having said all that, there are always exceptions and a seemingly, unfathomable random element to all this. Sometimes a game comes along that’s so good that it just captures the imagination and actually attains a small level of success, or not.

After my experience with Mahjong, I tried a number of other tactics. I got distracted making some web sites, which was somewhat interesting, and then I decided to sell out and try to make small, playable, highly commercial, mass market games .. like a million other devs.  I spent about 2 months making a couple of cute, fun little games with kittens and hampsters, and by the end of it, I was so down about my day-to-day existence, that I couldn’t even bring myself to upload them to Apple for approval.  I still haven’t, months later.

I realized I was completely disillusioned with mobile and specifically iOS.  It’s a mugs game.  It’s heartbreaking to make something you’re invested in and see it immediately buried, or worse, sell your soul and make crap shovelware, hoping to hit the lottery.  I completely stopped developing for 2 months, and moped around doing contract work.  The break did me good, as did the money.

And then, one day, I woke up and knew what I wanted to do.  If I was going to put ANY time or ANY money into a new project, it was going to be a project that I wanted to do.  Commercial or not, it doesn’t matter.  All that matters is that I am entertained, and that I am making something that I want to make.  Now that view of things sounds a little self centered, and it is, and it’s OK.  It has come down to a simple fact.  I really, REALLY enjoy programming games, and the twisty, ill-conceived adventure I’ve spent the last year on, has sucked all that love and enjoyment out of it.  I have lost the thread, big time, and it has basically ruined the process of making games for me.

So I sat down and gave some serious thought to what I’d like to do.  Do I just throw in the towel and concentrate on contract work, or go find another full time job?  Do I take up gardening? Do I become a Naturopathic Doctor (don’t ask)? Or do I quit whinging and make something for myself?  I decided to make something for myself.

I have a list of genres and games I’d like to make.  I’ve had the list for a long time.  Over the years I’ve made a lot of commercial games, professionally, and some of them hold very fond memories, and some genres are very dear to me.  I posed myself a question.  If I could make ANYTHING, what would I make?  A platformer? A text adventure game?  A classic scrolling shoot em up?  An RPG?  Why yes! All of those, of course!  This was a revelation to me.  The notion that I could basically sit down and create anything I fancied was like someone pulling back a blindfold.  I started to get excited about programming again, and so I picked one and began.

So, here I am, four weeks into my first game as a born again indie.  I am writing the game for desktop computers only (although my code is basically cross platform, and could work on anything later on, with a bit of platform specific work), and I am excited to get to work in the mornings.  I feel like I am free of the shackles I imposed on myself the past year and a half.  I have no agenda other than to make something I like, and have fun doing it.  I’m doing some of the best coding of my long career, and every day is a blizzard of problems to solve, good and bad.  For better or worse, every day is a challenge in the best possible way.

Build and Deploy Your Marmalade App to Your Development Device.

May 21, 2013 | By | 7 Comments

NOTE:  Marmalade has been updated a few times since I wrote this guide.  They now have the HUB and stuff.  Some of the info below will still be relevant, but some probably wont be.

I’ve been playing with Marmalade, and needed to set up a bunch of iOS/Apple crap to get the whole thing working. There’s info out there on the web, but it’s scattered around. As I worked through this ridiculously complex and obtuse process, I made notes to share. Hopefully this will be useful to some poor, hapless programmer somewhere!

Build and deploy your Marmalade application to your development device.

This is for Windows. I have no idea about Mac and XCode.

Thee steps should be repeated for Ad Hoc or Distribution too.

Go to; https://developer.apple.com/
Sign in or create an account
Click first link "iOS Dev Center"
Under the menu "iOS Developer Program" (far right), click "Certificates, Identifiers & Profiles"

Certificates
------------

You'll need a .certsigningrequest file.
	Run the Marmalade "Marmalade iPhone Sign Request" Tool
		All Programs -> Marmalade -> x.x -> Tools
	You'll need your name and email you used to register as a dev with Apple
	This tool will generate 2 files;
		\x.x\tools\iPhoneSignRequest\signingrequest.csr
		\x.x\s3e\deploy\plugins\iphone\certificates\developer_identity.key

On Apple Dev Site ..

Click on "Certificates" in the top left menu.
Click on the [+] to add a new certificate

Make sure you have the Intermediate Worldwide Developer certificate installed.
	Click on the "Worldwide Developer Relations Certificate Authority" link.
	Download and "Open" the .cer file.
	Click "Install", and follow the Wizard.
		Use default settings and Click "Finish" when the cert has been added.	 

Select "iOS App Development" (or "App Store and Ad Hoc")
Click [Continue]
Read the instructions.
Click [Continue]
Click [Choose File], and find and select the "signingrequest.csr" file you just created
Click [Generate]
Read the instructions
Click [Download]
Find and open the ios_development.cer (or ios_distribution.cer) file you just generated
Install the cert, the same way you installed the "Intermediate Certificate", earlier
Copy the ios_development.cer file to your Marmalade certificates folder
	X:\_Marmalade\x.x\s3e\deploy\plugins\iphone\certificates
Rename the copied ios_development.cer to developer_identity.cer (or distribution_identity.cer)

You're done with certs!

Identifiers
-----------

Click the [+] to add new App ID
Read the instructions
Enter name of the App
Make your feature selections.  Defaults should be Game Center and In-App Purchases, enabled.
Select the App ID Prefix
Select "Explicit App ID"
Enter "Bundle ID".  Usually something like; com.companyname.appname
Click [Continue]
Click [Submit]
Click [Done]

Devices
-------

You must register the devices you want to deploy on.
Click [+] to add new device
Enter a name for your device
Enter the UDID for your device
Click [Continue]
Click [Register]

Provisioning Profile
--------------------

Download and install the "iPhone Configuration Utility", from here; http://support.apple.com/kb/dl1466

Click [+] to add new Provisioning Profile
Read the instructions
Select "iOS App Development"
Click [Continue]
Select your App ID.  The ones you created earlier should be in the drop down menu
Click [Continue]
Select your certificate.
Click [Continue]
Select all devices you want to deploy the app to
Click [Continue]
Enter a Profile Name
Click [Generate]
Click [Download]

The provisioning Profile should be copied into the data folder in your project folder

Fire up MS Dev Studio
	Set your build configurations to "GCC ARM Release", and build and RUN your project
	The Marmalade System Deployment Tool should launch
		Click "Stage: Configuration" on the right
		Click [Add ], and give your config a name
		For your new config, work you way through the menu on the right and set everything up how you want
			Enter the App Bundle ID (com.company.appname)
			Set the provisioning profile to the one you saved earlier to your data folder.
		Click [Save MKB] when you are done.
		Select App name under "Stage: Deployment"
			Select "Release" and "Package"
			Click [Run]
			An .ipa file should now exist in your deployments folder
				\project\build_project_vc11\deployments\Project Name\iphone\release			

Connect your iPad or iPhone to your PC
Find and double click the .mobileprovision file you just downloaded
This will launch the "iPhone Configuration Utility"
	Click [Add] in the top left
	For "Files of Type", select "Mobile Devices (.deviceinfo)", and navigate to your .deviceinfo file.  Click [Open]
	Click [Add] in the top left
	For "Files of Type", select "Mobile Application (.ipa)", and navigate to your .ipa file.  Click [Open]
	Select "Devices" from left menu
	Select your device on the left
	Click the "Provisioning Profiles" tab
	Select the provisioning profile and click [Install]
	Your device is now provisioned to run your app
	Click the "Applications" tab
	Select your game from the list and click [Install]
	Wait ...
	Your app should now be installed to your device