Bob Petrol – Rapid Prototyping 5

My Contribution to the project

  • Programmed tower defense mechanics in the game. Programmed a tower that can be placed anywhere and shoots at the first target that enters its area of range, changing to another target if the target leaves the range.
  • Programmed the projectile movement of the barrels that the tower throws. Added particle effects, colliders and physics to the barrels. The barrels can hurt the engineers if they fall on them.
  • Programmed the interaction with barrel projectiles. Player can kick and head-butt them in the air. Barrels behave like real physics simulated objects.
  • Programmed the interaction with minions in a similar way to the barrel projectiles. The player can kick or head-butt his minions to protect them from the fire barrels and prevent them from falling on them.
  • Programmed the ragdoll physics death animation for the minions. After they die their bodies stay on the ground.
  • Added all the remaining names of our Cohort into the game and created a Cohort Mode Level where the player gets to play with 60 minions with the names from our Cohort. Added the UI to go to the Cohort Mode.
  • Implemented art given by our artists into the game. Implemented all the materials given to sync with the models. Implemented skeletal animations given by the technical artists and synchronized them to the in-game models. Replaced the in-game default skeletal animations and implemented them to our character skeletal mesh.
  • Added background music and sounds for minion kicking, minion dying and explosions.

 

What would I do different next time?

I would try to learn more about C++ programming in Unreal Engine which is the alternate programming method. Because this time we heavily relied on Blueprint/Visual programming. Next time I will definitely switch to C++ programming.

 

Things I learned in the process

Things I learned that contributed positively to the project:

  • Learned 3D game programming using Unreal Engine
  • Working on a larger team with 4 engineers
  • Learn how to make games through iteration.

 

Conclusion

Overall I feel we did a pretty good job as a team. I think we have achieved what we wanted on time and executed our idea really well. EAE faculty have been very helpful. They suggested us changes and features which helped us a lot in refining our game and finishing it on time.

The Rolling Jackalope – Rapid Prototyping 4

My Contribution to the project

  • Programmed a camera script to provide smooth movement to the camera and make the camera follow the player. Camera dynamically calculates the boundaries of the level and adjusts when it hits the level boundaries as to not show the dead space outside the level.
  • Programmed the character movement for the player to move around the level using accelerometer controls of Android phones. When the player starts rolling in a direction he will gain momentum. When the player comes in contact with an NPC, they will be absorbed by the player, and the player score will be incremented by 1.
  • Programmed the bubble growth for the player. When he absorbs an NPC the size of the bubble increases and the NPC will get absorbed into the bubble and will float randomly within the bubble. Player can only cross the river to the next level if he collects all the friends in that level.
  • Designed the play area and static objects that can be placed in it. The boundaries bounce the player back slightly. Also the static objects located in the area have colliders to prevent the player and NPCs from passing through them. Even the player and NPCs bounce off these objects.
  • Implemented the UI for the game. Main Menu and End Screen UI: The Main Menu consists of a title and buttons to go into the game area and the Shop Screen. A friend counter to show the number of friends collected by the player. Counter resets when the level changes and tracks when to display the Win State.
  • Implemented art given by our artist into the game. Programmed animation from the sprite sheets given.
  • Added background music and sounds for button clicks, friend collection and level progression.

What would I do different next time?

I would try to learn more about Canvas in Unity which is the newer UI version. I am still using the old GUI Text to implement the UI. Next time I will definitely switch to the newer version.

Things I learned in the process

Things I learned that contributed positively to the project:

  • Learned more 2D features of Unity game engine
  • Managing time efficiently
  • Learn how to make serious games and find a problem using given constraints

Things I learned that negatively impacted the project:

  • Not using the newer version of UI system in Unity

Conclusion

Overall I feel we did a pretty good job as a team. I think we have achieved what we wanted on time and executed our idea really well. EAE faculty have been very helpful. They suggested us changes and features which helped us a lot in refining our game and finishing it on time.

 

UPark – Rapid Prototyping 3

My Contribution to the project

  • Programmed pac-man style player car movement which accepts input from the keyboard and moves the car in restricted directions. Car only moves if lane is open.
  • Programmed forced movement of the cars. Cars always move forward unless they are asked to change direction and direction is open. If forward moving and the next position is not open, the car stays in the current position.
  • Implemented the art given by our artist into the game. Implemented art for all the AI cars, parked cars and the player car. Adjusted the grid to align with the parking spaces on the stage.
  • Implemented the UI for the game. Created Menu screen and End Game UI which shows the player the time he took to park. The end game message changes based on the time taken by the player to find a parking spot. Blocked the player input when the UI is active.
  • Implemented the train animation and sprites. Corresponded it with the arrival time of the train.
  • Programmed a UI timer that will count down to the train’s arrival. After the train arrives, it will count up (showing how late the player is). Added the train arrival and late icons that will light up correspondingly. Created a script to convert a sprite into a sprite based font.
  • Added pedestrian art and programmed the arrival of pedestrians once the train reaches the station.
  • Added background music and randomized the radio station playing in game. Also implemented sounds for the car horn and programmed the random honking of AI and key based honking of the player.
  • Worked with artist to decide the art style and the resolutions of every sprite in game.

 

What would I do different next time?

I would try to learn more about Github for source control with Unity. I had few problems pushing my changes properly to git. Also merging changes in Unity Scenes was very difficult. Next time I would learn all the git basics and properly setup my Unity project.

 

Things I learned in the process

Things I learned that contributed positively to the project:

  • Learned 2D features of Unity game engine
  • Learn how to make serious games which solves a problem
  • Managing time efficiently

Things I learned that negatively impacted the project:

  • Sometimes forgetting to merge my changes to Git master branch
  • Coming up with new features to add in between the development process instead of deciding all the features to be added at the start.

 

Conclusion

Overall I feel we did a pretty good job as a team. I think we have achieved what we wanted on time and executed our idea really well.

Dig Doug – Rapid Prototyping 2

My Contribution to the project

  • Programmed a JSON parser which can import level design tile map data to HTML5, created from a Tile Map editor which exports .json files.
  • Programmed tile based character movement for the player to move using arrow keys. Also programmed the map destruction when the player moves into an unexplored area.
  • Developed the Artificial Intelligence for the game. My contribution was breaking up the AI into various state machines that can be attached to any game object. I created states like Idle, Moving, Traversing through dirt and Dead State. I created a State Manager which tracks the state changes and does a seamless transition between these states. I explained these states to the other programmers and named them appropriately so that it’s easier for them to understand.
  • Created a Layer-based Collision Detection script to add box colliders to the objects. It helped the team to easily detect collisions and call their methods upon collision within a particular layer.
  • Worked on the Animation Script which takes a sprite sheet consisting of individual images arranged in rows and columns and converts them into an animation. This made the work of artists easier because they could easily export their 2D animations frame by frame into rows. It also helped the other programmers to easily import animations for the character and enemies.
  • Programmed timer based bombs for the player to plant. Imposed a limit on number of bombs he can place. Coded the bomb explosion and collision which can destroy enemies and also the player in a specified range. Created appropriate variables for easily changing the explosion radius and bomb timer for everyone to tweak and play test the game.
  • Created public variables for the speed of the character, speed of the enemy, number of bombs and timers so that my team can easily access them and change the values if they find my speed values too fast or slow.
  • Programmed an in-game Level Designer so players can create custom levels by placing tiles. Added a feature to share the levels on Twitter. But unfortunately this did not make into the final game due to insufficient time.

What would I do different next time?

I would try to decide and finalize the engine with the entire team in the start itself. Because we ended up working with two different architectures of game and in the end we had to merge the two which was unnecessary extra work. I think all programmers must plan and decide on one architecture base and work on the same.

Things I learned in the process

Things I learned that contributed positively to the project:

  • Learned HTML5 quickly
  • Managing time efficiently
  • Saying no to new features which might be hard to implement within the given time frame
  • Killing my dream and continue developing a basic prototype first

 

Things I learned that negatively impacted the project:

  • Trying to aim big instead of a developing a basic playable level
  • Coming up with new features to add in between the development process. Instead of deciding all the features to be added at the start.
  • Not optimizing the code from the start
  • Setting unrealistic goals which aren’t doable on time.

 

Conclusion

Overall I feel we did a pretty good job as a team. I think we have achieved what we wanted on time and executed our idea really well. EAE faculty have been very helpful. They suggested us changes and features which helped us a lot in refining our game and finishing it on time.

Brute Force – Rapid Prototyping 1

Because police brutality is such a hot and controversial issue today, we decided to make a game that addresses it. It combines the tough decision-making seen in Papers, Please with the fast-paced side scrolling action of Contra.

Unique Selling Points:

  1. Hot and controversial topic
  2. Player freedom – Gameplay allows for players to choose between excessive violence, arresting, and brutal behaviors while facing resistance as a police officer.
  3. Fast combat

Our Iteration Log:

WEEK 1:

  • Toy prompt and brainstorm
  • Team decided on police brutality
  • Initial pitch to cohort and faculty. Received feedback.

WEEK 2:

  • Scope of game is too big
  • Team basically removed the story

WEEK 3:

  • Revamped sprites and assets
  • 2nd pitch with feedback/criticisms
  • High praise received, good direction for game.

WEEK 4:

  • Feature creep
  • Crunch
  • Final pitch with feedback.
  • Showed game to cohort 5 students, received feedback.

Post-Mortem

My Contribution to the project:

  • Worked on the Animation Script which takes a sprite sheet consisting of individual images arranged in rows and columns and converts them into an animation. This made the work of artists easier because they could easily export their 2D animations frame by frame into rows. It also helped the other programmers to easily import animations for the character and enemies.
  • Programmed the character movement for the player to move left or right using arrow keys. I also programmed the jump and shoot animations for the character.
  • Developed the Artificial Intelligence for the game along with my team mate Yash Bangera. My contribution was breaking up the AI into various state machines that can be attached to any game object. I created states like Idle, Crouch, Walking, Standing and Shooting, Walking and Shooting, Standing Melle and Walking Melee and Dead State. I created a State Manager which tracks the state changes and does a seamless transition between these states. I explained these states to the other programmers and named them appropriately so that it’s easier for them to understand.
  • Created public variables for the speed of the character, speed of the enemy, speed of the bullets and timers so that my team can easily access them and change the values if they find my speed values too fast or slow.
  • Created a Collision Detection script to add rectangular colliders to the objects. It helped the team to easily detect collisions and call their methods upon collision. Linked the colliders to State Machine so that they can change their size based on the image and the state. When enemy changes his weapon collider’s width increases.
  • Randomized the enemies, their speeds, weapons and their spawn locations and created a balance between them to spawn them at appropriate time. Enemies who only melee using knife or bat will stop right in front of you to attack. Whereas enemies with a gun stop a little farther from you so the player has time to shoot them.

What would I do different next time?

I would try to optimize the game as much as possible from the start itself so that I can avoid performance issues later. Since we had limited time I didn’t concentrate much on optimizing the code.

Things I learned in the process

Things I learned that contributed positively to the project:

  • Learned a new game engine quickly
  • Managing time efficiently
  • Saying no to new features which might be hard to implement
  • Killing my dream and continue developing a basic prototype first

Things I learned that negatively impacted the project:

  • Trying to aim big instead of a developing a basic playable level
  • Coming up with new features to add in between the development process. Instead of deciding all the features to be added at the start.
  • Not optimizing the code from the start
  • Setting unrealistic goals which aren’t doable on time.

Conclusion

Overall I feel we did a pretty good job as a team. I think we have achieved what we wanted on time and executed our idea really well.