Friday, November 30, 2012

Prototype 2 : Evenbloom Post-Mortem

The post-mortem review of Evenbloom, wild west style..

The Good:
- Firstly, our idea was great (thanks to Andrew) Walking around a dark world and bringing life to it. How cool is that?
- My giants AI did exactly what we wanted it to do. They seemed pretty intelligent at the end.
- This was possibly the most cleanest and modular code I have ever written. Since there were so many  behavior states of the giants, programming the behavior tree was really tricky. So in order to prevent the states from overlapping my code had be as coherent as possible.
- We used the Actor-Controller design for our game, which we learned about in Joe's Game Engineering class. This made the code really modular and changing the behavior of an Actor became a breeze. It was fun too see how I could make the player behave as a giant simply by switching the player's controller to the giant controller. Emergent game idea?
- I learned that quaternions are my friend. This really helped in making the player and giant mechanics as smooth as possible.
- We got a head start in the prototyping process because Jon had some reusable code from Heroes of Hat,
which essentially calculated the Y component from the X and Z components of the player's current position on the terrain.
- Cody's grass generator tool was incredible. It made the grass look super realistic. It's still hard to believe how his tool rendered each blade of grass individually. It was awesome.
- Andrew made most of the terrain and the world using Damean's help, which was great.
- Jon doubled as an artist and made the rest of the 3D assets (the giants and lanterns).
- Jon and Cody made so many shaders, that I too got inspired to learn about shaders and made my first Pixel shader, right after the prototype.

The Bad:
- Even though the premise of our game was fantastic, we did not have any solid mechanics that made our game fun.
- We had some major design issues at the end of the 2nd week, since most of the mechanics were ambiguous and the end-goal seemed unclear. 
- Andrew couldn't fully explain all of the mechanics in the final presentation because of the 5-minute presentation limit.

The Ugly:
- Major communication breakdown at the end of the third week. This led to the creation of seperate branches of the game on our SVN, each with different game mechanics and caused a lot of issues.


Prototype 2 : Evenbloom Final Look

Screenshots:



Gameplay Video:


Trailer:





Monday, October 15, 2012

Prototype 2: New Team. New Prototype. Evenbloom.

Treadport  

This time we are working on a platform that's really interesting. We are making a prototype for Treadport, an immersive virtual environment system that is used for rehabilitation of patients recovering from spinal-cord injuries. 
You could, classify our prototype as a Serious Game. 
Another thing, that's awesome is that we are using XNA and C# this time, a big step up from the MOAI and Lua combo.

My Team

Producer : Andrew Witts
Engineer : Sagar Mistry
Engineer : Jon Futch
Engineer : Cody Hansen

My team is really fantastic. Cody and Jon are really talented game programmers and Andrew is a great producer.  In online gaming slang, our team is super OP. :P

Our Prototype - Evenbloom

This was Andrew's idea and I really like it. It's fresh and fun and would look really cool on the Treadport. So the basic idea is that the player walks around the magical land of Evenbloom in order to restore life back to the it. With every step, the player lightens/brings life to the area around him. He must avoid the giants who sort of undo all of the player's work and darken the land again. The player can expedite the process of painting the land, by using randomly placed lanterns that are usually guarded by giants. The giants chase the player away and bash the player knocking him back, if he steps too close. To avoid this, the player can either sneak up on a giant and kill the giant with his light radius, or shoot the giant with the light from one of the lanterns. Killing all the giants, does not result in a win state. The key is to paint/bring life to as much of the world as possible before it gets dark i.e the time runs out.

Progress

The prototype is almost complete and we have worked really hard on it. I have  been working on the giants from the start, most of it was AI and gameplay programming, which was fun since I've never really worked on AI before. However, I can safely say the giants are intelligent enough now and do exactly what they should do. I'll do a detailed log on my work pretty soon. Wish I could it post it sooner, but I'm swamped with so much work now. It's insane. 

Saturday, September 29, 2012

Prototype 1 : Beehive Cheese Rush Post-Mortem

Yes. My Post-Mortem review has been due for a week now and I have been feeling really guilty about not posting it on time. So here goes..

Firstly, I want to start off by saying that I have a learned a lot from this prototype. There have been a lot of "Oh! This is my first" moments like working in a team, within a time frame, first prototype, first scripting language and well, a lot of stuff honestly. In all, it's been an incredible learning experience.

Now to the Post-Mortem..

Stuff I learned on the personal front :

- Working with a well defined team and within a defined time frame (4 weeks to be precise).

- Working for a client and delivering a product keeping the client's requirements in mind.

- Prototyping a game. Lua really helped. I must say Lua is really powerful and convenient when prototyping and I underestimated its value before. And, MOAI with its base in Lua provides a really awesome development environment, for churning out prototypes.

- Working my ass off during the crunch period. :P I still remember the last line of code I put in to randomize the cheese drops was an hour before the final pitch.

- Organization. Working within bounds. Keeping up with sprints. Making my code readable.

- And lastly, that I am fairly good with 2D art and can pull off decent sprites. I love sprites. Yes. I just love saying the word 'sprites'. Sprites. Sprites. Sprites.... :P

Now, about working as a team..

Positives :

- Communication. We had a Facebook group set up where we updated each other on the progress. It proved to be a great tool to keep updated and stay in touch. We also texted or called each other when needed.

- Patience. We remained patient at all times and kept our cool. 

- We really respected each others opinions and ideas. Mike did a great job of trying to marry our ideas and coming up with a resolution that agreed with everyone.

- Our presentations and pitches were always up to the mark. Thanks to Mike.

- I stepped in with fresh artwork at the last moment, which really helped transform the game.

- Yuntao really helped with porting the prototype to the iPhone.

- We feel that our prototype really hit the spot according to the client's requirements, target platform and demographic.

Negatives :

- The biggest negative was not having an artist. Good artwork can really improve the game's appeal.

-  We underestimated the complexity of our game. That's why we didn't do a lot of work in the first week, which caused a lot of workload in the last week.

- Triston and Yuntao did not learn Lua during the start and tried to jump straight into MOAI, because of which they were struggling with their tasks.

- My team members did not complete their assigned tasks on time.

- Mike did not do a good job at delegating tasks. He was not assertive when needed. Because of which I had to step in and breakdown the tasks.

- I felt like I had a lot of workload and was really exhausted by the end.

- Our dry run did not go that well. The presentation could have been better.




Saturday, September 15, 2012

Prototype 1 : Week 4 Roundup


This week has been really eventful - dry run on Monday, intense last minute programming, struggling with the artwork and finally our Game Pitch and Post-Mortem on Wednesday. All of which, eventually, worked out and turned out to be great. Bob, Roger and our client Katie were really pleased with our work and everyone was particularly impressed with my “attempt” at artwork. :P

Now that we are finally done with our prototype, let’s take a look at the real thing. Ladies and gentlemen, presenting the epic..


Beehive Cheese Rush



Gameplay video (Props to Mike!)



Screenshots





Game Pitch Presentation


Game Pitch One-sheet



Also, here’s a little peek of the Post-Mortem work.


I’ll be blogging more about the post-mortem soon. But, I have to go for now. I have a Vector class to make for the Game Engineering class and it’s due this Monday. So, peace out people!


Sunday, September 9, 2012

Prototype 1 : Beehive Cheese Rush Prototype


So, our prototype is almost done and I must say, it turned out really cool. Most of the features are in place and I just have to tweak some random values and hardcode the GUI. Let’s take a look at the features I’m done with and how I dealt with them.


       1. Swiping

         In our game, essentially there are two kinds of swiping actions:

-        Left and right swipe to switch between different cheeses.

-        Forward swipe to flick the cheese.

Figuring this out was pretty simple. So basically, I check for two points say A and B. A is where the player touches down and B is where he lifts his finger while swiping. To check if the player presses within a cheese, I use MOAIProp2D’s ‘inside’ function. Then I calculate dx and dy.


Now, if dx>dy then the Left or right swipe action is started depending on the direction of the swipe, and if dy>dx then I activate the forward cheese flick action, which flicks a block of cheese towards a particular customer.


2.   Random customers and movement

            In our game, there are 4 random values to be dealt with:

                           i.          When to spawn customers? - Using MOAITimer and callback function I spawn customers at random intervals generated by math.random()

                          ii.          Which type? –  Using math.random(1,4) on the file names of the four customer sprites.

                         iii.          What lane? Using math.random(1,4) for the 4 lanes.

                         iv.          What speed? Using math.random() again

I have used MOAIProp2D’s moveLoc() to move all the props, since moveLoc() is relative. For the customers, I’ve changed the MOAIEaseType to MOAIEaseType.LINEAR because it looks more natural and the default MOAIEaseType.SOFT_SMOOTH made it seem like the customers were on drugs. :P


3. Collision detection and cheese-customer matching


So, after the cheese is flicked I create a thread using MOAICoroutine, which polls the flicked cheese’s and customer’s current position. Then using, prop:inside I check to see if the two props collide.

Now, to check if the correct cheese was thrown at the correct customer I call the checkForMatch() function, which essentially is a bunch of if-else conditions (since Lua does not support switch conditions). If it matches, then a update the ‘No of customers satisfied’ textbox and add a green smiley to the status bar, and if it does not match then I add a red smiley to the status bar.



4. Drop cheese and Cheese wheel (Work in progress)

So, I am almost done the drop cheese feature ( in case of correct customer-cheese matching the customer drops a piece of cheese). Collecting the dropped cheese pieces fill up the cheese wheel, which is basically an emergency last resort button that satisfies all the customers with the right cheeses, in case you’re swamped with a lot of customers or you’re losing. I’m not sure whether I’ll be able to finish the cheese wheel by tonight and whether we’ll be able to add it to the 
prototype, but I’m going to give it my best shot!



So, after completing the drop cheese feature I’m going to work on the UI. The Photoshop work is mostly done I just need to touch up on a few things.
Here’s how the prototype and UI looks, as of now..




Saturday, September 1, 2012

Prototype 1 :MOAI and me


So, I am finally getting the hang of MOAI and you know what, it’s not that bad. Even though parts of MOAI are still undocumented and it doesn’t have a strong dev community like UDK or Unity, it’s kinda easy to get a hold of if you understand the basics. I found these really cool tutorials that helped me do just that. They’re not much but they’re good to begin with. Anyways, you can find them at:


Also, did I mention how awesome Lua is? Its super easy to work with and I really like how dynamic and flexible it is. At first, it was really hard to get used to fact that ‘tables’ are the only data structures and the ‘No classes and objects’ thing, but I’m getting used to that now. :P

Sunday, August 26, 2012

Prototype 1 :Week 1 Roundup


To start with, being a 'Game Engineer' (ahh, that sounds so badass) I have to take three classes this semester - Game Projects I, Game Engineering I and Game Design I. Now about the EAE program, the people are awesome, the faculty and professors are badass (any other adjective would be an understatement) and the Master Games Studio is as epic as I thought it would be. 

I'm not much of a writer, so let me just give you the highlights of went down this week.

Monday (Game Projects I and Game Engineering I) 
  • Our first customer shows up in the first 15 minutes of class itself. Woah! She told us about her company - Beehive Cheese and what her requirements were. We were then split into teams and asked to come up with ideas for a fun mobile game that would sort of promote their product and also educate people about cheese culture, in a subtle way. 
  • So in my team, there's me, Triston, Mike and Yuntao. After a lot of brainstorming, we settled with this 2D casual game idea, where in you flick different cheeses at different customers to satisfy them. We also came up a ton of neat features which we thought would greatly help Beehive Cheese promote their brand and educate people about their cheeses.  
  • Then, later in the evening I had Game Engineering I, which was awesome too. Since C++ is my favourite programming language I feel this class should be fairly easy. 
Wednesday (Game Projects I and Game Design I)
  • Our game pitch turned out to be really cool. Big props to Mike for that. Oh, and I forgot to mention, we decided to call our game Beehive Cheese Rush.
  • Game Design was super interesting, and fun (Roger never fails to crack me up!). We talked about modding and the legal and ethical issues surrounding it. I really liked the discussion, since I'm pro-modding and have done my share of modding too.
Rest of the week
  • So, about Beehive Cheese Rush, although we had everything figured out on Monday itself things didn't go as smooth as I thought they would. Why? Because working with MOAI is a pain. It's a great engine and the whole idea of making an entire game with Lua sounds cool and all, but it still needs a lot of work. The lack of information, tutorials and comprehensive documentation is getting to me.
  • Till now, I've figured out how to compile and deploy MOAI apps on the iPhone using XCode and some general UI stuff -  inputs, coordinate system, buttons, images, etc. 

So to sum up, even though my first week at the U has been awesome I've quickly realized that EAE means business and I better step my game up. That's it for now. Peace out!

Game Projects Assignment 1

Fus-ro-dah people! This is my first blog post. So, let's see what I've done so far.


  • Create Blog - Check
  • Come up with a bunch of really cool blog names - Check
  • Realize that they all sound insanely stupid and go with real name - Check
  • Blog about something worthwhile - Hmmmm.....