Welcome to the Radioactive Chipmunks CSE 125 site! Tower 2 Boom! Early Platform Layout In Game Menu! Towers! Starting Menu Particle Effects! Particle Effects! Model Loading Depth Mapping and Specular Lighting Static Model Loading Camera Control and Player Movement Ghost Lady Are his arms tired? Collision Detection Chipmunk Concept Art 1 Chipmunk Concept Art 2 Tower Concept Art 1 Tower Concept Art 2 Over 9000 Gokus on the moon! Starting Menu Concept!


This is the website for the CSE 125 game development team
Radioactive Chipmunks.

   Team Updates   Individual Updates

Final Thoughts 6/13/14

1. Game concept: How and why did your game concept change from initial concept to what you implemented?

  The original style concept idea for the game was to have a fantasy based setting (magic, swords, armor). This idea gave way over time to be a much more stylized/cartoony art style that featured primates and chipmunks. Ultimately I believe that this was a good thing because it is much easier to pull of a polished looking game with stylized art style than a realistic one. However why this happened remains a mystery.

  As for the gameplay aspect of our initial concept we had envisioned a much more dynamic style of tower based combat. This initial idea was to have a resource system in place that players could earn/capture by holding strategic points on the map. These resources could then be spent to purchase placeable towers that players could then place almost anywhere in the world.

  We had also envisioned a much more sophisticated combat system that would feature two paths (ranged and melee). The system would also include purchasable skills, weapons, and armor. These character upgrade paths would be unlocked by building base elements like forges and magic shops.

  While all of these ideas would have been possible to implement into our game due to time restraints we had to make cuts to the system.

2.Design: How does your final project design compare to the initial design, and what are the reasons for the differences, if any?

  The original design was a team based multiplayer game where the objective was to destroy the opposing teams base tower. The players would fight amongst each other for resource nodes that would be scattered around the map and plant a resource gathering building on it. After gathering enough resources, they would buy item upgrades or purchase towers to place on the map. Eventually a player would have amassed enough items and towers to invade the enemy base and start damaging the enemy base tower. This would not have been possible at the beginning of the game because the enemy base tower would do too much damage and the player would not have any time to do any damage to the base tower.

  This is pretty different from our end result. We had the item system implemented, but realized that creating the items and creating a system to purchase the items would have taken too much time and we felt that our time could have been better spent elsewhere. Likewise, the resource system would have taken too much time to implement and test. So we decided to convert what we had for the items and turn them into temporary ability boosts. -Kevin(feel free to add/change stuff)

3.Schedule: How does your final schedule compare with your projected schedule, and what are the reasons for the differences, if any? (You should be able to glean this from your status reports.)

   Our final schedule is definitely slower than projected schedule. Most tasks in the projected schedule are over simplified. Some of them can’t be done in only a week, either because it takes more time to accomplish or needs accumulative work that expense over the whole project. Such as character models, they are expected to be done in the second week. But it’s not possible to make all the models in that first two weeks when the concept of the game was not mature enough. Another reason for the slow final schedule is that we over estimated our ability to create a game in ten weeks. We had planned the last two weeks to debug the program. However, we barely finished the game during the last night before demo. We started with a complicated game concept and ended with a simplified version mostly due to the lack of time. However, we have accomplished some amazing features that we hadn’t planned during the initial schedule, like 3D sound system, which was pretty awesome.

4.What software methodology and group mechanics decisions worked out well, and which ones did not? Why?

   I think that as a group we had a tendency to under comment our code and so it made it a bit difficult to follow along to code that was not your own. This was not so bad do to the fact that we explained things to each other when needed but it would definatly had facilitated everything-Sebastian

   I think that the group meetings that we held more consistently at the end of the quarter worked out really well. It helped keep everyone's vision of the game consistent and helped highlight areas that we still needed work on and prioritize. I feel like if we had held those meetings more throughout the quarter, we could have had a much more polished game. -Kevin

   Throughout the quarter we attempted to have two standup meetings and one “mega coding session” every week. Like Kevin mentioned above, this didn’t actually happen on a consistent basis till the tail end of the quarter. I think that as a group we could have done a better job of communicating. It felt like ideas were not being communicated to the entire team effectively. We ran into a situation almost every week where ideas and concepts were being discussed and one or two people didn’t know we had decided to cut a feature or adjust its implementation. This could have been easily fixed (or avoided completely) if we had discussed these changes at standup meetings. -Dan

   I also felt that toward the middle of the quarter that we were too willing to cut/modify features of the game. This led to a state of constant brainstorming that was not always a productive use of our time. -Dan

5.Which aspects of the implementation were more difficult than you expected, and which were easier? Why?

   Implementing an interface/UI proved to be more challenging than expected. I think most of us didn’t appreciate the work that goes into designing and implementing a game menu or interface because almost every game has one. At the start of the project I expected to simply use a library that specialised in that sort of thing. I quickly learned that UI libraries are a lot harder to find and the ones that are out there are either badly documented or too complex for the amount of time we had. -Sebastian

6.Which aspects of the project are you particularly proud of? Why?

   Yo, the fading platforms were pretty cool. -Kevin

   The whole idea of the final tower and its fading platforms. It added a level of difficulty that fits well with the fast pace of the game. This addition gave the game an objective other than simply getting the most kills. -Sebastian

   The whole last moment level design using only the Cube class is genius. -Leixun

   The particle effect system was extremely fun to work on. While we only ended up using a couple affects the system that was built is capable of much more. In fact there are actually three particle effect system classes in the game and each one functions slightly differently. The first system is a very basic system that produces basic looping 2D effects (2D meaning that the system has a fixed depth or Z coordinate that all particles are bound to). The second is much more dynamic and is the system that was used for the “on hit” and “on death” affects. Both of these systems have various shaders that they can use to dramatically change the effect that is produced. The final system relies heavily on the billboarding system that was built early in the quarter. This system was used to produce the lightning effects, tower projectiles, tower symbols, and several other places. -Dan

7.What was the most difficult software problem you faced, and how did you overcome it (if you did)?

   Github for windows doesn’t merge when there is a conflict even after the conflict is resolved. Randomly clicked “select all” and it merged…

   The Github GUI for windows does not work very well. -Dan

8.If you used an implementation language other than C++, describe the environments, libraries, and tools you used to support development in that language. What issues did you run into when developing in that language? Would you recommend groups use the language in the future? If so, how would you recommend groups best proceed to make it as straightforward as possible to use the language? And what should groups avoid? Finally, how many lines of code did you write for your project? (Do not include code you did not write, such as library source.) Use any convenient mechanism for counting, but state how you counted.

   Counting using commands in the form of “for %G in (*.h) do find /c /v "_@_" %G“ I came up with

Headers Files: 27,778 lines
Source Files: 9628 lines
Shader Files: 2423 lines
Total: 39,829 lines ( 16.4% of this is in one file :P )

   This is only counting code that we wrote for the client. The server has a copy of all the client code so I am going to leave it out of this tally. It is also worth mentioning that we used header files (with no accompanying source files) for most of our classes. -Dan

9.In developing the media content for your project, you relied upon a number of tools ranging from the DirectX/OpenGL libraries to modeling software. And you likely did some troubleshooting to make it all work. So that students next year can benefit from what you learned, please detail your tool chain for modeling, exporting, and loading meshes, textures, and animations. Be specific about the tools and versions, any non-obvious steps you had to take to make it work (e.g., exporting from the tool in a specific manner), and any features or operations you specifically had to avoid — in other words, imagine that you were tutoring someone on how to use the toolchain you used to make it all work. Also, for the tools you did use, what is your opinion of them? Would you use them again, or look elsewhere?

   We used Assimp to load blender models. The problem with Assimp is that it doesn’t allow bones with the same name. The artist needs to be aware of this and make sure every bone is named differently. Animations also need to be starting from 0 frame. We had an incident where the animation was off by one or two frames and Assimp failed to work. One more thing to notice for graphics programmer is that artists usually don’t know the maximum number of bone attachments in the model because modelling software is pretty high level. This can cause less bone attachments inside the program than what was designed by the artist which will warp the model. The solution is to make the maximum attachment a larger number than what is usually used/needed.

   Assimp is a pretty decent library and so far I haven’t found any other library that’s easier to use. So I’ll definitely use it again.

10.Would you have rather started with a game engine like Ogre or would you still prefer to work from scratch?

   I really appreciated the brush up on C++, and also have gained a greater respect for editors and engines after working from scratch. Our game could have had a lot more features since we would have spent less time implementing the basics, but the experience not using an engine was worth it. This was expected based on previous group feedback. -Erik

   I’ve never used a game engine so I can’t imagine which one would have been a better choice. But I do appreciate the chance to make a game from scratch. During the process I’ve learned many new things about OpenGL and the awesomeness it can bring, like tessellation and bloom effect. Those were the aspects of OpenGL that I wouldn’t care to explore if I were not writing a game. I imagine those are implemented in some game engines so user can add them in with a click of a button and some parameters. However understanding how the parameters work will definitely benefit. -Leixun

   No, creating everything from the ground up was challenging, rewarding, and a ton of fun. I now have a whole new level of respect of the level of detail in modern AAA games. It also gave us the freedom to implement little hacks and quick fixes to influence how the game looked and played. I have used Unity3D in the past and it was much more rewarding experience writing our own engine. I feel that it would take away from the whole experience if a game engine was used. Instead of being able to say “look at the awesome game a created” you would have to say “look at the awesome game someone else created and I edited.” -Dan

11.For those who used a networking library (e.g., RakNet or Boost) or physics library (e.g., Bullet), would you use it again if you were starting over knowing what you know now? Describe any lessons you learned using it (problems that you had to troubleshoot and how you addressed them) for future groups who may use it. If you did not use a library, judging from the experiences of the groups that did, would you have used it in retrospect?

   We used the Boost library for networking, and it was a challenge because there were many functions that accomplished the same thing but in subtly different ways. Sometimes the documentation didn’t really describe why some functions were used instead of others, so we implemented the networking in 3 different ways before finding out the configuration that worked best. -Erik

12.Looking back over the past 10 weeks, how would you do things differently, and what would you do again in the same situation?

   If we were to do it again from beginning, we would definitely make main cpp file shorter (16.4% of the client code is in that file). Too much hard coded object initialization code is inside that initialize function. It makes it so difficult in the last week to find anything in that function. We could have defined a function for each type of object initialization and replace all the hard coded lines with a single line of code.

   Another thing we could have done is to create more virtual class to inherit from. Right now most of the objects inherits from Object class. It contains all the generic properties as well as some specific object properties like player id and weapons. The reason we’ve done this is at the early stage of development, we didn’t know much about what kind of objects we are going to design. Although later we realized the problem, it was pretty late to divide Object class into other object classes because the code was too messy.

   We could have definitely benefited from a little more planning when it came to expanding the initial system with new objects and classes. It would have also been helpful to layout a framework for how system events would be processed. Instead they just all got crammed in there toward the end of the quarter. This was really fun, but our system would not scale very well (if at all) with the current implementation. -Dan

13.Which courses at UCSD do you think best prepared you for CSE 125?

   CSE 123 helped with networking, and CSE 110 helped with defining good short term goals and generally thinking in an Agile way. -Erik

   CSE 110 was huge for giving us the tools we needed to work well together in groups and CSE 130 gave me experience with jumping into unfamiliar languages and quickly turning out working code. -Dan

   CSE 169 helped a lot in understanding how animation works.

14.What was the most important thing that you learned in the class?

   It’s hard to avoid over engineering systems that don’t need to be, or that there is no time to “properly” architect. -Erik

   I learned that team meeting are important. We didn’t need to spend hours a week meeting and discussing things, but at least 30 mins to an hour a week would have alleviated some of the problems we had. -Kevin

   There is always a bug hidden somewhere and guaranteed to pop up at the last moment. -Leixun

   There is no shame in asking for help when having a hard time, the earlier you do, the sooner that you can get help and move forward. -Sebastian

   That there is always a better way to implement something or way to improve and refine existing code. However when working with deadlines, there comes a time when a working solution is good enough. -Dan

15.Please post four final screenshots of your game on your group pages for posterity.

   Done!

16.What books did you find helpful that were not on the recommended list but should be? What books were on the recommended list but were not useful and should be removed?

   All the information that I looked up I found online. I didn’t use any of the books on the recommended list. -Dan

   Most of my OpenGL stuff is based off of “OpenGL 4 Shading Language Cookbook” -Leixun

   I don’t think I really read any paper book during my years in UCSD, paper book cannot do searching keywords. -Eli

17.I will be teaching this course next Spring. What advice/tips/suggestions would you give students who will take the course next year?

   The tips in the second lecture were really useful. -Erik

   The second lecture were very helpful. Make sure everyone knows how to use version control software like Git and that they push (working) changes very often. Merging after even a week is an ordeal in this class. -Dan

   Start with a simple game design. Over complicated design will confuse the team and most of them won’t be completed eventually. -Leixun

   Group meetings! -Kevin

   Even though I learned how to use Maya before, I would recommend Blender for the artist to build the 3D model, and animation, texture stuff. Blender has a more clear user interface than Maya in my opinion. -Eli

18.How can the course be improved for next year?

   Honestly this course was the highlight of my time at UCSD. I wouldn’t change a thing. -Dan

Project Spec 4/5/14

Project Description

  • • Type of game: 3rd person 2v2 arena death match with tower building
  • • Goals: gather enough resources to buy a super weapon to destroy the enemy base
  • • Unique: mix and match different active abilities by wearing different pieces of equipment, using resources to buy/upgrade towers and equipment
  • • Must Have:
  •  • hero combat melee/ranged/magic
  •  • equipment with different abilities
  •  • basic gui for items and construction
  •  • bases
  •  • map/level
  •  • keyboard/mouse input
  •  • sound
  •  • particle effects
  •  • jump
  • • Would be nice:
  •  • resources
  •  • tower/factory building
  •  • more user-friendly gui for items and construction
  •   • drag and drop
  •   • portrait for each equipment
  •  • xbox controller input
  • • Cool if ahead of schedule:
  •  • different types of super weapons
  •  • more equipment/abilities
  •  • more buildings
  •  • different types of resources
  •  • shadows
  •  • depth of view
  •  • oculus rift integretion

Group Management

  • • Roles
  •  • No roles, everyone does everything
  • • Decisions
  •  • by group consensus
  • • Communication
  •  • facebook, skype, text, group meetings in lab
  • • off schedule
  •  • found out by checking road map
  •  • deal with by adding more coding sessions
  • • status reports
  •  • handled by Daniel
  • • Website
  •  • created and handled by Daniel

Project Development

  • • Development Roles
  •  • Graphics
  •   • Leixun
  •   • Dan
  •  • Art
  •   • Yeli
  •  • Networking
  •   • Thomas
  •   • Erik
  •  • Gameplay
  •   • Kevin
  •   • Sebastian
  • • Tools
  •  • Github
  •  • Dropbox
  •  • Visual Studios
  •  • Blender
  •  • Maya
  • • Testing
  •  • Unit testing
  •  • Alpha testers
  • • Documentation
  •  • Posted to webpage
  • • Project Schedule
  •  • Week 1
  •   • Project Spec
  •   • Website
  •   • Simple Client-Server
  •   • Third-Pperson Camera Movement
  •  • Week 2
  •   • Character Models
  •   • Multiple Client/Server
  •   • Basic Game States
  •  • Week 3
  •   • Map/Level
  •   • Physics
  •   • Collision Detection
  •  • Week 4
  •   • Animation
  •   • Particle Effects
  •   • Combat Gameplay Logic
  •  • Week 5
  •   • Animation Continued
  •   • Particle Effects Continued
  •   • Combat Gameplay Logic Continued
  •  • Week 6
  •   • Audio
  •   • Equipment System
  •   • Towers/Factory Model
  •   • Resource Point Model
  •  • Week 7
  •   • Resource Integration
  •   • Tower/Factory Integration
  •  • Week 8
  •   • Add More Equipment/Abilities
  •   • Alpha Testing
  •   • Graphics Refinement
  •   • Debugging
  •  • Week 9
  •   • Alpha Testing
  •   • More Graphics Stuffs
  •   • Debugging
  •  • Week 10
  •   • Beta Testing
  •   • Debugging
  •   • Beer


Team Updates

Week 9

Week 8Week 7

Week 6Week 5

Week 4Week 3

Week 2Week 1

Week 9

  •  Goals Accomplished:
  •   • Tower logic
  •   • Billboard animation
  •   • Random lightning
  •   • Platform fading
  •   • Power boosts
  •   • Added 3D sounds (lots of them)
  •   • Added/adjusted particle effects
  •   • Elevators & teleporters
  •   • Finished all the models and animations *some UI elements
  •   • Connected Health bar to player health
  •   • Display kill and death count
  •   • Added game states for additional UI Elements
  •  Problems Encountered:
  •   • Week 10 is tough
  •   • Need a way to win
  •  Goals For Next Week:
  •   • Eat pizza
  •   • Drink Beer
  •   • Weep quietly to myself in the corner
  •   • Not having finals, lol -Erik
  •   • Not ever open window.ccp again
  •   • Replace everyone's desktop background with a scrolling gif of window.cpp - Dan

Week 8

  •  Goals Accomplished:
  •   • Optimized animation speed
  •   • Created animation controller
  •   • Fixed camera above ground
  •   • Implemented fog
  •   • Fixed sprint mostly
  •   • Refactored Particle System and started creating effect library
  •   • Refactored Sound class (added music, 3D sound framework, channel controls, etc)
  •   • Added Gamepad support
  •   • Finished all UI graphic elements
  •   • Added two more weapon models
  •   • Improved main menu functionality
  •   • Switched frames for menus and UI
  •   • Fully integrated game state class
  •   • Created backup solution to game state class
  •   • Fixed some projectile bugs
  •   • Fixed some networking bugs
  •   • Planned out how to do towers
  •   • Added floating platforms
  •   • Created particle effects for towers
  •  Problems Encountered:
  •   • Integrating gamestate into scene
  •  Goals For Next Week:
  •   • Make stuff look better
  •   • Implement towers and homing projectiles
  •   • Implement resource system
  •   • Add controls so players can choose what attributes to upgrade
  •   • Display screen when respawning, have player click button to respawn
  •   • Add floating platforms and obstacles
  •   • Place particle effects in meaningful places
  •   • Get 3D sound working for explosions and attacks
  •   • Flush out settings menu screen
  •   • Finish animation for last two character models
  •   • Add in game chat
  •   • Develop game play features interface
  •   • Get game demo ready!

Week 7

  •  Goals Accomplished:
  •   • Tower model loaded
  •   • Terrain tessellated
  •   • Merged items/sprint/jump/respawn with main branch and client/server branch
  •   • Added texture support to UI element shaders
  •   • Created Menus
  •   • Cleaned up client side game loop code for better communication
  •   • Moved server connection to after menu selections, more robust
  •   • Particle Effect Timing improvements
  •   • HUGE FPS improvment! 30fps gain!
  •  Problems Encountered:
  •   • Model loader too mean, requires all models to have bones and at least a blank animation
  •   • Yo merging is hard
  •   • Network communication bug, packets being dropped, causing issue with projectiles
  •   • Network bug preventing progression of game development
  •  Goals For Next Week:
  •   • Build tower logic
  •   • Work on the towers
  •   • Integrate class selection/and other stuff to client/server
  •   • Improve particle system
  •   • Correct network issues
  •   • Add gamestate class

Week 6

  •  Goals Accomplished:
  •   • Fixed client crash problem
  •   • Players have choice between melee and ranged player, changes base equipment based on choice, choice made on cmd prompt
  •   • Multi jump worksPlayers can respawn ( I think Thomas implemented this as well though)
  •   • I think all item slots on player are created
  •   • Projectiles supposedly work
  •   • Particle System Implemented
  •  Problems Encountered:
  •   • glutTimerFunc is not what we expected it was, causing data loss.
  •   • Inheritance issue still there, haven't worked on it
  •  Goals For Next Week:
  •   • Keep merging
  •   • Solve tower model loading issue
  •   • Fix inheritance issue, draw an item inworld and pick it up
  •   • Merge all my new stuff into main repo
  •   • Come up with basic resource system to purchase items, use kill count?
  •   • Come up with a system to create item attributes/load them into game
  •   • Give Erik things to do to help people get the merging done

Week 5

  •  Goals Accomplished:
  •   • Basic shadow implemented
  •   • Sprinting works
  •   • Multi jump works
  •   • More integration with items, more item types, boots, etc
  •   • Game state framework implemented
  •   • GLUT window management library replaced with freeglut
  •   • Added 2D text drawing and UI class
  •  Problems Encountered:
  •   • Shadow still need antialiasing
  •   • Weird item inheritance issue if items inherit from out mesh class
  •  Goals For Next Week:
  •   • Implement particle effects
  •   • Fix inheritance issue, draw an item inworld and pick it up
  •   • More item integratione
  •   • Player respawning
  •   • UI and menu integration

Week 4

  •  Goals Accomplished:
  •   • Assimp animation supported for DAE format
  •   • Texture map loaded
  •   • Debugging Projectiles (only hits player once now, despawns once it reaches a certain distance from origin)
  •   • A very simple item reward for kill implemented, shot range and shot speed increased with kill count
  •   • Merged attack/projectile code with main branch
  •   • 4 clients can communicate with a server and see each other’s movements
  •   • Implemented billboarding system
  •   • Implemented debug/developer pop-up menu
  •  Problems Encountered:
  •   • Animation for MD5 is still buggy with ASSIMP loader
  •     • Solution, use assimp loader for everything but MD5 files
  •   • Network code achieves bare minimum functionality
  •   • Particle effect system not yet working correctly
  •  Goals For Next Week:
  •   • Merge things together
  •     • break up main branch into server/client
  •       • current client/server based on old version of main
  •   • Keep working on item system, maybe add a button to spawn an item and have player walk over to pick up
  •   • Figure out the item hierarchy/inheritance
  •   • Implement game events over network
  •   • Finish particle effect system
  •   • Expand map
  •   • Move model loading to JSON map files

Week 3

  •  Goals Accomplished:
  •   • Added support for md5 format animation using new loader code
  •   • Made changes to mesh class to include bone information needed for ASSIMP animations
  •   • Found over 200 free model files online for use in the game
  •   • Json encoding/decoding
  •   • Basic projectile spawning, movement, and hit detection
  •   • Refactor network code to use TCP
  •  Problems Encountered:
  •   • Animation doesn’t look correct when loaded with ASSIMP. Might be caused by conversion mismatch from ASSIMP matrix class to glm.
  •   • Spawning a projectile and giving it a direction to move in according to camera position is difficult to figure out.
  •  Goals For Next Week:
  •   • Get animation loaded with ASSIMP
  •   • Fix bugs with projectiles. Create system to alter melee and projectile properties
  •   • Get multiple game clients connecting to and transferring data to and from a server
  •   • Create billboarding system
  •   • Leverage billboarding system to create particle effect system
  •   • Leverage billboarding system and UI libraries to create menu system and UI
  •   • Begin layout of world map

Week 2

A lot of work has been done this week. We had network connected, basic collision added, monkey model designed and loaded into the game, sound integrated, config file setup, and basic melee attack in place.

The network currently only connects one player to the server. The server does all the physics simulation and sends all the object world matrices to client at the end of each simulation. The only job for the client is to display the objects according to the matrices and send player keystroke to the server.

Collision detection is done with AABBs and the system basically checks collision of each pair of objects except the collisions among stationary objects.

Our first monkey model was created with a walking animation. We loaded the model into the game but we have to postpone animating the model until next week since we are still learning how animations are stored when using the Assimp library.

Sound has been added to the game using the FMOD library. When the player jumps by pressing the space key a sound is played and sounds absolutely awesome! Callbacks were also added for the left, right, and middle mouse buttons. Each of these buttons plays a unique sound.

We also implemented the config library from the class site and we are using it to set the screen resolution, fullscreen mode, and network connection details.

An attack mechanism has been implemented that currently pushes other players back when the attack “hits.”

Our goals for the next week is add the ability to have multiple players connected to the server, have our monkey model animated in game, implement a menu screen/UI, create a launcher that allows the user to change game settings, and merge all forked repositories back into the master branch.

Week 1

Logistics, Planning, Brainstorming, various other administrative tasks.

Individual Updates

Week 9Week 8

Week 7Week 6

Week 5Week 4

Week 3Week 2

Week 9


Daniel

  •  This Weeks Goals:
  •   • Add floating platforms and obstacles
  •   • Place particle effects in meaningful places
  •   • Get 3D sound working for explosions and attacks
  •   • Assist with respawn screen/prompt
  •   • Flush out settings menu screen
  •   • Get game demo ready
  •  Accomplishments this week:
  •   • Added 3D sounds (lots of them)
  •   • Added new particle effects
  •   • Helped with network debug
  •   • Helped with game balance
  •  Plans for next week:
  •   • Help finish map layout
  •   • Build game in release mode
  •   • Get game demo ready
  •  Morale: Great!
  •   

Erik

  •  Concrete Goals:
  •   • Umm...get network in stable state and work on misc things
  •  Accomplished Goals:
  •   • Network is stable (apparently)
  •   • Revamped powerups
  •   • Added basic respawn mechanic
  •   • Sending lots more triggers for things from server to client
  •   • Various bug fixes
  •  Plans for next week:
  •   • What next week?
  •  Morale:

Eli

  •  Accomplished:
  •   • Finished all the models and animations *some UI elements
  •  Goals for next week:
  •   • Add more UI elements and a painting for starting page to introduce the storyline
  •  Morale: Tired

Kevin

  •  Concrete goals:
  •   • Work on game end state
  •  Accomplished Goals:
  •   • Platform fading
  •   • Power boosts
  •  Problems:
  •   • Week 10 is tough
  •  Next Week Goals:
  •   • Work on game end state
  •  Morale: Tired

Leixun

  •  Goals:
  •   • Make things look better
  •  Accomplished Goals:
  •   • Implemented tower logic
  •   • Added trampoline
  •   • Animated billboard
  •   • Added random lightning
  •  Problems encountered:
  •   • None
  •  Goal for next week:
  •   • Pray for a smooth demo
  •  Morale: Nervous

Sebastian

  •  Concrete Goals:
  •   • Develop game feature interfaces
  •  Accomplished Goals:
  •   • Connected Health bar to player health
  •   • Display kill and death count
  •   • Improved UI code
  •   • Added game states and UI Elements
  •  Next Week Goals:
  •   • Prepare for Summer
  •  Morale: Nervouscited

Thomas

  •  Accomplished:
  •   • Verticle and horizontal moving platforms working
  •   • Teleporter working
  •  Problems:
  •   • END 100A/L is hard!
  •  Goals for next week:
  •   • Finish map layout
  •  Morale: I smell like shaving cream.

Week 8


Daniel

  •  This Weeks Goals:
  •   • Make the Particle System way more awesome
  •   • Assist with networking issues
  •   • Make sounds 3D objects (maybe)
  •  Accomplishments this week:
  •   • Refactored Particle System and started creating effect library
  •   • Refactored Sound class (added music, 3D sound framework, channel controls, ect)
  •   • Added Gamepad support
  •   • Added floating platforms
  •   • Created particle effects for towers
  •  Plans for next week:
  •   • Add floating platforms and obstacles
  •   • Place particle effects in meaningful places
  •   • Get 3D sound working for explosions and attacks
  •   • Assist with respawn screen/prompt
  •   • Flush out settings menu screen
  •   • Get game demo ready
  •  Morale: Worried but excited
  •   

Erik

  •  Concrete Goals:
  •   • Refactor networking to accommodate using a stream for server->client communication
  •   • Support Thomas in integrating his code
  •  Accomplished Goals:
  •   • Server->client communication now done via stream vs previous buffer method
  •   • Created backup communication protocol
  •  Plans for next week:
  •   • Support any part of the game that needs it
  •   • Further stabilize network
  •  Morale: Nervous

Eli

  •  Accomplished:
  •   • Finished all UI elements, add two more weapons
  •  Goals for next week:
  •   • Last two characters animation
  •  Morale: Good

Kevin

  •  Concrete goals:
  •   • Work on the towers
  •  Accomplished Goals:
  •   • Fixed sprint mostly
  •  Problems:
  •   • Integrating gamestate into scene
  •  Next Week Goals:
  •   • Implement towers and homing projectiles
  •   • Implement resource system
  •   • Add controls so players can choose what attributes to upgrade
  •   • Display screen when respawning, have player click button to respawn
  •  Morale: Thats alot of stuff to do

Leixun

  •  Goals:
  •   • Help implement tower logic
  •  Accomplished Goals:
  •   • Optimized mesh class to run faster
  •   • Created animation controller
  •   • Fixed camera above ground
  •   • Implemented fog
  •  Problems encountered:
  •   • None
  •  Goal for next week:
  •   • Make things look better
  •  Morale: Excited

Sebastian

  •  Concrete Goals:
  •   • Implement Other UI features
  •   • Help clean up Integration Issues
  •  Accomplished Goals:
  •   • Improved main menu functionality
  •   • Switched frames for menus and UI
  •  Next Week Goals:
  •   • In game messages
  •   • Develop game play features interface
  •  Morale: Good

Thomas

  •  Accomplished:
  •   • Fully integrated game state class
  •   • Fixed some projectile bugs
  •   • Fixed some networking bugs
  •   • Planned out how to do towers
  •  Problems:
  •   • Need to integrate graphics
  •  Goals for next week:
  •   • Integrate graphics
  •   • More game logic
  •  Morale: Okay

Week 7


Daniel

  •  This Weeks Goals:
  •   • Finish adding Menus
  •   • Clean up UI with frames
  •   • Finish moving everything to Client/Server branch
  •  Accomplishments this week:
  •   • Added optional texture support to the basic_flat shaders
  •   • Added frames to UI elements
  •   • Created framework for Menus
  •   • Added handling for menu input
  •   • Moved Menus, Particle System, and UI to server/client branch
  •   • Restructured game loop to better improve client/server communication
  •   • Moved particle system timing inside class
  •   • Moved client connection code to provide for better user experience
  •  Plans for next week:
  •   • Make the Particle System way more awesome
  •   • Assist with networking issues
  •   • Make sounds 3D objects (maybe)
  •  Morale: Pretty Good
  •   

Erik

  •  Concrete Goals:
  •   • Try to help with integration (not very concrete)
  •  Accomplished Goals:
  •   • Game state object partially integrated
  •  Problems encountered:
  •   • Strings sent between server and client only half arrive; the front part gets randomly cut off. Testing a variety of changes to the network code to see where the problem lays.
  •  Plans for next week:
  •   • Get the strings to send properly, possibly add in support for clients reconnecting
  •  Morale: Not Bad

Eli

  •  Accomplished:
  •   • Finished all the animation for both characters
  •  Problems:
  •   • The animation files cannot correctly load to the game
  •  Goals for next week:
  •   • Last character mesh and rigging, also animated
  •  Morale: Good

Kevin

  •  Concrete goals:
  •   • Work on the towers
  •   • Integrate class selection/and other stuff to client/server
  •  Accomplished Goals:
  •   • Merged my branch with main branch and client/server branch
  •  Problems:
  •   • Yo merging is hard
  •  Next Week Goals:
  •   • Work on the towers
  •   • Integrate class selection/and other stuff to client/server
  •  Morale: Good

Leixun

  •  Goals:
  •   • Help merging stuff
  •  Accomplished Goals:
  •   • Got tower model loaded. Got terrain tessellated
  •  Problems encountered:
  •   • Our model loader is not versatile enough to load any model successfully on the first try. Eli has to make minor changes on models that should already work to cope with the loader's style
  •  Goal for next week:
  •   • Help building tower logic.
  •  Morale: It's week 7 already?!!

Sebastian

  •  Concrete Goals:
  •   • Help Integrate branches of game
  •  Accomplished Goals:
  •   • Set up Main menu and Pause Menu in Client side
  •   • Assisted in integration of main branch and client/server
  •  Next Week Goals:
  •   • Implement other UI features
  •   • Help clean up Integration Issues
  •  Morale: Great

Thomas

  •  Accomplished:
  •   • Game state almost integrated
  •  Problems:
  •   • bug with server client networking prevented me from working on gameplay logic for whole week because I could not get my gameState fully working As Erik stated, when I send a string from server, the client is not getting all of it, it gets cut off, and the cut off point is not consistent.
  •  Goals for next week:
  •   • fix bug, ask for help if needed, can't proceed without fixing bug with erik
  •  Morale: ?

Week 6


Daniel

  •  This Weeks Goals:
  •   • Finish particle system
  •   • Assist with menu and UI integration
  •  Accomplishments this week:
  •   • Particle System Implemented (Thanks Leixun for the VAO help!)
  •   • Texture, color, and shade selectible for each particle
  •  Plans for next week:
  •   • Finish adding Menus
  •   • Clean up UI with frames
  •   • Finish moving everything to Client/Server branch
  •  Morale: Okay
  •   

Erik

  •  Accomplished Goals:
  •   • Migrate projectiles into networked version. Projectiles appear for other players and start and stop when players press the appropriate mouse buttons.
  •  Problems encountered:
  •   • Needed to send more data to other clients, but game state object Thomas is working on solves this.
  •  Goal for next week:
  •   • Help whoever needs it regarding any integration that's left or any new features.
  •  Morale: Great

Eli

  •  Accomplished:
  •   • Second tower model and third character model meshes rigging for the model
  •  Problems:
  •   • Need animation for the character
  •  Goals for next week:
  •   • Trees and rocks mesh
  •  Morale: Good

Kevin

  •  Concrete goals:
  •   • Merge all my new stuff into main repo
  •   • Come up with basic resource system to purchase items, use kill count?
  •   • Come up with a system to create item attributes/load them into game
  •  Accomplished Goals:
  •   • Players have choice between melee and ranged player, changes base equipment based on choice, choice made on cmd prompt
  •   • Players can respawn ( I think Thomas implemented this as well though)
  •   • I think all item slots on player are created
  •  Problems:
  •   • Inheritance issue still there, haven't worked on it
  •   • Not enough time to work on it last week
  •  Next Week Goals:
  •   • Fix inheritance issue, draw an item inworld and pick it up
  •   • Merge all my new stuff into main repo
  •   • Come up with basic resource system to purchase items, use kill count?
  •   • Come up with a system to create item attributes/load them into game
  •  Morale: Good

Leixun

  •  Goals:
  •   • Help merging stuff
  •  Accomplished Goals:
  •   • Fixed jump problem over network. limit the speed of server so it doesn't crash the client with all the packages.
  •  Problems encountered:
  •   • The function used to update client upon server message is not being called at the frequency we wanted. This causes the server to duplicate some of the user inputs.
  •  Goal for next week:
  •   • Resolve tower model loading issue & keep merging stuff.
  •  Morale: Good

Sebastian

  •  Concrete Goals:
  •   • UI reacting to game events
  •   • Merge UI to client/server branches
  •  Accomplished Goals:
  •   • Overheat bar (prevent from shooting if spamming shoot button)
  •   • Life Bar
  •  Reasons for Unaccomplished Goals:
  •   • Lack of understanding of server/client code
  •  Next Week Goals:
  •   • Help integrate branches of game
  •  Morale: Good

Thomas

  •  Accomplished:
  •   • Integrated my gameState into client/server branch, added camera matrix passing from server to client so that when clients see each other shoot, they can see from what direction
  •  Problems:
  •   • Bugs, bugs, and more bugs
  •  Goals for next week:
  •   • Get rid of bugs, also adding more objectives to game, need to add a point system
  •  Morale: Sun God

Week 5


Daniel

  •  This Weeks Goals:
  •   • Move all model loading to JSON file
  •   • Finish Particle system
  •   • Implement game state framework
  •   • Expand world
  •  Accomplishments this week:
  •   • Game state framework implemented
  •   • Replaced GLUT library with freeglut
  •   • Added 2D text drawing for UI and asset loading
  •   • Experimented with VBOs for particle system
  •  Reason for Unaccomplished Goals:
  •   • Model loading immature, waste of time to move to JSON file
  •   • Busy week (midterms, IBM Cal-IT site visit, etc.)
  •  Plans for next week:
  •   • Finish particle system
  •   • Assist with menu and UI integration
  •  Morale: Meh
  •   

Erik

  •  Goals:
  •   • Create updated server and client using latest code
  •  Accomplished Goals:
  •   • Multiple clients can move in a common game world with the server handling the entire simulation
  •  Problems encountered:
  •   • Projectiles aren't working yet...need to decide best way to implement...simulate movement of projectiles on client vs simulate on server and send positions for every projectile to clients
  •  Goal for next week:
  •   • Get projectiles working with networked game and by extension more generic game events like health status, victory, etc
  •  Morale: Pretty good

Eli

  •  Accomplished:
  •   • One tower model and one character model meshes and textures finished
  •  Problems:
  •   • Need rigging and animation for the character
  •  Goals for next week:
  •   • Second tower and animate the character
  •  Morale: Good

Kevin

  •  Concrete goals:
  •   • More Item integration with player abilities. (figure out how to change movespeed/sprintspeed with boots item. increased health with armor)
  •   • give players preset items when spawning in, let them choose which presets they want
  •   • player respawning?
  •  Accomplished Goals:
  •   • sprinting works
  •   • multi jump works
  •   • more integration with items, more item types, boots,
  •  Reasons for Unaccomplished Goals:
  •   • weird item inheritance issue if items inherit from out mesh class,
  •  Next Week Goals:
  •   • fix inheritance issue, draw an item inworld and pick it up
  •   • more item integration
  •   • player respawning
  •  Morale: Good

Leixun

  •  Goals:
  •   • Merge code and do particle effects
  •  Accomplished Goals:
  •   • Basic shadow
  •  Problems encountered:
  •   • First time shadow implementation, wasted lots of time debugging
  •  Goal for next week:
  •   • Particle effects
  •  Morale: Good

Sebastian

  •  Concrete Goals:
  •   • UI
  •  Accomplished Goals:
  •   • UI elements(e.g life bar) not connected to game play yet
  •  Reasons for Unaccomplished Goals:
  •   • IEEE
  •   • Midterm
  •  Next Week Goals:
  •   • UI display real time events from game(life loss)
  •  Morale: Good

Thomas

  •  Goal:
  •   • Basic Game Logic
  •  Accomplished:
  •   • Respawning, bound a key to teleport the player to a set position that would be a respawn point, now need to implement player death that would call that function, updated gameState to hold player states like health or isDead
  •  Problems:
  •   • Need projectiles and combat in latest version to integrate
  •  Goals for next week:
  •   • More Game Logic
  •  Morale: Severe Depression

Week 4


Daniel

  •  This Weeks Goals:
  •   • Correct issues with ASSIMP animations
  •   • Create billboarding system
  •   • Leverage billboarding system to create partial effect system
  •   • Begin laying out world map
  •  Accomplishments this week:
  •   • Issues with ASSIMP animations corrected (Issues last week due to bad MD5 model. DAE model files animate correctly)
  •   • Created JSON parsing system for holding all map information (Currently Shaders, Textures, and Audio files are loaded via this system)
  •   • Created billboarding system
  •   • Began creating particle system based on billboarding system
  •   • Added middle mouse button debug/developer pop-up menu
  •  Reason for Unaccomplished Goals:
  •   • Particle system not working correctly yet. Need to debug, shouldn't be an issue.
  •  Plans for next week:
  •   • Move all model loading to new JSON file based system
  •   • Finish Particle system
  •   • Implement game state framework
  •   • Expand world
  •  Morale: High
  •   

Erik

  •  Goal:
  •   • Get multiple clients to run in sync on one server.
  •  Accomplished:
  •   • Just that, multiple clients can each control an object that appears to move to the rest of the clients. Supports 4 players.
  •  Problems:
  •   • Goal accomplished, but the code could use some cleaning up. If a client disconnects, the server breaks. Some more testing of corner cases needed.
  •  Goals for Next Week:
  •   • Attach to other team members to provide help where needed. When not busy, attempt some cleaning up of network code. Provide feedback for implementing game events over network.
  •  Morale: Missed our team work session last weekend and Tuesday, but worked with Leixun most of Wednesday and goal was still reached, so pretty good.

Eli

  •  Next Week Goals:
  •   • Create second character model, the chipmunk
  •  Accomplished Goals:
  •   • Created concept arts for two models and two towers
  •  Reasons for Unaccomplished Goals:
  •   • Digest feedback from the concept arts before actually build the models
  •  Morale: Good

Kevin

  •  Concrete goals:
  •   • Get item system established/item interaction with player abilities and attacks
  •  Accomplished Goals:
  •   • Debugging Projectiles (only hits player once now, despawns once it reaches a certain distance from origin)
  •   • A very simple item reward for kill implemented, shot range and shot speed increased with kill count
  •   • Merged with main branch and sent pull request, main branch has all my work except item system
  •  Reasons for Unaccomplished Goals:
  •   • Very busy week, 2 days were completely occupied
  •  Next Week Goals:
  •   • Keep working on item system, maybe add a button to spawn an item and have player walk over to pick up
  •   • Figure out the item heirarchy/inheritance
  •  Morale: Good

Leixun

  •  Goals:
  •   • Get animation running
  •  Accomplished Goals:
  •   • Assimp runs dae animatiion. Got texture map loaded and physics adjusted for the map.
  •  Problems encountered:
  •   • Assimp animation for md5 format is still buggy. Thus we won't use that format.
  •  Goal for next week:
  •   • Assist Daniel with particle effect. Merge what we got so far.
  •  Morale: Good

Sebastian

  •  Concrete Goals:
  •   • Functioning Main menu
  •   • UI
  •  Accomplished Goals:
  •   • Functioning basic Main menu
  •  Reasons for Unaccomplished Goals:
  •   • GUI library kept breaking project
  •   • School
  •  Next Week Goals:
  •   • Flush out Menu features
  •   • UI in game pause/settings menu
  •  Morale: Good

Thomas

  •  Accomplished:
  •   • Json Serialization is done. Made tower, player, projectile, base classes that extend object class.
  •  Problem:
  •   • However, too much analysis paralysis. Thinking about binary serialization for serious optimization, but I'll save that for if we have time.
  •  BIG Problem:
  •   • Dan wants me to write weekly updates in this format instead of big paragraph.
  •  Goal:
  •   • Now have to start thinking about bigger picture, how keystrokes cause events that change game state. I got a lot of thinking to work on.
  •  Morale: Good

Week 3


Daniel

  •  This Weeks Goals:
  •   • Add support for animations to the model class
  •   • Assist with UI development
  •   • Assist with launcher development
  •  Accomplishments this week:
  •   • Refactored Mesh class to include ASSIMP animation information when loading models
  •   • Found over 200 free models online for use in the game
  •  Reason for Unaccomplished Goals:
  •   • Lord of vertex transformations! Come to us in our motionlessness. We offer you these .obj model files. Take them and cast your movement upon us. For the land of ASSIMP animations is dark and full of terrors.
  •  Plans for next week:
  •   • Correct issues with ASSIMP animations
  •   • Create billboarding system
  •   • Leverage billboarding system to create partial effect system
  •   • Begin laying out world map
  •  Morale: Very High
  •   

Erik

  •  Goal:
  •   • Get multiple clients running with a server
  •  Accomplished:
  •   • Rewriting server and client to use TCP instead of UDP
  •  Reasons for Unaccomplished Goal:
  •   • As per professor recommendation and group consensus, our network code will use TCP instead of UDP so we don't need to implement any extra synchronization code. This meant that I basically had to redo last week's work this week, but I also added some extra functionality with the boost functions.
  •  Goals for Next Week:
  •   • Finally get multiple clients working by the end of our work day on Saturday, by next week's meeting smooth out any problems that come up with the network operation.
  •  Morale: Good

Eli

  •  Next Week Goals:
  •   • Create second character model, the chipmunk
  •   • Create building model (tower)
  •  Accomplished Goals:
  •   • One sword like weapon model finished
  •   • One gun like weapon model finished
  •   • Transformed to .md5 format for animation
  •  Reasons for Unaccomplished Goals:
  •   • Learning blender animation took a while
  •  Morale: Good

Kevin

  •  Concrete goals:
  •   • Get projectile attack detection working completely
  •  Accomplished Goals:
  •   • Projectile spawning works and fires in a direction
  •   • Projectile hits register with player
  •  Reasons for Unaccomplished Goals:
  •   • Spawning the projectile according to camera direction is hard
  •  Next Week Goals:
  •   • Debug projectile
  •   • Figure out a system to modify basic attacks
  •  Morale: Good

Leixun

  •  Goals:
  •   • Get animation running
  •  Accomplished Goals:
  •   • Loaded md5 animation without Assimp.
  •  Problems encountered:
  •   • Current loader only loads md5 format. Assimp library doesn't load animation files correctly.
  •  Goal for next week:
  •   • Get Assimp to run animation
  •  Morale: Good

Sebastian

  •  Concrete Goals:
  •   • Get a functioning Main menu that at least launches game and allows player to exit to it once already inside "game"
  •  Accomplished Goals:
  •   • Selected a set of GUI libraries
  •   • Build libraries and are ready to used
  •  Reasons for Unaccomplished Goals:
  •   • Selection process took longer than expected
  •   • Error in one of the files kept resulting in unexpected build errors
  •  Next Week Goals:
  •   • Functioning Main menu
  •   • UI
  •  Morale: Good

Thomas

   Got json encoding and decoding working using rapidjson. Figured out how to encode a matrix4 in json. Simply have, "matrix" : [matrix[0][0], matrix[0][1], matrix[0][2], ... matrix[3][3]]. Vec4 is similar. Any string variable will be stored as string. Any floats or ints will be turned into string, and parsed back into float and int later. At this point we need to start getting the multiple clients up and running, and Leixun said all he needs is position matrix of all players sent over network to start working on it.

Week 2


Daniel

  •  Accomplishments this week:
  •   • Integrated the ASSIMP library with code base for model importing
  •   • Created Mesh class for loading/storing/drawing model files
  •   • Moved Texture Loading into its own class
  •   • Created generic fragment and vertex shaders for models
  •   • Added configuration file support with the code supplied on the class website
  •   • Added a sound class for audio support using the FMOD library
  •   • Added additional input callbacks for showcasing sound class
  •  Plans for next week:
  •   • Add support for animations to the model class
  •   • Assist with UI development
  •   • Assist with launcher development
  •  Morale: Very High
  •   

Erik

  •  Concrete Goals:
  •   • Get multiple clients working with a server
  •  Accomplished Goals:
  •   • Get one client working with a server
  •  Reasons for Unaccomplished Goals:
  •   • Learning async boost library took a while. Client and Server classes are now created to handle network operations
  •  Next Week Goals:
  •   • Get 4 clients connected to server and have the simulation synced between all of them
  •  Morale: Great!

Eli

  •  Accomplishments this week:
  •   • Created Monkey Model
  •   • Created Texture for monkey model
  •   • Created walking animation for monkey model
  •  Plans for next week:
  •   • Create additional Models (Towers, Trees, and Rocks)
  •   • Create additional animations (attack, jump, etc) for Monkey model
  •  Morale: Good

Kevin

  •  Concrete goals:
  •   • get melee attack detection working
  •   • add player collision
  •  Accomplished Goals:
  •   • player collision works
  •   • melee attack working w/ bugs
  •  Reasons for Unaccomplished Goals:
  •   • Learning the positioning system used took a while
  •   • Tried 2 ways to do knockback
  •  Next Week Goals:
  •   • debug melee/add diagonal attacks
  •   • work on projectile attack
  •  Morale: good

Leixun

   Added simple AABB collision. Was also trying to apply BSP but it seems to be immature to do at this stage since there are still other object types to implement that may change the way stuff collide with each other. So for now we are just gonna use the simple collision. Goal for the next week is to get animation to work. At least have a walking monkey instead of a cube.

Sebastian

  •  Concrete goals:
  •   • Get sound incorporated into game
  •   • Get a main and start menu going
  •  Accomplished Goals:
  •   • Sound when character jump
  •  Reasons for Unaccomplished Goals:
  •   • The original method for sound was not working was scraped
  •   • Lack of understanding about how states should be handled
  •   • Life
  •  Next Week Goals:
  •   • Get a functioning Main menu that at least launches game and allows player to exit to it once already inside “game”
  •  Morale: Alright

Thomas

   Finished up gameState class. The constructor takes in a gameObject such as tower, player, or arrrow in flight. The class has a function that just returns the gameState that only has objects that have changed or was added, for optimization so we don't have to send every object in game over and over again. Going to try and figure out how to send an object over network with boost serialization and boost asio.

Contact

Want to tell us how awesome (or terrible) we are doing? Drop us a line!