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