Friday, June 17, 2016

Cat Cave Update

I'm excited to say that we will be making an update to Cat Cave to address some bugs that have been reported and add some more polish items. We are also working on getting some reviewers to take a look at it. I want to extend a "thank you" in advance to Appliv who have reached out to me to offer to do a review of Cat Cave on their website. I will be posting a direct link to the review when it's live :)

Thanks again to everyone who has helped us out by testing and reporting bugs! Check back soon, our update should be available early next week!

Friday, June 10, 2016

Oculus Launch Pad

Last month I had the opportunity to attend an event at Facebook Headquarters called Oculus Launch Pad. This event was intended to promote diversity in the field of VR, and it met those intentions quite well. The program hosted 100 people for a day-long boot camp as a deep dive into developing games, apps, and film for virtual reality. I, along with 99 others who all came from diverse backgrounds and varying ages, genders, races, ethnicities, orientations, etc, spent a fantastic day learning about the technical side of putting a game on the GearVR, tips and tricks for designing "comfortable" VR content, how to keep a project on track and finish on time, and the importance of story and immersion in the VR world. The day concluded with a Q&A with Palmer Lucky and a networking mixer for all of the participants to get to know each other and learn about everyone's interests and projects.

On the technical side, it was great to have an opportunity to go through the process of getting an application from Unity onto the GearVR. I'm outlining the process here for anyone else who may be interested in making something for GearVR:

1. Get the latest version of Unity, and during the initial download be sure to check the box for "Android" from the list of development platforms (if you already downloaded Unity and don't have the Android package you will need to go back to the Unity downloader to get it).

2. Visit the Oculus developer website and download the Oculus SDK and Oculus Unity Utilities, and import the Oculus Unity Utilities package to your Unity project

3. Download and install the Android SDK. It will launch a download manager where you can select different versions. you can download as many versions as you like, but you will at least need API level 19. When you select download, you will need to agree to the terms and whatnot, but it is not super clear from the prompt you need to select "agree" for each of the download items in your selected list, so if you have two items selected you will need to scroll to the bottom to "agree" for the second one.

4. Create an OSIG for your device. This one is a little complicated, here are the details

  • Put your Android Galaxy device into debug mode (go to settings > device and tap the build number a bunch of times)
  • On your Android device go to Developer Settings and check the box for "USB Debugging" then plug it in to your computer
  • Open Command Prompt (or Terminal on a Mac)
  • d. Navigate to the Android SDK Tools folder (use 'cd' to change directories, 'cd ..' takes you up a directory, 'cd Directory_Name' takes you down into specified directory)
  • Use the command 'adb devices' and it will give you a list of IDs for connected devices (you will probably only have one) - if you have trouble with this step you may need to update the drivers on your computer
  • Copy your device ID, then go to developer.oculus.com/osig and enter the ID
  • Download the osig file generated by the Oculus website and copy it into the following directory inside your Unity project - Assets/pluggins/Android/assets
  •  Note that you will need a separate OSIG file for each device you want to test on; you can have as many OSIG files in the assets directory as needed

5. In Unity go to File > Build Settings. Be sure to add the scene you want to build to the list of scenes.

6. Select 'Android' from the list of platforms, then click "Player Settings" at the bottom. You can also hit "Build" right now to check if your SDK is setup properly, it will let you know if it cannot find the Android SDK (it may also prompt you to download the latest JDK which are also needed to run the Android SDK).

7. In the player settings panel which should have opened on the right side of the screen, scroll down to other settings and check the box "Enable VR", then scroll down to "Other Settings" and fill in the bundle identifier (you can use whatever company and product name you want but you need the company and product name at the top to match).

8. Sign your application - under "Publish Settings" check the box for "create new keystore" then click browse and name your keystore file, then give it a password (be sure to remember this password). Then set an alias and password for this keystore (it can be the same password or a different one).

9. Be sure your Android device is still plugged in and the screen is on, then hit "Build and Run" and the game will automatically deploy to the phone.

10. Unplug the phone from the computer. It should prompt you to put it in the GearVR, but if it does not then find your newly made build (it probably has the Unity logo right now) and run it, then when it prompts you put it in the GearVR.

I hope this is helpful to anyone trying to get started in GearVR development.  Feel free to respond with questions if you have any trouble with these steps :)

Tuesday, May 3, 2016

The Making of Cat Cave

Cat Cave was my second self-published title, but it was actually a lot of first for me. It was my first endless runner. It was my first 2D game. It was the first time I formed a team to work on one of my ideas (I found an artist, a sound designer, and a second programmer). It was the first time I attempted a port to iOS. And the second release of Cat Cave was the first time I took promotion really seriously.

I've learned a lot from the games I have released so far, but I think the most valuable thing I have learned is you can never do too much work when it's something you care about. As a single cat mamma, I have no human children, and no husband (or wife) to take care of, so my games are really like my children - I look forward to leaving work in the evenings so I can go home and spend time with them. And I feel guilty any time I have a spare moment that I choose not to spend with them.

To some this may seem like an unhealthy obsession, but for me the things I make are the strongest justification for my existence.

In total, I estimate that I invested around 120 hours into the development of Cat Cave. I wish I had kept more thorough track, but I believe the breakdown went something like this:
  • First Release
    • Development - 30 hours
    • Project Management - 10 hours
    • Promotion - 10 hours
  • Second Release (Major Update)
    • iOS Port - 15 hours
    • Development - 15 hours
    • Project Management (including running beta test) - 10 hours
    • Promotion - 30 hours
Another valuable lesson I learned is the importance of building hype. Don't release your game the day it is finished. And don't wait until it is finished to start talking about it. Talk about it all the time while you are making it. Pick a tentative release date far in the future. When you finish your game, get everything confirmed, and get it approved by all of the powers that be, THEN confirm your release date at least several days in advance. Then you must WAIT. Don't do anything to break the game. Don't do anything to put it in jeopardy on whatever platform you publish to. Don't let your anxious fans convince you to release it early. Just wait. And keep talking about it.

Speaking of which, here are the download links for Cat Cave, which is now available on Google Play and iTunes!

iOS: https://itunes.apple.com/us/app/cat-cave/id1104696928?ls=1&mt=8
Android: https://play.google.com/store/apps/details?id=com.Astire.CatCave
PC: https://moarkitties.itch.io/cat-cave




Thanks for playing!


Tuesday, April 26, 2016

Marketing vs Promoting

In my opinion, the biggest difference between an indie developer and a large game company is the marketing budget. Most indie developers cannot afford to distribute ads the way Blizzard or Riot can. So how do indies get the word out?

While talking to a fellow developer recently, I asked him how he promoted his game and he said "I didn't. We didn't run any ads or anything." This was an interesting break in communication for me, because in my mind if you don't promote your game at all you get 0 downloads...to me, promoting a game doesn't just mean running ads, it means all of the little things you do to make your game known to the world. Every Facebook or Twitter post, every friend you tell, every developer forum you post in for help or advice, and ESPECIALLY everyone you ask to beta test your game - all of those things are how you promote a game without penny in your marketing budget.

So what can you do to maximize your promotion without investing in marketing? That seems to be the big question these days. I can't go more than a few days without seeing a Twitter post about "HERE IS THE KEY YOU NEED SO YOU CAN DO SELF PROMOTION RIGHT" followed by a link to buy some book or online course. Well I'm here to tell you there is no "key" to self promotion.

I heard someone say recently that the reason big AAA games are sometimes "canned" right at the end of 3 years of a development cycle is because the cost of marketing is equal to or greater than the cost of development. That's pretty crazy. So if you are making a game by yourself, your development has no cost except the time you are investing in it, and you obviously don't have a AAA budget for marketing, what is there to do? If we compare to the AAA model where the marketing budget is equal to the development budget, it makes sense then that the correlation for indie dev is a time investment. You invest an equal amount of time in promotion that you invest in development. That may seem like a staggering amount of time, but think of all the things you can do with that time.

Some self-promotion strategies:

  • Start a dev log describing your development process, challenges you overcome, advice for new-comers
  • Start a dev stream where you record your development sessions to share with the world
  • Become active on Social Media - leverage Twitter and Facebook to get a following of people interested in your ideas and your progress, a support system that is prepared to give you feedback and cheer on your success
  • Connect with streamers and reviewers and try to find some that may be interested in reviewing your game
  • Become active on a relevant subreddit (in the reddit community, self-promotion is frowned upon unless you are an active contributor who is genuinely interested in the conversation)
  • Run a beta test - there is probably no better way to get people interested in your game before release than to ask them to play it before it is available

Sunday, April 17, 2016

DevLog: Porting to iOS

So far my experience with porting to iOS has been more frustrating than expected. I had heard from other developers that Unity Cloud Build eliminates the need for a Mac during iOS development in Unity, but sadly that is not true.

Here is what I have done and learned so far (and my information may not be complete yet).

Step 1: Apple Developer Account. It costs $100/year and is required to do basically any sort of iOS development.

Step 2: Cert and Keychain...This was the first step where I needed a Mac. Once you have an Apple Developer Account, you will need a Certification. To get that you send a Certificate Signing Request (csr) from a Mac, and receive a file back. You can do either a Development Certificate or a Distribution Certificate (this whole step was very confusing, and I don't actually know how I did it but I must've done it right because things worked). Next you need a Keychain. Again this step made no sense to me, but the Apple Developer Portal gave me a file, I ran it on  Mac and it turned into a different kind of file (3 files in fact), I then selected 2 of those files and exported them to a .p12 file. All of this made no sense to me, but seemed to work.

Step 3: Build the thing. If you have a Mac that can do things, you can probably just make your Unity iOS build and do xCode things to it. I went the route of Unity Cloud Build (I cannot use my Mac for development as it is 8 years old and doesn't run most software, including xCode). Unity Cloud Build will require the .p12 from the previous step as well as a .mobileprovision file which you get during the Certification process. That's why this is step 3 (I totally tried to do this as step 2, but failed miserably).

Step 4: TestFlight. It's possible that if I had made a Development Certificate I could have somehow manually put my builds onto an iPhone, but since I knew I would be distributing this app I just made a Distribution Certificate (it was also not clear in the instructions why I would choose one over the other). If you make a Distribution Certificate you will need to deploy your app via TestFlight. This is where things got tricky. Unity Cloud Build gave me a .ipa file, but .ipa files cannot be simply uploaded through the Apple Developer page, so I needed either xCode or Application Loader to put up my .ipa (there seems to be no way around this). As mentioned, my very old Mac will not run most programs, so when I got to this step I had to go find a friend with a decent Mac to upload my .ipa to TestFlight. Once on TestFlight it seems fairly easy to distribute to internal and external testers, but it seems this upload step will be necessary every time I want to test a new build (unless I go back and make a Development Certificate and figure out how to manually install .ipa files).

The challenge of these steps was compounded by the face that I don't actually own any iOS device.

Friday, April 15, 2016

Tips and Tricks for Posting Links to Your Site on Social Media

Ever wonder how you can choose which image shows up in the thumbnail for Facebook, Reddit, and Twitter? If you are posting a link your your own website, it is up to you how the thumbnail appears, but it takes a bit of work to really get it going.

First, sites like Facebook and Reddit use a thing called Open Graph protocol to search through your html to grab the info that will post as a thumbnail. To enable Open Graph protocol on your website, swap out your <html> tag for <html prefix="og: http://ogp.me/ns#">. Next, use Meta tags to set the specific information you want to use. For Facebook and Reddit, the most important of these is the image.

These are the meta tags you will most likely need:
<meta property="og:title" content="YourTitle" />
<meta property="og:type" content="website" />
<meta property="og:url" content="http://YourWebsiteURL" />
<meta property="og:image" content="http://YourImageURL" />
<meta property="og:image:width" content="YourImageWidth" />
<meta property="og:image:height" content="YourImageHeight" />
<meta property="og:image:type" content="image/jpeg" />

Anything that starts with "Your..." should be filled in by you :)  There seems to be a minimum size on the image, which I found out through trial and error but could not find documentation on (it worked for me once I got above 500x300). These meta tags go BETWEEN your <head> tags.

Once you have filled those in and uploaded your site, you can test using this debugging tool (so you don't have to keep making actual Facebook posts to test)  -  https://developers.facebook.com/tools/debug/

Since Reddit and Facebook use the same protocol, testing it for Facebook should mean it will also work for Reddit.

Now for Twitter...you will need another set of meta tags (Twitter does not use the Open Graph protocol to grab info, Twitter has their own custom "cards"). Here are the Twitter meta tags for Google Play (the ones for iOS are similar):

<meta name="twitter:card" content="app">
<meta name="twitter:site" content="@YourTwitterHandle">
<meta name="twitter:description" content="Your Description.">
<meta name="twitter:app:country" content="US">
<meta name="twitter:app:name:googleplay" content="Your App Title">
<meta name="twitter:app:id:googleplay" content="com.YourCompanyName.YourAppName">
<meta name="twitter:app:url:googleplay" content="http://YourAppURLOnePlayStore">

So when I was all done filling this in for Slapdash Bones, here's what I had:

<html prefix="og: http://ogp.me/ns#">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="sbd.css" type="text/css" media="screen" />
    <meta charset="utf-8" />
    <title>Slapdash Bones</title>
<meta property="og:title" content="Slapdash Bones" />
<meta property="og:type" content="website" />
<meta property="og:url" content="http://astiregames.com/sbd.html" />
<meta property="og:image" content="http://astiregames.com/slapdash/SlapdashBones770x600.jpg" />
<meta property="og:image:width" content="770" />
<meta property="og:image:height" content="600" />
<meta property="og:image:type" content="image/jpeg" />
<meta name="twitter:card" content="app">
<meta name="twitter:site" content="@moarKitties">
<meta name="twitter:description" content="Slapdash Bones is a multiplayer dice game for 2-4 players on one phone or tablet.">
<meta name="twitter:app:country" content="US">
<meta name="twitter:app:name:googleplay" content="Slapdash Bones">
<meta name="twitter:app:id:googleplay" content="com.Astire.Slapdash_Bones">
<meta name="twitter:app:url:googleplay" content="https://play.google.com/store/apps/details?id=com.Astire.Slapdash_Bones">
</head>

And this is what it looks like on Twitter - https://twitter.com/moarKitties/status/721138863838638080
And on Facebook - https://goo.gl/iNaoOE

A Game a Month

I made a new years resolution this year to develop release one game per month for the entire 2016. This resolution came about because for far too long I've felt that I am skilled and capable in game development, yet I have nothing tangible to show for it. I want to be a successful developer, yet I have nothing that proves I deserve success. So 2016 is meant to be the year that changes. 

I work full-time in AAA, and I teach as an Adjunct faculty two nights a week, but I still have around 20 productive hours throughout the week available to use, and I have been pouring those hours into side projects. So far this year I have developed and released 4 games, with another well on the way. 


What have I learned from this process up to this point? For one, promoting a game without a marketing budget is very VERY difficult, though not impossible. Second, a month is actually a pretty long time to make a game, but not long enough to polish a game...I feel like I could easily make 2-3 functioning games each month, but I am attempting to polish the games I release, so I get a game working and then I try to start polishing, and then I get to my release date and I have to forgo the rest of the polish in order to continue to meet my milestones. The third thing I'm learning is very obvious, but I had not previously ever published/released a game on my own, so I am learning a lot about publishing to different platforms. Publishing to Android turned out to be easier than expected, as did publishing for web, but publishing to iOS is shaping up to be quite a challenge. I'm also hoping to start making releases for PC, but maintaining all of these projects cross-platform is a lot of work!


Anyway, here are the games I've released in 2016! I hope you like them, and please share :)

January - Slapdash Bones: A multiplayer dice game, players take turns rolling dice on one phone/tablet.
Available on Google Play - https://goo.gl/O3UBvK

February - Cat Cave: An endless runner, keep the cat safe as she runs through a treacherous cave! Leader-board allows you to compete with friends.
Available on Google Play - https://goo.gl/ubhKBi

March - Color Bounce: A physics/color puzzle. I made and released this in 12 hours start to finish (from the moment I decided "I'm gonna make this!" until the moment I released it, there is no tutorial but I bet you can figure it out).
Available on Google Play: https://goo.gl/Q2AwUp and web: http://goo.gl/tTSpkw (does not work on Chrome)

Bonus - Ice Breakout: a breakout clone with some snazzy juice. I'm actually a little bit ahead of my goal right now because I decided to follow a tutorial on making HTML5 games, and ended up making this available online: http://goo.gl/Q6g2pL

April's game will be for Google Cardboard, and I hope to have ported the others to iOS and PC in the next few weeks. Thanks for playing!