Girls can TOO be super heroes!

A few months ago, I was watching Disney’s movie Sky High with my niece and nephew. In the movie, kids from super hero families go to Sky High, a high school for super heroes. When the main character’s mother came on screen, my niece exclaimed in an incredulous voice:

“What!? Girls can’t be superheroes!”

I was caught completely off-guard. “Sure they can!” I responded. “What about the Powerpuff Girls?”

The Powerpuff Girls

Not only are they adorable, they are totally bad-ass

She stared at me for a moment. No, Uncle Zach, girls can’t be super heroes.”

This moment has stuck with me. It has downright bothered me. My little brother has run around the house pretending he’s Spider-Man, fighting invisible villains taking over our living room. My niece not only wouldn’t do that, she couldn’t even conceptualize the idea of a girl being a super hero in the first place.

Whenever I hear about gender-related issues in games, movies, or other media, I think of this one moment. Whenever someone says, “Come on, it’s not really a problem,” or, “I’m a female and I don’t have trouble with relating to male characters,” I can’t help but think of my niece. To the most adorable little girl I know, girls can’t be bad-ass heroes that save the world. Only boys do that.

I’m making it my personal goal to fix this problem. One cannot change things overnight, but that doesn’t mean we shouldn’t try. I want to make a video game for kids, one where someone like my niece can actually be that awesome hero who saves the day. I plan to post updates here on my progress. If you have any suggestions, ideas, or feedback, or if you are interested in helping out, I would love to hear from you!

Forming a Business: A Short Primer

Let's get down to business

Li Shang from Mulan. Only tangentially relevant.

Disclaimer: I am not a lawyer. This post is merely the findings of my personal research online, and may have inaccuracies. If you need legal advice, you should consult a lawyer or attorney.

I’ve been doing a fair bit of research lately on what goes into forming a business and what the different business types are. Unfortunately, details vary from state to state in the USA, so you’ll have to look into details yourself no matter what. If you’re outside of the USA, it’s possible none of this will be relevant to you.

Do your research. The goal of this post is to help you make sense of things in a sea of legalese and governmental websites. It is not meant to be your only source of information.

With that out of the way, here’s a quick, plain English business primer for anyone looking to form a start-up or do contract work!

Read more of this post

Licenses page added to my site!

I’ve finally gotten around to creating a page that details licenses for source code posted on my site. Check the Licenses page for details!

This is something I really should have gotten around to earlier. If you run a site with code posted, it’s also something you should do. Unless you have a license available for your code somewhere, others cannot use it in their own projects. For example, even if you write a super-helpful blog post about how to solve a programming problem, or offer useful code snippets in your posts, others cannot legally use them.

I opted for the MIT License because it’s super open. I’m in the process of adding a text file with the license to applicable files on my site, but in the meantime, feel free to contact me if there is any confusion. If you’re not sure where to start on picking a license for your code, consider this list of Open Source Licenses.

Also, as a disclaimer: I am not a lawyer. If you need legal advice, you should consider consulting a lawyer or attorney.

Moving On From College

I’ve officially graduated from RIT! So, what’s next?

I’ve spent a lot of time weighing my different options for post-graduation plans. As I’m surely not the only one who’s had issues figuring out what to do after college, I’ll break down the different options I considered on the off-chance it’ll help someone else.

Full-time Work

Fairly obvious pros/cons. Stable pay, consistent hours, etc.

Grad School

The first option other I seriously considered was getting a master’s degree, for the following reasons:

  • You’re only in school once, so why not take advantage of it while you can?
  • It would give two years of working on cool projects and research
  • It would allow staying closer to family for a bit (I went to college around an hour’s drive away from home)

As my primary incentives were just working on interesting projects and staying with friends, the structure of a graduate program wasn’t really necessary. If I were looking to work in academia or had some other explicit need for a master’s degree, it would be a solid choice, but in my case I don’t feel it would be the right call.

Freelance Work

Part of the beauty of programming is that all you need is a computer. With a stable internet connection, it’s easily possible to work remotely.

Pros:

  • Flexible hours
  • Regularly rotating work (can help prevent boredom/burnout)
  • Some choice in what projects you take on
  • Job security. You’re used to fluctuating pay schedules, and you don’t have to worry about being laid off suddenly.

Cons:

  • You’ll rarely work in groups. Even though I enjoy working alone, group environments can help shore up your weaknesses, give you people to bounce ideas off of, etc.
  • Less-stable pay schedule. Your pay will fluctuate from contract to contract, and payment can take several weeks after the contract is actually finished.
  • You’ll get taxed as both a business and an individual
  • No benefits (medical insurance, dental, paid vacation, etc)
  • Unpaid while looking for work and while negotiating contracts

Due to those last three bullets, freelance wages seem higher than they really are. As an estimate, take what your yearly salary would be, and divide it by 1000. So, the equivalent of working for $80,000/yr would be working for $80/hr as a freelancer.

Start a business

Perhaps the most ambitious, but also most difficult option, this is what I finally decided on. I’ll write up more on this as it develops! But, for the practical reasons why I’m shooting for this now:

  • I’m still used to living like a student, so lower income isn’t an issue
  • I don’t have that many expenses:
    • I’m still under my parents’ medical insurance
    • I don’t own a car
    • I don’t have children or other dependents
  • My student loans don’t enter repayment for 6 months after graduating
  • I still have friends in college, so it won’t be hard to find roommates at a similar quality of living

I considered working full-time for a year or two and saving up/paying off my student loans before attempting a business, but the above points are great reasons to go for it now rather than later.

Plus, what’ve I got to lose?

GDC Day 1: Math for Games Programmers

GDC '13 logo

For the second year in a row, I attended the Math for Games Programmers tutorial at GDC today. As expected, there was a fair amount of review, but I also learned some cool new things!

The earlier talks on splines, blending, matrices, etc. were basically review for me, but it was nice to have that refresher. That said, one tip came up that really stood out to me for matrix math. Matrices are multiplied in a sort of “reverse” order, for example:

Rotation * Translation = translate-then-rotate

Incidentally, this is actually the same order you’d write functions while programming:

rotate( translate( point ) ) = translate-then-rotate( point )

Nifty!

Jim van Verth’s talk on quaternions was absolutely fantastic. He spent the talk discussing how quaternions work rather than why we use them. Questions like “why four values?,” “why do we input theta over 2 instead of the entire angle?,” “how can we visualize 4D space?” and more are covered. As a bonus, the tutorial will actually make it to the GDC vault this year, so definitely check out the talk if you can! If you don’t have vault access, you should be able to pick up the slides at http://essentialmath.com/tutorial.htm once they’re posted.

Dual numbers sound useful, but I’m not sure how often I’ll use the content of the lecture. That said, “you can basically get the derivative for free” is a pretty awesome thing to keep in mind. They’re pretty interesting from a mathematical standpoint.

The talk on Orthogonal Matching Pursuit and K-SVD for Sparse Encoding went way over my head, but I still pulled a good deal of information from it. I think I have a rough idea of how compression works now. I have some research to do!

The talk on Computational Geometry was pretty interesting, though it seemed more or less the same as last year. Still, it was good to get the review – I had forgotten a lot of it. I also learned about higher order surfaces on the GPU (i.e. tesselation, etc.), which was new to me!

Finally, the talk on Interaction With 3D Geometry by Stan Melax was amazing. It was a super-fast-paced crash-course on a huge number of subjects that left me really inspired to start writing some tech demos to learn how all of the concepts work. I’ll definitely be watching it on the vault.

Tomorrow: Physics!

Planning Out an OUYA Launch Title

Photo of prototype running on OUYA

After hammering out a prototype for the CREATE game jam (partly to prove to myself I can make this game), I’ve been planning out the development cycle for my upcoming OUYA game, Project Onslaught. In terms of time frame, there are a few known dates:

  1. February 11th – CREATE finalists announced
  2. February 18th – CREATE winners announced. At this point, I’ll know for sure what my budget is. Keeping my fingers crossed!
  3. March 4th – Classes begin again for me, splitting my focus
  4. March 8th – Chuck, fellow OUYA enthusiast, comes to visit for a while and help out, which will help offset classes starting up again
  5. March 25-29 – GDC week
  6. March 28 – OUYA Launch Party (but not necessarily console launch)

There’s no official launch date set yet, but as the “launch” party is during GDC week in March, the apparent best plan of action is to be done by GDC. That said, they could hypothetically launch the console any time in March based on the Kickstarter dates, but I highly doubt it’ll be in the beginning of the month. Ultimately, that gives me about 8 weeks to develop a 3D hack ‘n slash game.

I’ll also be starting “from scratch” in the sense that I won’t be using the prototype code. I went into the CREATE game jam with the rule that I won’t carry over the prototype code so I could make it as hacky as needed to meet the deadline, and I’ll be sticking to it. It wasn’t wasted time – it was a solid proof of concept, and it gave me a much better sense of how to structure everything.  Plus, looking back at it for reference is fine, I just won’t be copying it fully.

With the 8-week time frame in mind, I needed to figure out what the minimum viable product (MVP) is. The MVP, as its name implies, is the bare minimum that needs to get done by launch for a solid game release. Updates after launch are definitely planned, but when the game comes out, we’ll need:

  • 4-player support, local multiplayer
  • 4 hero types to choose from, so everyone can be something different if they want
  • Arcade Mode – Basically, one or more game modes that are focused on high scores, replayability, etc. Arcade mode will be free content.
  • Campaign Mode – At least the first “chapter” available. The first level or two will be free, with the full campaign available for purchase (potentially released on a chapter-by-chapter basis)
  • Power-ups/consumables – think Gauntlet: Dark Legacy. These have the potential to add a lot of fun to gameplay, and should also help the player feel like a complete badass from time to time
  • Basic character progression. At a minimum, XP and levels that give more HP. Preferably, a few basic stats that can be increased. Nothing more complex than that – it should be a game you can sit down and play without fiddling with complex stats/builds/etc

With all of that in mind, I’ve got a rough, tentative schedule written out. It’s super-duper subject to change, but for now:

  • Week of Jan 27: Re-implement player controls and basic combat mechanics (i.e. attack stuff to kill it). Hopefully knock out multiple hero types in one shot.
  • Week of Feb 3: Enemies. Lots of work on enemies, to give lots of options for building levels/scenarios. Also includes polishing combat mechanics.
  • Week of Feb 10: Build Arcade mode. Pretty much a more robust variation of the existing combat prototype. Cross fingers and hope to win CREATE prize money to fund art assets
  • Week of Feb 17: Start working on a framework to build levels for the campaign mode. Discover I won prize money and rejoice! Or, failing that, congratulate the winners on a job well done =]
  • Week of Feb 24: Finish campaign-building framework, and anything else missing in core gameplay.
  • Weeks of March 3, 10: Content! Build content! (Also a buffer for slips in earlier plans)
  • Week of March 17: Feature freeze. Polish. Only finishing up campaign content along with polishing and bug fixes – anything that hasn’t made it in yet won’t be in at launch (but hopefully will be shortly afterward!)
  • Week of March 24: GDC week! Potential launch week! Network, talk about the game, go to talks, etc.
  • Following weeks: Game maintenance, work on new content, etc.

I will, of course, be posting blog updates along the way as things progress. I wholeheartedly expect the schedule to change drastically before I’m done, but I’ve got a rough outline hammered out for now at least until more details develop. Part of the reason all of March is content is that I’ll also be busy with schoolwork, so I’d prefer content development and polishing to hardcore coding binges. That, and it gives a bit of flexibility if the console launch is announced earlier than expected.

It’s going to be an intense two months, but if it’s anything like the game jam was: this is going to be damn fun!

Project Onslaught: OUYA CREATE Entry Complete!

Prototype Features:

  • Supports up to 4 players!
  • Each player controls a warrior character
  • Enemy skeletons will spawn in an arena as the party fights to survive!
  • Game stats are displayed once the entire party is defeated. Try and beat your friends!

Development photos: Imgur album

Downloads: Android APK

Cross-post on OUYAForum.com here!

Official OUYA forum post here!

Follow

Get every new post delivered to your Inbox.

Join 671 other followers