Category Archives: Game Development

Fragments: Design for Mixed Reality

Anyone who knows me knows how extremely excited I was for the HoloLens, the Mixed Reality device being developed by Microsoft. When I saw the live demonstrations of the device, I knew I had to have it.

All that being said, as excited as I was about the HoloLens, I was excited about it for reasons beyond my usual. HoloLens has  tremendous potential in the fields of science, medicine, construction, education, and engineering. I was not really sure how it would fare as a gaming device, however. It seemed likely that casual games could find a home there, but could a device that overlays holograms onto the real world be home to a deep narrative experience?

Well, now I’ve played the game Fragments on HoloLens, and I am convinced.

Continue reading

Helping with Your Game Dev Homework

Hi Blog!

Recently, a student (I’ll leave out details) emailed me these questions about the process of game development and how to get started. I haven’t posted since MAGfest, so I decided to answer them here too. That way anyone who is interested in answers to some basic questions can see them. I think beginners to game dev make a few assumptions that there are hard and fast answers when there often are not, especially since there are so many routes to game development. Everyone is going to give you slightly different advice, so here is mine.

I was asked:

Continue reading

Philly “Move Your Body” Game Jam

The game jam at Philly Dev Night this month was a huge success! I was really happy to be able to sponsor such a cool event and participate in playing all the games!

The secret theme that we announced at the event July 2 was “Move your body.” This year I’ve gotten really interested in gamifying ways to get fit, between Xbox Fitness and Fitbit… and I was wondering what other great movement-based game ideas that people would have. Microsoft sponsored by catering the game showcase on July 16. Here’s a look at some of the games!

WP_20150716_006

The crowd favorite game (by popular vote) was Headbanger. Headbanger consisted of an iPhone attached to a long-haired rock ‘n’ roll wig. Music played (through hooked up speakers, so the crowd could also hear) and the headbanger player had to bang his/her head in time with the music. Pictures were hard to take because the headbanging was so fast and furious!

Up close: a scrambled brain

Up close: a scrambled brain

Dancing Master used up to four Xbox 360 controllers to control feet on the screen and step in time with music. The twist is literally twisting…. The controls for the game involve using one stick and set of shoulder buttons, on each side of the controller, for each foot. It was surprisingly difficult to get things to line up! But it had a great selection of music and was fun to watch.

A few games were on the iPad – one rolling ball demo involved holding the iPad still to avoid the ball onscreen rolling off. Drumandala was developed as an iPad or PC game, but worked better on the touch screen, using fingers to tap shapes in a shooter-like, but zen, atmosphere.

One jammer took the theme “Move your body” literally, and made an adventure/stealth game about how to most effectively hide a corpse. This was improved by the addition of sloppy awkward ragdoll physics on the corpse… oh, and Will Stallwood’s photograph attached to the head for an ounce of realism.

WP_20150716_030

A couple of non-digital games were also displayed. Jake O’Brien called his game entry  Sight is Over Rated. Two teams worked together, with one blindfolded member and one member telling the blindfolded teammate how to move. The object of the game was for the blindfolded team mate to pick up cards from the table while avoiding an obstacle course of cups.

Safari Sock Hop was another purely analog game, involving pantomime to music. Cards handed out to two two-person teams told them what animal to mimic, and what type of dance they should do while pretending to be that animal. Here’s a tap-dancing octopus, for example:

20150716_205235

My personal favorite game of the jam was Cipher Prime’s game, which was just called Bodies. This game encouraged all the players to get up and walk around the city, several blocks around the building. Their smartphones would give them a “hot and cold” interface when they were close to a point of interest, and then when they were close enough, a riddle appeared onscreen. If they took a photograph that matched the answer for the riddle, they got a point. Cipher Prime wants to eventually expand this game to allow people to create customized geotagged scavenger hunts for each other.

20150716_215407

I was really proud to take part in this jam. The games were great and there was a ton of energy! Thanks to Philly Dev Night for a great time! For the curious, Dev Night does game jams monthly! Just check the schedule at http://phillydevnight.com.

 

MomJam – The Voxelles Mother’s Day Game Jam

I’ve remarked quite a bit in the past about “Dad Games:” the gamification of fatherhood that seemed to be a recent fad in AAA game design. But the inevitable question arises: where are all the Mom Games?

When I say “games about moms,” many people mention “well, there’s that one with the badgers” (Shelter). Cart Life has an honest exploration of human motherhood. Moms do show up in blockbuster games, but often as antagonists. Now Sonya Blade can perform a fatality on her own daughter, which… has some psychological ramifications I’m sure. But surely games about motherhood is a topic that needs more exploration.

This month the Voxelles, Chicago’s female game development group, had a Mother’s Day Game Jam about this very topic! And I was there! Continue reading

Learn Some New (or older) Game Technology!

Having just got back from GDC, I saw a little bit of That Reddit Post that’s going around. If you haven’t seen it yet, don’t worry about it, though I for one support colorful hair and hugging (As I said in so many words on Twitter – Hug a Dev – Ask First). Specifically, though, I want to address just part of the post that I found interesting, which was about the game technologies on display at GDC.

WP_20150305_17_50_02_Pro-sm

First of all, I noticed that this poster praised Torque, which I found odd. A few jobs ago it was the engine I was using, and everyone that I said that to expressed their sympathies. Nothing against the people working on that middleware, but it had a really difficult asset pipeline, especially for teaching to students. And it lacked flexibility; things that seemed like they should be easy, like moving platforms for a platforming game required hacking the base sourcecode. I still think we learned valuable skills working in Torque. But when I saw how simple the same tasks were comparatively in Unity, I was really happy to switch. Maybe that makes it easier for just anybody to make moving platforms, but there’s no point in emphasizing a higher barrier to entry for the same exact resulting game mechanic. (Please note that is is all just my personal tech opinions, but it’s something that I worked with for several years.)

At GDC I was part of the Quick Start Challenges for Microsoft’s booth, right on the expo floor, and people were allowed to check out whatever challenge they thought was most interesting. The premise: code up a coding challenge and enter a raffle to win great MS prizes. From my observations (and our post-event surveys) people were most interested in checking out our Unity challenge above all. Maybe it was because they were already familiar with the engine and thought it seemed easy. Or maybe it was because of the really amazing graphics in our sample game, Zombie Pumpkin Slayer (Source code and assets available on GitHub thanks to the amazing Adam Tuliper).

GDC booth Windows 10-sm

But there were some other challenges in the QSCs equally worth checking out. For one, we showcased the Xbox Live SDK for Windows 10, which will allow developers to use XBox Live Leaderboards, Friends Lists, etc, in their Windows 10 games. I’m really excited about this because it’s a feature people have been asking for, and that I’ve personally wanted too.

We also had a Cocos2d-x Challenge!  I don’t know if this is a surprise to the Reddit poster who seemed to imply it wasn’t around anymore, but Cocos2d is a platform MS is committing support to, and if you want to learn it, we’re here to help. I helped out with the live event for the Cocos2d-x tutorial on Microsoft Virtual Academy, which is lead by Eric Mittelete and Sanjeev Dwivedi. If you want to check out the challenge that people were able to do on the floor at GDC, it’s available on MVA as well.

Microsoft is posting a lot of free game development tutorials on Virtual Academy to get beginners started. There’s resources for WebGL, C++/Direct X, and MonoGame, as well as the “easier” middlewares like Construct 2, GameMaker, and of course Unity.

And here’s some other MVA’s Microsoft is encouraging people to check out right now:

C# Fundamentals for Absolute Beginners (Very valuable to me as I started my C# journey in Unity 3D)

Microsoft Azure Fundamentals (If you want to learn about Cloud and how that can fit into your pipeline)

Developing Universal Windows Apps with C# and XAML (The Universal App Platform is what Windows is moving toward in in the future – no separate codebase for your  PC and Phone versions!)

WP_20150305_17_38_06_Pro-sm

So… maybe you want to dive right into writing code. Or maybe you find that intimidating, and something more graphical is more your speed. Whatever it is, I’m happy to help point you in the right direction. Good luck to all the beginners, and experienced coders, and riffraff out there.

Sun Run: HUD Stuff

My game more or less works now. I added an additional enemy type, a “hill” that the player can crash into. I also added a quick HUD that shows a score which increments as the game progresses. None of the things I’m showing right now look nice. The hill is just placeholdered with the “capsule” in Unity and looks pretty weird, like an old Mario World hill in silhouette. The HUD is just black text. And my startup and end screen that I’m about to show are even worse… but the time for makepretties will be later; now I just want to get things working.

The code I wrote just does a “break” when the player dies. This obviously won’t work, so I need to add some additional scenes to my project.

I have two additional scenes: Splash, and GameOver. Splash will be the scene the player sees when the game first loads up. GameOver is after the player dies.

To make sure my game sees these scenes, I have to to go File-> Build Settings, and add each new scene to the build with the Add Current button. I should see a list of three scenes.

sunhudstuff3

Notice I am working in Windows Phone mode right now. So here’s this very ugly loading screen…

sunhudstuff2

Ha ha, I’m sorry, I still don’t even have a proper title for the game. But this is just a single sprite, so later, when I have a very pretty loading screen, all I will do is replace this placeholder with my pretty screen and we’ll be good to go! A small script advances the scene. I add this script to the sprite and set “scene” to be SunScene (the primary scene for the game). Then when the screen is clicked, the scene loads and the game starts. The updated script to kill the player uses Application.LoadLevel to load up the game over screen, and the game over screen also uses a click to return to the home screen.

Stuff to do:  make prettier splash screens, make a prettier score HUD and keep track of the player’s score, maybe with leaderboards? Playtest and work on feel and hitboxes, then add some Windows Phone features and publish. When HUD and score tracking are complete I’ll upload a couple web builds. Maybe you can test for me?

Sun Run: Physics

This part of the Sun Run project is the part that has taken me like, forever. Hopefully in this post I will be able to condense what took a lot of trial and error for me into some quick useful help for you.

What I would like in this game is the feeling that the player drives the horses, but needs to protect the chariot. Basically, ropy physics to make the avatar feel snake-like, so the control over the chariot is slightly indirect. Here’s the little most primitive diagram of what I’m talking about:

sunrunhorsesclose-dia

I started out with keyboard controls, but then added some mouse controls as well, so the player can use either tapping the top and bottom of the screen to move the chariot up and down, or use the arrow keys on the keyboard to move it up and down. I decided to try uploading the codes (it’s just the code for now, not the assets) to my very quiet GitHub, so if you want to follow along you can check them out there. I’ll update the commit periodically. Here’s the current version of the runner script. I’ll end up updating the code later to be sure it has proper touch control listening too. But what’s key here is that I put the code module on the front horse, and not on the chariot itself.

To make a chain in Unity you can use Unity’s 2D physics Hinge Joint. Each horse has a RigidBody2D and a HingeJoint2D, and they’re connected in a line, then parented to each other to allow the chariot to drag behind each horse. These are the settings currently on, which will probably be tweaked later (but this is already a result of a lot of tweaking…)

rigidbodyshot

RunHorse1 (the front horse) is connected to RunHorse2, and so on, all the way to the chariot itself in the back. With four horses connected this way to a final chariot sprite, the control feels pretty tight, with just a little bit of slack behind. The -.75 on the chain anchor means that the horse connects to the horse behind it with a little slack instead of directly. The setting between the last horse and the chariot is at -1. I experimented with angle limits, but I didn’t like the result, so they are off for now. Notice there’s no gravity on my front horse and very little mass. If I use gravity, the horse will just fall, so away it goes! The light mass also means it’s very easy to control. Each horse has the smallest possible mass and the chariot itself is set to 0.003. Right now I’m keeping everything very light so the control feels tight, but if I want to make things harder to control, increasing the chariot’s mass makes it drag the whole chain down and is one way of doing it.

I’ve done a little playtesting with these controls and they feel “okay,” but maybe a little easier than I’d like for things to be. Some early feedback I got was that the primitive chariot sprite has a pretty unclear hit box. I’m actually using a particle system to make the chariot burst into flames… it’s so pretty, but I fear it hurts the clarity of the game, so it may have to go. Also, I’ll need a better chariot sprite and to make sure the enemy hit boxes are clear as well. Work for next time…

Sun Run: Adding Some Runner Mechanics

I hope everyone had a good weekend! It was a holiday here, which is why I slowed down development (to work on a different project actually, but also see The Edge of Tomorrow and play Shovel Knight, both recommended) but now I’m back!

Let me talk about how I went from having some sprites to having a bit of a game…

First of all, I want to give credit to the resources that have helped me with this project. One resource that has helped me out a lot is Jesse Freeman’s Unity training, and his book, which gave me some useful code for creating enemy spawns in the game. I won’t replicate that code here, but with some info in his book, I was able to create three different spawn points to spawn enemies on the board, which will fly toward the player. The first enemy sprite is a bird drawn with basically the same method as the horse sprite. You can see the graphical representation of these spawns in this working shot here, on the right:

unity-showingspawns

After a lot of trial and error, I decided not to have the player actually move from the spot. I looked at some endless runner code that actually moved the player, but it seemed to make more sense to actually keep the player stationary and give the illusion of movement instead. Enemies spawning from offscreen to the right was one way to do it, but what about the background? I saw my co-worker Dave Voyles had a great solution for that in his schmup games:

unity-showingiso

If I zoom out of my scene and switch to 3D Isometric view, you can see what’s really going on. There’s a cylinder in the background that shows a texture that’s set to perfectly wrap. The sprites are in the foreground. The code to make the cylinder rotate on its own is really simple…

public class BGRotate : MonoBehaviour {

public float BGRotSpeed = 10f;

void FixedUpdate()
{
// rotate this
transform.Rotate (Vector3.up, BGRotSpeed * Time.deltaTime);
}
}

The transform.Rotate tells it what direction and speed to rotate. I can change the speed of the motion in Unity later, though what I’ll probably do is write a bit more script to speeds things up slowly over time (which would also have to affect the enemy spawns).

The black bars at the top, bottom, and back of the scene are destroyers. They’re used to kill the player if they crash into the ground, and destroy any birds that happen to get past the player, cleaning up the scene. This may not be the most efficient solution for cleanup, but it’s working for me for now. The code for how to get the destroyers set up is in Unity’s Live Training archive under “Let’s Make a Game: Infinite Runner.” I’m linking the whole archive because it’s some of the most useful free resources for learning specific Unity tasks that I can find. It starts out gentle for beginners and has lots of specific code examples for different problems you might encounter!

Next blog I’ll talk about the chariot motion using 2d physics, which was/still is the biggest trial and error point in the game. Want to get that feel just right…

Sun Run: Sprite Strategy

For most of these dev blogs, I’ll assume some basic Unity familiarity, like someone who has attended one of my Unity Getting Started talks. But I’ll explain some specific stuff about my progress. If it’s a little too basic, or if I go too fast, let me know by giving me feedback in comments or on Twitter. (Don’t be alarmed if your comment doesn’t appear right away; I moderate.)

Making a game requires design, playtesting, and lots of stuff people are confident they’d be ok at doing. But making a game also requires three things that are intimidating in various degrees: Art, Code, and Sound.

Sound is my weakest link, so I always have to Phone a Friend where it comes to that, and I’m sure this game will be no exception. But for now I’ll talk about Art and Code…

The Unity Asset Store is a good way to get both of those things, if you want to go looking. There’s lots of useful developer tools, plugins, and art there.  I just downloaded Unity-chan for kicks. But… I don’t actually like to use too many pre-built assets in my games because I like to have more control over the art and I don’t like my games to look too stock. So, custom art all the way.

My Unity project is actually set to 3D. You can organize your project folders however you want, but after some trial and error on this project, I find it easier just to group like things in like folders like this:

unityprojectfolder

Sorry it’s small – click to embiggen. Other people like to group things by what they are, so I might put everything to do with the horse in one folder and everything to do with the bird in another. Shown here is my sprites folder. Normally when your Unity project is set to 2D, any texture you import will automatically become a sprite. But my project is actually still set to 3D, so all I have to do when I import something if I want it to be a sprite is change it to a sprite in the inspector:

unitytexturetosprite

Robot Unicorn Attack is probably my favorite endless runner. Of course the importance of the catchy theme song and the design can’t be overlooked, but I think one reason it works so well is the graphics. There’s something about a running horse that’s super graceful. It totally delights 12-year-old-me, still living in my brain clutching her Lisa Frank Trapper Keeper. Fortunately, a childhood full of drawing racing ponies in the margins of my notebook during study hall left me well-prepared to sketch out this sprite:

horserunning8frame-reference2

The background of this is actually transparent – I just dumped black in there to make it more visible on the blog. I also shrunk it down some for the post but you get the idea. Now that I look at it like this, the bottom-left frame is still feeling awkward to me, so I’ll probably fix it, and there’s a liiiittle bit of a ‘shake’ where something isn’t lined up right. But after importing a sprite into Unity, if you change it in the folder in the project, it will update in the game, so I’m not really stuck with it.

This sprite looks really intimidating to draw. Actually it’s pretty easy, though, and if you’re just getting started with frame to frame animations, it’s hard to go wrong with the run cycle on a horse. That’s because a) a horse run is pretty uniform, so you don’t have to worry too much about giving it individual character like you would with a human run cycle, and b) there’s so much useful reference available of this cycle. I really like the famous Muybridge photo series, which you can easily find with a web search, but any web search for “running horse reference” gets pretty good result pictures.

eadweard-muybridge-horse

My sprites aren’t identical to this sequence but sketching it out is pretty easy. I used the pen tool in Photoshop, and simply copied the key frames of a horse run, tweaking them slightly and trying to get the horse shape to match previous frames. I used different reference photos for the tail, which I then adjusted to move up and down with the body. It’s not a hundred percent realistic, but since my horse is flying, I never moved the body at all.  I just drew the head and body on a separate layer and only redrew the legs and tail in every frame. That way the size of the body is consistent and it’s easy for a player’s eye to track. I also choose Photoshop because it’s where I’m most comfortable, but if you like free tools there’s InkScape (which is like Illustrator) or GIMP.

Drawing with the pen tool means I can set my sprite to be any size, but I’m using 1024 sprites for now and I’ll play with the resolution later. (If in doubt I find it best to start with a really high rez and then optimize down, unless I’m going for a pixel art look.) So my sprites are actually pretty huge. I also have to set the sprite tool to Multiple with a sheet like this, and then click on the Sprite Editor button to slice it up into individual sprites.

unitytexturetosprite-2

Here’s what all those sprites look like after using the Sprite Editor to break them down:

unitytexturetosprite-3

They have numbers on them, since they’re set up as frames, so if I select all the sprites (not just one) and drag them into the stage, Unity will create a new animation. I wanted to make an animated gif of it, but it would take longer to do that than it does to make the animation in Unity, so I’ll post some videos later of the whole thing in action. That’s all for now. Good luck if you want to draw cute horses!

 

On XBox One Self Publishing

While I was at IndieCade East (read my Tap-Repeatedly article here!) I saw a talk about self-publishing for Indie games on the PlayStation 4.

What a lot of indie developers that I talked to didn’t realize is that self publishing on XBox One is also a thing. If you’re interested in being on the One, you can sign up for ID@Xbox and just let them know.

Easy questions answered:

Unity Support? Yes
Huge fee to join the program? No, free
Huge patching fees? No, no patching fees
Achievements? Kinect? Yes – and I’m pretty excited to see what indies will do with the new Kinect. It seems like it’s the hackers and crackers that did the coolest stuff with even the old device.

I hope you found this informative if you have interest in XBox! It feels like a lot of people still didn’t know about this program.