Friday, November 10, 2017

Gaming - For Fun and Exploration

Recently, I completed a life-long goal... to publish my own game.

I did it.  Really!

Now it might not be the best game in the whole-wide-world - I'll attest to that.

But I did it!

I built it myself from the ground up using a tool called Unity and some CC licensed graphics, sounds and music.  So, basically, I did all the development minus building my own creatives.  And I did it all within one month.

That's right in one month, I learned the Unity engine tool, taught myself C#, figured out animations and physics controllers, learned to configure the GUI, and manipulate inputs.  What that means is its not that hard to learn.  Anyone can do it.  It just takes putting in the work to figure it out and starting small... really small.

Before we get too deep into this post, let me provide you an agenda (in case, you want to skip around). <TODO: Add Links to Anchors>

  • How Did I Start - If you want to learn game programming and develop, you can follow the same steps I took and have a game under your belt (1-3 months - mileage may vary).
  • Why Games are Important - My personal ideas and insight on the positive influences games have had on me, both video games and board/table top games.
  • Gaming as a Data Scientist - Why games are the perfect playground for Data Scientists for researching A.I. and Machine Learning technology.
  • Games in Modern Society - My opinion piece on why mobile games are preeminent in modern society (its not all good).

--
How Did I Start <TODO: Add Anchor>

If you're like me, the idea of building your own game starts off sounding very exciting and then quickly becomes overwhelming... yikes!

So, where do you begin?

I think the first place to start is a tutorial.  Unity already has a handful of basic tutorials which you can follow step by step.  Don't worry if you get it wrong, or don't understand everything you're doing.  It's like sports or playing music, or driving a car, you're developing the muscle memory for good programming habits.

As you follow along different tutorials (and there's dozens, just search on YouTube), you'll begin to have a basic understanding of the mechanics around the scripting language (C# or JavaScript) and how it interacts with the Unity game engine and the various native class structures.

It can be intimidating at first, but you eat an elephant a bite at a time (to borrow a dated metaphor, who eats elephants...).

My initial goal had nothing to do with building my game, it was - go through as many basic tutorials as possible within a week and a half.  

I completed three.  And I felt decently accomplished.  I had a basic understanding of what I could make the engine do at this point and what was not within my understanding, yet.

And this is your game making starting point.  You have to start with what you know.  You have some insights on what is possible and what you're capable of.

Now if you don't have a concept already, I'd suggest taking a tutorial project that you've already completed and really enjoyed and really understood well and tweak it.  What's that one really cool feature you'd like to see in the game?  How could you make it more difficult?  How could you add extra options?  Just keep building on top of your tutorial project and you'll soon have a pretty cool game that you'll be proud to say you made.

But, maybe you already have a game concept in mind, like I did, the next step will be defining the game scope.

If you have your own game concept idea, keep reading...

A wise man once told me, "you can have it all, but not all at once..."

I think that sage life advice applies aptly to game development, too.

You might have an idea for MMORTS mobile game with PvP and PvE player modes and CCG elements... and amazing 3D graphics and interactive story line and cut-scenes, etc... (like me)...

But if it's just you building it, you need to be realistic about what you can do and how fast you can do it.  I'm not saying that your game won't one day have all those elements that you want, you just have to take a step back and do it in small chunks.

So, here are the steps I recommend you take to get your first game shipped -
(I also recommend keeping a notepad to track your progress and ideas)

  1. White board everything under the sun that you'd like to have in your game.  This is Blue Sky planning. Anything and everything goes.  List it, map it, draw it, whatever it takes to get your ideas on paper.  
  2. Then on a clean sheet of paper, make three columns. 
    - In your first column, list all the 'features' that you've come up with.
    - In your second column, evaluate each 'feature' with either an 'X', a check, or '?' by answering the question, do I know how to do this?  If it's a no way today, put an 'X'.  If it's yes, definitely, put a check.  And if you have an idea, but you just don't know the exact syntax or component details, put a question mark.
     - In your third column, finally, score each feature with a 1, 2 or 3.  Where 1='Gotta Have', 2='Nice To Have', and 3='What Was I Thinking?'.  
  3. Now take your list and circle all the items that have check marks and 1's.  That should be your minimal viable product.  
Hopefully, that little exercise takes you down to a handful of features.  It might not look like much of a game, but its just the starting point.  Maybe you have to play around with those features to make it into a playable game - but hey, that's where the fun and creativity come into play with building your own game.  


"Goals are dreams with a deadline."

Now that you have your MVP feature set, it's time to set a timeline.

First, figure out what your commitment to the project looks like.  Can you do an hour a day?  Can you only squeeze in two or three hours a week?

For me, I spend 20-30 minutes each morning 5-6 days a week on my game.  But on average this works out to maybe 3-4 hours a week, where Saturday mornings I put in some extra time.

There's two schools of thought with setting up your timeline / schedule -

  1. Estimate the # of hours each feature in the project will take, multiple it by 1.5.  Then divide that by the hours in a week you plan to spend and now you have your deadline date.
    - OR -
  2. Pick a date that you're going to ship by and complete everything you can by your ship date. 

I like the second approach, because deadlines have a way of motivating people to work harder and faster than ever before.  I know because I've dealt with procrastination...

Ship early, ship often

My ship date is simple.  I've committed to ship at least once a month (by the last day of the month) for the next six months.  That's my schedule / plan.  That simple.

Some months, there may be bigger releases, others smaller.  But what matters is that I'm working on my game consistently and I'm tackling issues small enough that I can handle it in a day or two.  

If your problem is really huge, break it apart.  Find a tutorial that has a feature similar and spend 3-4 days just following the tutorial.  It's okay to take a break from your game to learn something new.

For me, one month is long enough to not feel pressured to deliver constantly, but not too long to get apathetic about working on my game.  You'll have to find your own balance.

The other reason why I think its better to ship smaller chunks and do consistent releases is that you actually finish.  You get to see your completed game each time your build a new release.  And if you stop there and never work on your game again, it's there.  You've done it.  You've built your very own - playable - game.  There's a huge amount of satisfaction in being able to complete something and share it with the world.

Who knows, I might want to take a month off and take a break.  Or I might just really want to work on a different game idea.  At least I've deliver and shipped on the existing game idea I've had and finished what I was working on.

The worst feeling is spend 4 months on a game project, getting frustrated and quitting.  Then you feel like you've wasted the last 4 months on something that amounts to nothing. Avoid all the pain - ship early, ship often.  Don't worry if its not good enough... it is.  Just ship it.

Now go forth and develop your own game!!!

...or keep reading this really long post on other thoughts I have on games. :)

Do leave me a comment if this post inspired or helped you develop a game!

--
Why Games are Important <TODO: Add Anchor>

I remember growing up and being told video games would rot my brain.  I'm pretty sure that was debunked... maybe...

As an adult, I think we don't play enough.  And I'm not just talking about games, I'm talking in life, at home and at work. 

In Charle Hoehn's book, Play It Away, he talks about the importance of play to relieve stress and anxiety.  Our society is more stressed than ever and we need an outlet.  Exercise is great for this.  But why not go one step further and find a sport or game to play? 

We often grow the most while we're at play.  Its a time for exploration and freedom from making mistakes. 

When we play games of sport, we find ourselves learning more about ourselves - how we interact with others and deal with conflict.  We get to push our limits physically and mentally and emotionally.  There a challenges and we have to overcome them.  But when it's a game its fun.  We enjoy ourselves and have a good time doing it.

Video games and computer games are no different.  We can to experience the same types of challenges and the train us to think strategically, tactically, and respond to various scenarios quickly.  We're learning about ourselves and our opponent in a specific framework. 

As we game, whether physically or virtually or some hybrid of the two, we're learning more about ourselves and growing skills.

Take a real-time strategy.  These types of games involve both short-term and long-term planning, pre-game planning and training, organization, resource management, physical acuity and accuracy, fast reaction time, and stamina.  You have to optimize your game play to follow a specific plan, but when your opponent interrupts your plans, you have to figure out how to counter.  You have to scout out your enemy and discern his/her plans.  You have to evaluate the tactics and strategy they're employing in order to create a counter-strategy.  At every step, you have to make sure you're not vulnerable to an all-in type attack.  You have to balance technology and economic growth with military might to defend and counter.  You have to evaluate the terrain and look for the best opportunity to engage your opponent. 

These types of games test your skills in ways beyond games like chess and go ever could. 

And all the while, chess and go are still highly esteemed mind sports which pits the wits of two individuals. 

Each game is a way for us to learn and grow while leaving stress and anxiety behind.  Without games, our world would be a boring place. 

Let's look for opportunities to play more as adults.  Let's keep on gaming!


--
Gaming as a Data Scientist <TODO: Add Anchor>


-
Games in Modern Society <TODO: Add Anchor>


No comments:

Post a Comment