CSE125 SPRING 2015 GROUP 4
Hubert Hsiung
Yuhong Hu
Wesley Lau
Michael Mullen
Jesse Qin
Brandon Ustaris
David Wang
PROJECT SPEC
Project (Game) Description
- Type
- Player vs. Player fantasy game where each team of mechs (vampires/crusaders) is given a certain objective to complete in order to win each round.
- Goals
- Attacking team objective: Have most kills before time is up or kill all members of the other team while all shrines are in possession
- Defending team objective: Have most kills before time is up without being completely slain during enemy team all-shrine possession
- Unique aspects
- Daytime/nighttime will apply certain effects to each team. Daytime: extra bonuses for crusaders and persistent health diminishing for vampires. Nighttime: extra bonuses for vampires and restricted vision range for crusaders
- During a night-round, crusaders will be attacking with all shrines initially belonging to the vampires; if all shrines are in possession of the crusaders, vampires cannot respawn
- During a day-round, the vampires will be attacking with all shrines initially belonging to the crusaders; if all shrines are in possession of the vampires, crusaders cannot respawn
- 4 rounds of day/night rounds, if tie, 5th round will be a twilight deathmatch where the only objective is most kills within the time limit
- Villagers can be eaten by vampires for certain buffs
- Features
-
REQUIRED:
- PvP Combat, multiplayer over a network
- Procedurally generated buildings
- Light sources
- Shaders
- Animation
- Parsers
- Culling
- Basic models and art
- Basic sounds
- Basic music
- Health and damage system
- Logic for day/night rounds
- Unique features and game objective implemented
-
WOULD BE NICE:
- Advanced graphics and rendering
- Fancy splash art
- Pretty UI/typograhpy/layout
- Advanced/different maps
- Slight player customization (different color armor etc)
- Additional spontaneous roles during the game
- Optimization
-
STRETCH:
- Custom music
- Easter Eggs
- Mini-bosses for bonuses during rounds
- Some form of in-game communication
- AI for towers/shrines/villagers
- Detail in map (food on tables, bunnies in grass etc.)
- Some UCSD reference inserted like a giant Voelker miniboss
Group Management
- Management Roles
- Wesley Lau - administrator for the Trello board
- Decisions
- Decisions will be make on a consensus basis. If any contention occurs, the majority opinion will persist.
- Communication
- Facebook chat/group
- Lab meetings
- Trello organization board
- Milestone tracking
- Milestones by week will be set using a Google doc for scheduling
- Each week, the Trello board will be populated with scheduled tasks for that week to track any schedule deficiencies
- Any schedule-slips will be reallocated to future weeks and evaluated to prevent future slips
- Weekly reports
- Group reports will be generated in a team meeting in the lab
- Individual reports will be written by each respective person before the group report is created
- Jesse Qin - compiles and pushes all reports to the website
Project Development
- Development Roles
- GAMEPLAY: David Wang [lead], entire team
- GRAPHICS: Hubert Hsiung, Wesley Lau, Michael Mullen
- NETWORK: Yuhong Hu, Jesse Qin, Brandon Ustaris
- GAME LOGIC: Yuhung Hu, Jesse Qin, Brandon Ustaris
- ART: David Wang
- WEB: Jesse Qin
- Tools
- Maya
- Blender
- Visual Studio
- Photoshop
- Gimp
- OpenGL
- XCode
- Google Drive
- Trello
- Dropbox
- Github
- Garageband
- Reaper
- Audacity
- Testing
- Unit tests for back-end (especially parsers)
- Toward the end, play-throughs of the video game
- User testing with people outside of the team
- Shader testing
- Server testing
- Documentation
- Documentation will be initially recorded in a Google Drive
- Official documentation will be on GitHub as well as the website
Project Schedule
- High Level
-
Week 2 Milestone
- All graphics using unified classes
- Model animation planning setup
- Successful packet communication between basic client/server
-
Week 3 Milestone
- Connect back-end and front-end on the same computer
-
Week 4 Milestone
- Connect back-end and front-end over a network
-
Week 6 Milestone
- Baseline (core features) back-end game loop and client/server complete
- Baseline font-end graphics complete
-
Week 7 Milestone (BIG milestone)
- Baseline game complete and playable over a network
-
Week 8+ Milestone
- Improving graphics
- Optimization
- Testing
- Weekly Detail
TEAM UPDATES
GOTO: WEEK 2 WEEK 3 WEEK 4 WEEK 5 WEEK 6 WEEK 7 WEEK 8 WEEK 9 WEEK 10
Group Update
-
Overall Status
- For this week, the team has been settling in nicely with getting all of the work environments up and running and diving into tasks. We all did pretty well individually and within our subteams so the next big task is to start the process of merging together work to produce some full-stack work (simple box model game for next week)
- Once everyone is comfortable using version control, all the individual parts should start coming together and hopefully we will start seeing some awesome game-like material soon.
-
Meeting Date
- 4/13/2015 - Monday 3:00PM
-
Group Morale
- Morale is very positive! Everyone is looking forward to the quarter after planning out the work ahead of us. The ball has started rolling and we're excited see the development of our game.
Hubert Hsiung
-
This week's goals
- Create shaders to create a metallic effect
- Basic light setup
-
Accomplished goals
- A diffuse shader calculated from 1 light source
- Basic lighting
-
Unmet goals
- There appears to be some very minor bugs in my vertex shader when it comes to wireframes
-
Next week's goals
- Implement more detailed lighting effects
- Adjust shader code to work with more light sources/FX
- Start looking into shadow mapping techniques
-
Morale
- Good? Everything’s pretty on track.
Yuhong Hu
-
This week's goals
- Having connection between server and client
- To allow client to actively search for a server
-
Accomplished goals
- Simple connection between server and client
- UDP broadcasting to find a server
-
Unmet goals
- There’s still some bugs in UDP broadcasting. Need to do more researching and testing
-
Next week's goals
- Having the server to update with clock ticks
- Create other packet types
-
Morale
- Ok so far. I need to manage my time better so that I can also keep up with my other classes.
Wesley Lau
-
This week's goals
- Refactor the base classes and code structure.
-
Accomplished goals
- I committed the initial base code we can all work with. I also implemented a basic player structure that can move using keyboard and mouse input
-
Unmet goals
- I did not finish implementing physics engine for collision detection of the player
-
Next week's goals
- Change glut to glfw so that we have a better library for loop handling and so that we can separate game logic from rendering and from physics calculations. Also begin working on player detection collection
-
Morale
- I cannot stop thinking about this class. It is too much fun.
Michael Mullen
-
This week's goals
- To create the world/maps of the game so it would be procedurally generated
- This included bounding spheres, collision detection, and texture mapping
-
Accomplished goals
-
Unmet goals
- I am currently tweaking the collision detection to make it more flexible
-
Next week's goals
- To help with animation, and get the actual model in the world
-
Morale
- This is a great fun experience. It is like I work on this for hours and do not even realize
Jesse Qin
-
This week's goals
- Working on client/server connections and making sure we could have one computer connect to another
- Drafting some structure of communication between game client and game server
- Set up the website structure so that future weeks will only require simple content updates
-
Accomplished goals
- Client connecting to a server and server accepting that connection
- Most of the website structure is more or less good to go
- Started on some basic classes for objects
-
Unmet goals
- Sending messages between client and server
-
Next week's goals
Work with the back-end and front-end team to complete the simple moving-shape game to start as the base for the full project
-
Morale
- Pretty good, I think week 2 was just a little rough with setting up a lot of logistics in multiple team classes, but from here the work should flow a lot more nicely and I hope to learn a lot
Brandon Ustaris
-
This week's goals
- Figure out hierarchy (inheritance wise) of how game objects will be represented on the server
- Create basic classes of game objects
- Set up a main game loop on the server
-
Accomplished goals
- Creating a basic class of an abstract game object (That all game objects will extend from)
- Laying out part of how we will create and represent different types of gameobjects
-
Unmet goals
- Unable to start on the main game loop. The problem was technical difficulties with sharing our code on Github.
-
Next week's goals
- Create a class that extends the GameObject class so that we can have an instance of a GameObject to move around
- Finish the main game loop
-
Morale
- I feel good about our progress so far, and once we get comfortable with using Git, I’m sure things will go a lot smoother.
David Wang
-
This week's goals
- Learning how to implement game rigs
- Creating concept art for the Crusader model
- Create the Crusader model
-
Accomplished goals
- I was able to learn the workflow of creating a rig along with differences among many solvers
- I was able to finish a good amount of the model
-
Unmet goals
- I was unable to finish the model as fast as I would’ve liked due to learning how to rig
-
Next week's goals
- I plan to finish up the Crusader model along with rigging by Saturday. I will be focused on creating idle, walk, and attack animations for the Crusader and will get started on the Vampire concept and model as soon as possible
- Learn how to make and rig free flowing wings
-
Morale
- It has definitely been rewarding so far, and I hope to make my workflow more efficient as time goes on and as I get better
Group Update
-
Overall Status
- All of the graphics are soon to merge together, ultimately all together with the back-end too
- The simple "box-model" has been accomplished so the next step is upgrading that model to work with all the graphics that has been in development for the game so that the rest can truly be incremental change
- A lot of people had midterms this week so we've been pretty busy but we're trying hard to stick with the plan!
-
Meeting Date
-
Group Morale
- A lot of us are a little tired because of midterms but we're all still in good shape!
- Next week will be a pretty big milestone so we're looking forward to accomplish it!
Hubert Hsiung
-
This week's goals
- Shadow Mapping and shaders
-
Accomplished goals
- Done with shaders and basic templates for shadow mapping
-
Unmet goals
- Still need to apply shadows to game code once everyone’s on the same page
-
Next week's goals
- Test/fix shadow mapping code, start loading animation
-
Morale
- Good, but have a lot of other work due soon, so a little stressed about that
Yuhong Hu
-
This week's goals
- Continue on network connection
- Create packet prototype
- Have the clients able to see each other in the game world
-
Accomplished goals
- Tested network connection and sending customized packets
-
Unmet goals
- I have a midterm week 4 and some other course work to do
-
Next week's goals
- Continue to implement server/ client communication
-
Morale
- Not so productive this week, also had some trouble using GitHub and VS. Overall not too bad =D.
Wesley Lau
-
This week's goals
- Create an object parser, and a time step to begin creating a loop for physics integration
-
Accomplished goals
- I created an object parser that loaded obj files exported from Maya, and began preliminary code for the time step loops.
-
Unmet goals
- Just a lack of time because of other engagements, however my stuff will be finished before next week.
-
Next week's goals
- Finish some basic physics, and time stepping, having a good loop
-
Morale
- Not bad right now, excited for what our game has to hold.
Michael Mullen
-
This week's goals
- Mainly to finish the collision detection and to start on the animation
-
Accomplished goals
- I was able to finish the collision detection and am currently working on the animation
-
Unmet goals
- I decided half way I wanted to add bump mapping for the ground
-
Next week's goals
- To finish animation and to merge all my files with everyone
-
Morale
- To keep working at least 4 hrs a day so I do not slow my team down
Jesse Qin
-
This week's goals
- Produce the basic server-client-graphics model with a simple movable human dummy/li>
-
Accomplished goals
- Managed to have the dummy be rendered on the client but have all user input/movement actually handled by the server -> client moves the dummy when it receives packets from the server & server keeps track of object movement when it receives packets from the client triggered by user input
-
Unmet goals
- There is still a leftover bug that causes the network connection to close after a certain amount of packets… we’re still trying to figure it out but became kind of stumped and decided to sleep
-
Next week's goals
- Have two players be completed rendered off of the server packets and have them be able to interact with each other
-
Morale
- Pretty good! It’s been a rough week though because of midterms so just a little tired. It’s good to see that things are becoming more connected and taking form though!
Brandon Ustaris
-
This week's goals
- Update the server to be able to keep track of game objects, read packets sent from clients, and send packets back to clients.
-
Accomplished goals
- Able to parse packets, update objects based on the content of the packets, and send the updated object data back to the clients
-
Unmet goals
- The functionality of connection between the server and client is not perfect. It crashes due to some bug that we cannot currently find.
-
Next week's goals
- Get two clients to see themselves, and the other client moving around in the game world. Plus fix the current bugs we have.
-
Morale
- Got a lot of work done this week, hopefully we can keep up the pace for the rest of the weeks when midterms start...
David Wang
-
This week's goals
- To model, rig, and animate the crusader mech
-
Accomplished goals
- I was able to model, rig, and animate the crusader
-
Unmet goals
- I was unable to finish modeling a finished model because we are seeing if the current one can run in the game engine along with its animation
-
Next week's goals
- While waiting for the results listed above, I will work on the Vampire mech.
-
Morale
Group Update
-
Overall Status
- We fell a little behind schedule, we wanted two players to be able to see each other and their movements on a world with animations (simple arms moving up and down). We didn’t quite get the animation part integrated yet so that’s something we need to catch up on as soon as possible.
-
Meeting Date
- 4/27/2015 - Monday 3:00PM
-
Group Morale
- A lot of people are tired mid-quarter but everyone is still optimistic about moving on forward to produce a solid game.
Hubert Hsiung
-
This week's goals
- Basic animation and merging shader code with current code
-
Accomplished goals
- Not much, changed some things in shadow mapping to make things a bit more efficient.
-
Unmet goals
- A lot of projects and midterms. Busiest week of the quarter :/
-
Next week's goals
-
Morale
- Tired, but will have time to work again once I’m done with all the other class work
Yuhong Hu
-
This week's goals
- Allow two player to see each other moving
-
Accomplished goals
- Fixed a bug that causes the network to freeze
- Allow the server to spawn new objects
-
Unmet goals
-
Next week's goals
- Merge the new functions that the graphic team has made to the server
-
Morale
Wesley Lau
-
This week's goals
- To refactor our source code into different states for extensibility and then begin working on a basic animation in our client rendering.
-
Accomplished goals
-
Unmet goals
- Animation was difficult to achieve just because of the need to get used to the fbx api given in autodesk.
-
Next week's goals
-
Morale
- Good, things are getting more challenging and that’s good.
Michael Mullen
-
This week's goals
- Creating a Bump Map and Fixing the texture mapping
-
Accomplished goals
- Texture Mapping and collision detection
-
Unmet goals
- I had a midterm and a 168 assignment due this week
-
Next week's goals
- Help with gameplay, add more tiles, add shaders
-
Morale
- Tired, but excited to work
Jesse Qin
-
This week's goals
- Two client interaction with server generated packets handling all the objects
-
Accomplished goals
- Two clients able to see each other with movement but no official interaction like combat etc.
-
Unmet goals
- A lot of refactoring got in the way of progress as there’s a disconnect with the code base that the front end team works on and the code base that the back end team works on (we have to take the new graphics code and integrate it into server client code)
-
Next week's goals
- Have a fully working base with timers and players able to attack each other and cause health decreases
-
Morale
- Slightly panic-ish just because we kind of fell a little behind where were we hoping to be. If we can reach our goal for next week though I think we’ll be in a lot better shape. Have to really put the pedal to the metal.
Brandon Ustaris
-
This week's goals
- Get two clients to interact with each other
-
Accomplished goals
- We were able to get the clients to see one another (with movement), but we weren’t able to really get any interaction with one another (like attacking)
-
Unmet goals
- Simply not enough time. Plus the graphics team updated their code which actually caused some necessary refactoring for the server client team.
-
Next week's goals
- Implement some of the interactions between clients such as attacking each other. This means discussing how attacks will work (like if we are creating bullets or swinging weapons) and thus implementing new objects on the server and client sides so that they can be seen in the game.
-
Morale
- After finishing up seeing two clients interact with each other, I’m pretty happy about how things are going.
David Wang
-
This week's goals
- To get a working animation for the mech and a simple object animation imported into the game for testing. Work on the Vampire Mech and some Bump mapping/normal maps/uv textures.
-
Accomplished goals
- I was able to create an animation for the mech, and created a simple pyramid animation for game testing. I created a moon model with bump map textures and Mike is currently creating a shader to incorporate the bumps. Vampire mech modeling is in progress.
-
Unmet goals
- There is currently the issue of the skeleton and mesh being separated when scaled, however, by moving the joints of the skeleton, the mesh will still animate along with it. I was trying to fix this issue throughout the week and I’m not sure if that would have implications on the programming side. I wasn’t able to make as much progress on the vampire mech though that will be a huge point of emphasis for this week.
-
Next week's goals
- To finish working on the vampire mech while teammates test the rig and animation. Potential risks include me having to re-rig the mech for it to work.
-
Morale
Group Update
-
Overall Status
- We still really really need to start completely shifting all (or at least most) of our work into a single branch - basically directly work in the server-client game itself. This was a goal for this week but because of the last of midterms and sun god we didn't quite make it that far.
-
The game so far can spawn multiple players from multiple clients and those player objects can move, rotate, and all the clients will see those objects as delivered from the server.
-
The next step in the game is collision detection (attacking each other) and throwing in all the graphics like background, buildings, enviorment etc. that has been built into the actual game.
-
Meeting Date
-
Group Morale
-
Morale is okay. Now that it's nearing week 7, we just have to meet more often in the labs as a full team to make sure we can get all the code in one place.
- We have to believe in "It's going to be okay" - Voekler 2015
Hubert Hsiung
-
This week's goals
- Figure out shaders for bump mapping, maybe help with animation if team has trouble with it
-
Accomplished goals
- Started experimenting with bump mapping
-
Unmet goals
- Didn’t do much last week… Midterms+PAs+Sun God… lol
-
Next week's goals
- Get all the shader stuff working with the rest of client code
-
Morale
- Good, had some good rest, time to start working again.
Yuhong Hu
-
This week's goals
- Continue to implement server functions
-
Accomplished goals
- Allow server to send the status in its object list to all clients
- Make the server update only one change on a object per clock tick
- Add rotation calculation on server
-
Unmet goals
- My main goal is to update the server code to keep up with the client side and all other new functionalities that the graphic team has come up with.
-
Next week's goals
- Add collision detection to the server
-
Morale
- So far, I can still keep up with the task I’m assigned to do. Hopefully we can finish our project by the deadline.
Wesley Lau
-
This week's goals
- I wanted to set up assimp so that models such as dae and then animations could be set up.
-
Accomplished goals
- I only partially got the assimp loading done. Objects can be parsed and loaded, but the animations are not looping (although the data is there).
-
Unmet goals
- Loading animations is difficult. Assimp documentation and examples are not easy to understand. I got a preliminary system for loading models, but could not completely finish it.
-
Next week's goals
- I am leaving animation up to Michael and others. If animation is not making good progress, I am going to resume working on it. As for me, I am going to start working on a smoke particle effect that will follow the vampires around and give more of a “cool” feel to the game.
-
Morale
- Bummed that animation loading is difficult, but hope that my confidence can be built up by finishing other parts of the game.
Michael Mullen
-
This week's goals
- Fix and apply collision detection, get texture mapping back up, create a projectile with physics applied to it
-
Accomplished goals
-
Unmet goals
-
Next week's goals
-
Morale
- I feel there is a lot more work i need to contribute to this project, and have been steadily increasing in my work since
Jesse Qin
-
This week's goals
- Continuing to add feature to the server side like rotation and object collision to implement the player attack player aspect of the game
-
Accomplished goals
- On the back end team, rotations and multiple game object instantiation was finished and cleaned up
-
Unmet goals
- Did not get to collision detection, still waiting on the pipe but I definitely want to get cracking on that by the end of this week as soon as it’s ready to go
- I had a bit of a rough week with another major project in different class; everyone on my 134B team went MIA over the weekend for sun god festivities so I handled the entire thing and pulled some all nighters - consequently I became pretty sick after that :(
-
Next week's goals
- Definitely DEFINITELY have a base game put together with all the pipes flowing smoothly
- By the end of this week, I want collision detection at the very least done on the server
-
Morale
- It was pretty low during the week because of being sick, and I was kind of mad at myself for not being able to get as much work done, I think overall it’s still good that we all made progress despite finishing up midterms and sun god weekend
Brandon Ustaris
-
This week's goals
- Object instantiation, rotation, and collision
-
Accomplished goals
- Only able to finish object instantiation and rotation
-
Unmet goals
- Object collision is tricky to deal with, and we also had some bugs with drawing on the client side.
-
Next week's goals
- Finish object collision and start implementing attacks that can damage other players (hopefully get a basic game going)
-
Morale
- We actually got a lot of work done considering the midterms that our group had to deal with over the past weeks. I am happy about that.
David Wang
-
This week's goals
- Adding texturing to my workflow, working with Maya + Mudbox for sculpting/texturing. Getting my rig to animate in the game.
-
Accomplished goals
- Finished learning the workflow Model-Sculpt-Texturing-Rig-Weighting-Skinning-Rendering
- Static models are a lot easier but still time consuming
- Created a hammer with all of the uv maps and carvings embedded
-
Unmet goals
- I didn’t want to get too far with the vampire mech until I got texturing down. I wanted to see what maps were specifically needed in order to display in the game. I have some other classes that I had to work on last week but I should be able to dish out models pretty quickly now.
-
Next week's goals
- Apply workflow to my vampire mech and get it in .dae for Wes and Mike. Create the shrine and sundial. Recreate crusader mech to include weapons, texturing, and animations.
-
Morale
- It’s busy but manageable, good :)
Group Update
-
Overall Status
- BASIC GAME WOOOOO. You can kill other players and win a the game!
- Finally started having more people work on the main game branch, still not all completely there but the team a lot more on the same page now which is good!
- We'll probably need to revisit our original conception to see how much we can actually achieve and modify the gameplay a bit to accommodate what's within reach from here (will probably have to simplify some of the things in our game)
-
Meeting Date
-
Group Morale
- Getting closer and closer! We're all ready and excited to make this whole jig happen. We all know we're going to have to put a ton of work in; lots of lab time incoming :).
- LEEEEROOOYYYY JENKINNNSS
Hubert Hsiung
-
This week's goals
- Bump Mapping, and UV map parsing
-
Accomplished goals
-
Unmet goals
- The uv-map parser. Had a lot of trouble finding out how dae files work
-
Next week's goals
- Get more materials going (reflective, etc)
-
Morale
- Good, gonna start committing a lot of time.
Yuhong Hu
-
This week's goals
- Collision detection on server
- Player interactions(attacking each other)
-
Accomplished goals
- Players can now attack each other with basic attack
-
Unmet goals
- We had some GitHub issue and wasted some time trying to revert back to a working version. So we prioritized making the game complete first.
-
Next week's goals
- Add new classes to enable collision detection between players and buildings
-
Morale
Wesley Lau
-
This week's goals
- My concrete goals were to implement the particle system and oversee our merge of the code into one single branch.
-
Accomplished goals
- I succeeded in making our lives easier by creating a folder structure with all our includes and libs. This compiled easily and also provided another new base for everyone to work on. I am still currently working on particle systems but have not got them to show up yet.
-
Unmet goals
- Particle systems was just delayed a little because of the need to get our critical path running. I also attempted again at completely implementing our animation loader with new code.
-
Next week's goals
- Finish particle systems and have them available to be called on-demand for next week.
-
Morale
- Good, but feeling nervous about our progress.
Michael Mullen
-
This week's goals
- Animation, texture mapping redone, new world map, attack range, spotlight and sunlight
-
Accomplished goals
-
Unmet goals
- The animation, the dae file may be corrupted
-
Next week's goals
- More attack types, environment mapping
-
Morale
Jesse Qin
-
This week's goals
- Setup config file integration into the Client and Server
- Work w/ back-end team to get basic game working: attacking, killing, reducing health, having one player lose one player win etc.
-
Accomplished goals
- Setup config files for both the Client and Server, works smoothly!
- The basic game is going! You can attack other players, reduce their health, and ultimately kill them. Players can lose and win.
-
Unmet goals
- More of a team goal, but having the environment/map integrated into the game. We MIGHT have it in by the time we actually meet on Thursday.
-
Next week's goals
- Complete game with all working parts that LOOKS like an actual game and functions like an actual game. Going beyond just simple basic functionality. Ideally we'll be able to have at least one round of our game as originally planned at the start of the quarter, with one team winning and one team losing.
-
Morale
- Definitely a lot higher now that it can officially be considered a game with fighting/winning/losing. Apprehensive of the next three weeks but at the same time pretty comfortable knowing what we need to do next. Bring it onnnnnn!
Brandon Ustaris
-
This week's goals
- Drawing object other than players on the client (like buildings) and implementing/drawing health on all the players (so that we could then implement a lose/win for the players).
-
Accomplished goals
- Able to draw healthbars over all players and get a simple win condition working.
-
Unmet goals
- Unable to finish getting drawing other objects like buildings. Took a while to merge graphics stuff with client server stuff.
-
Next week's goals
- Get different types of objects to be drawn on the client side and start implementing actual gameplay that we defined.
-
Morale
- Wish there was more time, but we can do it!
David Wang
-
This week's goals
- Finish Sundial, Shrines, Vampire Mech Mesh
-
Accomplished goals
- Finished Sundial and Shrines, provided simple animations for the group
-
Unmet goals
- Currently working on the vampire, hopefully the model can be done by meeting time. The forearms of the rig I provided might be corrupted, it works in my program but not theirs so I’m looking into it. Gonna provide a basic rig for them to test for thursday.
-
Next week's goals
- Testing the rig, finishing the Vampire mech (rig and animation), modify the crusader mech (rerig, animate), basic human model with rig and animations.
-
Morale
- The rig not working is a little annoying since it takes a lot of time to do it, but I’ll get it to work asap.
Group Update
-
Overall Status
- Still stuck with a lot of the graphic work separate from the server-client game...
- The game logic is shaping up well, and it seems like a lot of individual graphics parts are finished/close to completion.
- Having a game world finally integrated and UI components will probably make everything look infinitely better
-
Meeting Date
- 5/18/2015 - Monday 3:00PM
-
Group Morale
- Just keep swimming just keep swimming.
- Swim faster.
Hubert Hsiung
-
This week's goals
-
Accomplished goals
- Finished shader merging + bump mapping + toon shading
-
Unmet goals
- bump mapping still has some color issue, probably some diffuse shading problem, didn’t have too much time to fix it due to other classes.
-
Next week's goals
- more shaders, fix some minor bugs, get texture mapping 100% ready.
-
Morale
- 1 more midterm to go, very tired after multiple all nighters. Gonna spend a lot of weekend+next week working on this.
Yuhong Hu
-
This week's goals
- Merge collision detection
-
Accomplished goals
- Fixing attack range logic
-
Unmet goals
- I have 2 midterms and 2 assignments due this week, and I did little work.
-
Next week's goals
- Keep merging graphics side code to the server.
-
Morale
- I hope I can have more time working on it next week.
Wesley Lau
-
This week's goals
- I was supposed to finish particle systems.
-
Accomplished goals
- Particle system backend is implemented, but the rendering is still not completely working.
-
Unmet goals
- I think our camera class is limiting. We started off with a very simple camera class that had only azimuth and incline. However, as I worked more on particle systems, I think I need more information such as the camera’s position and rotation (probably in quaternions). This shouldn’t be too hard to extend as we already had a working camera class.
-
Next week's goals
- My goal is to merge the particle systems into the development branch and also start creating individual particles such as smoke and light glow.
-
Morale
- Extremely tired. My schedule has been hectic because of another project due on Friday and a midterm that was on Tuesday. However, I am seeing some good results in particles and some of our code is merging together.
Michael Mullen
-
This week's goals
- Shading is done, successfully combined bump mapping and toon shading
world is done
-
Accomplished goals
- Most of them except animation
-
Unmet goals
-
Next week's goals
-
Morale
Jesse Qin
-
This week's goals
- Game state implementation (waiting for all players to connect, game start, game end etc.)
- Work with front end and back end teams to merge animations (legs moving at least), and environment with collision.
- Separation of vampire and crusader players, spawning in correct spots etc.
-
Accomplished goals
- Game state things are okay and working for the most part
- Back end for now has two hard coded buildings to deal with as environment
- Vampire/crusader separation is working
-
Unmet goals
- Still not up to speed with environment and animation merged completely onto the server as we would have hoped...
- I dunno we're still not having all groups work in the same server-client branch which is causing the most issues. Too much individual work still I believe.
-
Next week's goals
- Get ALL the graphics things onto the server no exceptions.
- We should have: working animated legs while moving, fighting, more objects like weapons, an actual world, all the graphical eye candy integrated so that things look nice
- Stretch: loading screen completely finished
- Stretch: UI components started
-
Morale
- Low and high. I mean I'm confident that we can pull things together but looking back we could and should be a lot farther ahead at this point with less stress facing us
- Optimistic with the 3 day weekend ahead, I'll have a lot more free time with work and class canceled for the weekend/monday. I'm also finally done with all midterms!
- Reflection: I feel like the pace of our progress is my fault. At the start of the course when we were determining roles, we never really set a leader/project manager type person, but throughout meetings I sort of inadvertently became somewhat of a team lead as the person who was setting milestones and going through what we should have done by when to be on track. The only problem with this was that I never really persistently checked in throughout the week and enforced the goals that we all set as a team... I think I just never felt that it was my place to be on people's tail because it wasn't an official role, but looking back I should just done it anyway. I know it's supposed to be a team effort where everyone checks each other, but that didn't really happen. Again I'm thinking it was my fault for running the meetings and probably setting the expectation that I would be in charge of enforcing the pace of progress. I guess the moral of this all is that it would be a lot more effective to officially assign a sort of 'product manager' role in any project of this scale and not rely on the faith of everyone checking each other.
- I'm at least in the top 3 best VolekeriesCrusaders players in the world.
Brandon Ustaris
-
This week's goals
- Set up pre-game state (e.g. players choosing which characters to be). Be able to draw text and obstacles on client side. Draw background on client.
-
Accomplished goals
- Got text and other obstacles to show up. Able to create multiple states on the client so we can switch from pre game to actual game play state.
-
Unmet goals
- Unable to set up a background for game, other goals took awhile.
-
Next week's goals
- Finish drawing background on client. Be able to draw more objects like weapons and other obstacles. Make pregame screen look nicer.
-
Morale
David Wang
-
This week's goals
- Finish up Vampire Mech, get animations working, make whatever is asked of me.
-
Accomplished goals
- Finished with the model, will be finished with the rig and vamp animations tonight.
-
Unmet goals
- Creation goals were met, gonna rework the crusader mech a bit and make weapons. Learned recently that I had to save maya binary files as maya ascii before exporting which is an easy fix. We switched from .dae to .fbx which should make things easier.
-
Next week's goals
-
Modify crusader aesthetically, create weapons, finish up the human, make menu texture, weapon animations.
-
Morale
- Looking good from the modeling side, happy with how the vampire mech turned out. Reworked some of our game plan, looking good though.
Group Update
-
Overall Status
- Integration of UI has begun happening. Lobby with character & name selection is working well and players are now distinguishable by name.
- Logic for the rounds and different kinds of characters is integrated (on the server but not graphically reflected yet).
- Environment with collision is added.
- Graphically, it seems like animation is still the roadblock.
- We have a game!
-
Meeting Date
- 5/25/2015 - Monday 3:00PM
-
Group Morale
- Pretty high, we're all ready for the last stretch.
- Game is looking a lot better, we're finally working on coding in the facets of the game that we originally conceived in the early weeks of the course
- Everyone is also pretty tired, but that's expected. We're ready to be even more tired!
- Everything is going to work out :D.
Hubert Hsiung
-
This week's goals
-
Accomplished goals
- All shaders good, fixed bugs with parser
-
Unmet goals
- Not enough sleep…. Animation too hard
-
Next week's goals
- Merge shadow mapping, setup geometry shader and maybe deferred shading if i have time
-
Morale
- Tired, need to pull more allnighters
Yuhong Hu
-
This week's goals
- Add following features to the server:
- Add timer class to keep track of day/night
- \Add vampire,crusader and human classes
- Have player base status change according to game time
- Add a scoreboard class
-
Accomplished goals
- Timer,Vampire,Crusader
- Status update according to game time
-
Unmet goals
-
Next week's goals
-
Morale
- Time to make a final push
Wesley Lau
-
This week's goals
- After finishing particle systems, Mike asked me to attempt animations again using OpenSceneGraph. I also wanted to figure out how to load different part of the animations as well (such as the run or walk or idle state).
-
Accomplished goals
- I compiled and had a successful FBX animation using OpenSceneGraph. However, I discovered that OpenSceneGraph and GLFW do not work well together.
- I attempted to use OSG’s EmbeddedWindow to try to load both, but it seemed hacky and buggy.
- Fortunately, I learned a lot by using CMake to create a fresh version of libraries and includes. I also saw that the Assimp library we were using was outdated. The newest Assimp can load FBX, where we can keep David’s work by altering the pipeline.
-
Unmet goals
- I could not simply just load the FBX model into the GLFW rendering window. OSG had its own management of rendering nodes and so I was stuck with two different windows.
-
Next week's goals
- I want to get the FBX load as soon as possible. This includes figuring out how to recurse the nodes and scene as cleanly as possible so that we can have a good animation pipeline. Using the current Assimp github repository, I hope I can implement code that will truly load the animation correctly this time.
-
Morale
- I am excited to figure out animations. OSG was good in showing that David’s models and animations are perfect and clean, however, it was demoralizing since we could not put it into our environment. I have high hopes of using Assimp’s newest library.
- We are also having progress in our user interface and finally a lot of our code is merging together. We have a clearer picture of what our game looks like and it seems like its time to go overtime.
Michael Mullen
-
This week's goals
- Adding everything to the server, prininting stuff to screen, animation, new map, shrine loading
-
Accomplished goals
- Having some issue of adding a few things to screen
-
Unmet goals
- A lot of goals this week to accomplish
-
Next week's goals
-
Morale
Jesse Qin
-
This week's goals
- Test game on the demo machines.
- Work on server-side of lobby/intro screen beautification, ensuring that players can select a name, then select a team, switch teams etc. Also allow players to see what teams other plays have signed up for and how many spots there are left for the game to start.
- Work with everyone to get more graphics integrated into the game.
- Multiple kinds of attacks and weapons included
- Keep working on game loop
- Make a logo
-
Accomplished goals
- Things tested out a-okay on the demo machines!
- Lobby/intro screen looks really awesome and is very functional.
- Players can also see their names in game.
- Made the logo! Game is starting to look a lot more official!
- Still working on more things at the time of writing the report, most likely going to have more game logic regarding the actual rounds of the game finished after meeting up with the team.
-
Unmet goals
- Animation is still in a bit of a snag so didn't really move forward that far with variety in attacking and fighting etc.
-
Next week's goals
-
Morale
- High! THe game is finally starting to look like a REAL GAME this week! A lot of goals set from here are working to morph it into the unique game that is VoelkeriesCrusader. The only major obstacle in baseline is still just animation it seems, but yeah a lot of things came together this week! Definitely not done yet but if we keep accelerating and ramping up, we'll be at a good pace.
- Still plenty to do! Excited to do them ^^.
Brandon Ustaris
-
This week's goals
- Create a nice lobby for the game. Make HUD. Put in some sound effects.
-
Accomplished goals
- Finished the lobby. Started making HUD and attempted some sound effects.
-
Unmet goals
- Didn’t finish all the goals because drawing text on the screen took a little bit more time than expected
-
Next week's goals
- Finish up my goals from this week, then finish up with the final touches of our game.
-
Morale
- So far we have the basis of a simple game. I hope we’ll have time to add cool functionality that makes our game unique.
David Wang
-
This week's goals
- Finish Vampire and Crusader Rigs, get animations done.
-
Accomplished goals
- Finished both, currently making multiple animations + 8 weapons and weapon animation on the mech 5/40 animations done, 2/8 weapons done.
-
Unmet goals
- Just takes a lot of time to do animation, but it’s all good.
-
Next week's goals
- Finish all 40 animations and weapons by this weekend and test them in the game, make changes when necessary. Human and human walk animation (should be quick). Anything else that is needed of me.
-
Morale
- I think we’re all tired but we got this :)
Group Update
-
Overall Status
- WE'RE ALMOST AT THE FINISH LINE.
- ANIMTATIONS WORK.
- Crusaders and vampires now clearly defined, map looks a lot cooler, shaders added, particles, weapons, it's all there!
-
Meeting Date
- 5/25/2015 - Monday 3:00PM
-
Group Morale
- High morale as we're getting closer and closer to the finish line! We got a lot done and are really pushing to try to produce something that will be interesting to watch and play on Friday.
- We can do it!
Hubert Hsiung
-
This week's goals
- Lights. Fix graphical glitches
-
Accomplished goals
-
Unmet goals
- Still iffy about shadow mapping, need to fix the camera before then zzz
-
Next week's goals
- Fix bugs. Finish the whole game
-
Morale
- Time to pull allnighters until Friday~~~
Yuhong Hu
-
This week's goals
- Projectiles and ranged attack
-
Accomplished goals
- Created projectiles on server and packets for client
- Projectile collision with players
- Projectiles die after reaching max range
-
Unmet goals
-
Next week's goals
- Making some final adjustments after we test the game
- Friendly fire
- Projectile collision with wall
-
Morale
Wesley Lau
-
This week's goals
- To finish animation and link each to the characters parts. I wanted to start loading everything that David has made for us, and make it interactive with good user input.
-
Accomplished goals
- I used ASSIMP to create animations and meshes. We were able to load both the crusader and vampire. Right now we have basic weapons rendering but they are not under the bone matrices.
-
Unmet goals
- Nothing that I had assigned.
-
Next week's goals
- i hope to put the weapons to be linked with the character so that attacks and running look good and realistic. I need to make the animations more smooth and time them out.
-
Morale
- good, but our game needs to be complete before Friday!!!
Michael Mullen
-
This week's goals
- Mainly Map building, weapons on the client side, sound, and projectiles on the client side
-
Accomplished goals
-
Unmet goals
- more that my goals were slowed up due to other classes
-
Next week's goals
-
Morale
Jesse Qin
-
This week's goals
- Complete ranged attacks for the crusaders, add random spawning, scoretracking, dashing attack for the vampire or some other special unique ability to make it coooooooooooool, fix some lag issues
-
Accomplished goals
-
Unmet goals
- Optimized some packets but there was still slight lag on the B220 machines and tons of lag on my horrible VM. It appears that the game didn't really lag on the CSE2220 machines though so I think we'll be okay in that department
-
Next week's goals
- Get in the last of the defining, attractive gameplay
- Complete round or rounds system, whatever end up going with
- Figure out a system for weapons
-
Morale
- It's been really high with how far we've progressed but also really low and depressed when seeing the games from the other teams and how incredibly awesome they are :(
Brandon Ustaris
-
This week's goals
- Sound, show projectiles, scoreboard on HUD, give vampires and crusaders some different special abilities to make game more fun
-
Accomplished goals
- Show projectiles, create scoreboard, able to give vampires and crusaders different skills.
-
Unmet goals
- Unable to put sound on with SFML because for some reason it kept crashing the program when I tried to load sound with it… Plus there were already so many other things to do at the time and Mike had already found an easier way to at least play music in the background.
-
Next week's goals
- Put game on steam and make profit.
-
Morale
- Our game is actually pretty good! Glad to have worked with this group and have a decent game running. It was fun.
David Wang
-
This week's goals
- Get All animations done, modeling, fine tuning, weapons
-
Accomplished goals
- Got a lot of it done, but need to focus on making the quality better. Smoother, faster, cleaner animations.
-
Unmet goals
- It was all met, had to find ways to load multiple animations into one fbx file and create a good enough rig + indexes for wes’s fbx importer which took a while.
-
Next week's goals
- Final stretch, make buildings, some HUD, weapon melee atks, faster and better animations, textures, whatever models my teammates want.
-
Morale
Group Update
-
Overall Status
-
Meeting Date
- 5/25/2015 - Monday 3:00PM
-
Group Morale
Hubert Hsiung
-
This week's goals
-
Accomplished goals
-
Unmet goals
-
Next week's goals
-
Morale
Yuhong Hu
-
This week's goals
-
Accomplished goals
-
Unmet goals
-
Next week's goals
-
Morale
Wesley Lau
-
This week's goals
-
Accomplished goals
-
Unmet goals
-
Next week's goals
-
Morale
Michael Mullen
-
This week's goals
-
Accomplished goals
-
Unmet goals
-
Next week's goals
-
Morale
Jesse Qin
-
This week's goals
-
Accomplished goals
-
Unmet goals
-
Next week's goals
-
Morale
Brandon Ustaris
-
This week's goals
-
Accomplished goals
-
Unmet goals
-
Next week's goals
-
Morale
David Wang
-
This week's goals
-
Accomplished goals
-
Unmet goals
-
Next week's goals
-
Morale
FINAL REPORT
A
1. Game concept: How and why did your game concept change from initial concept to what you implemented?
-
We originally planned on having humans in the game for the vampires to feast on and have the crusaders protect them, but due to time constraint, we couldn't implement this feature. Another major feature that we didn't add from the initial concept was having different weapons that you could pick up; we ended up resorting to having a few default attacks that players could cycle between to reduce the complexity of implementation. Lastly, we originally intended on having multiple shrines to capture as a core mechanic of the game, but resulted to only having one that provided a hub for healing. Overall, the initial concept of the game was a lot more complicated and intricate than what we ended up producing. This was likely because we underestimated how much time it actually takes to add, test, and debug new features. Overall though, we followed the baseline game concept with Vampires vs. Crusaders and changing bonuses based on daylight/nighttime.
Another note was that our initial game concept wasn't as concretely laid out as it could have been. We sort of pooled together a lot of things we thought would be cool, but didn't necessarily filter things out appropriately to set out a strong baseline achievable concept.
2. Design: How does your final project design compare to the initial design, and what are the reasons for the differences, if any?
-
Our initial design was very fuzzy, not very well defined. The reason for this was that all the team members constantly pitched in ideas that made our game seem cooler, but there was just too much ideas to get a good sturdy design in place for our game. Thus, our final project contained a portion of our initial design, but definitely not even close to the full image we had in mind for our game.
Initially, we only came up with general concepts of vampire, crusaders and humans, but we never really defined them. We went back and forth from initially making them all melee to defining vampire as primarily melee and crusader as primarily range.
On the art side, the vampire and crusader mechs were roughly the same as I imagined. Compromises were made in terms of design and the amount of polygons that existed within each model. I would’ve liked to work more on the environment to fit a dystopian, ruined city vibe but rigging and animations took a lot of time.
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.)
-
Overall, in terms of actual checkpoints. We were doing pretty well up until we needed to merge the back-end team with the front-end team. This was probably our biggest crux of the quarter. Once we had that roadblock, we ended up about a week or two behind schedule until the very end when we pushed the pedal to the metal.
-
Mixed responses for this one!
-
"We are probably pretty behind schedule since we had to pull so many all-nighters in the last 2 weeks, and the actual merging of code didn’t really start until week 6 or 7. We spent a lot of time trying to figure out ways to parse files (fbx animation is a nightmare)."
- "Actually, things were not too far off from our schedule. I was surprised because people tend to overestimate how fast they can get things done, but we held onto our schedule better than with most other projects I have been in."
- "I know a lot more could've been done"
- "Things speeded up a lot faster when we actually had a basic game implemented"
B
1. What software methodology and group mechanics decisions worked out well, and which ones did not? Why?
-
We divided our team into front end(graphics) and back end(networking/ gameplay), which worked out pretty well. Some members had a little bit trouble using Git, but we managed to merge everything in the end and it was a great learning experience! Communication and helping each other out in a team is very important.
As far as tools went, we all used Visual Studio. That was great because we could actually push the solution files for our project to github and so all the settings to make the project run smoothly were saved with our project making it easy to simply pull from the repository and run the game.
Things that did not work out so well was working on different branches for a lonnnggg time constantly saying “we’ll merge it later”. When we finally had to merge, a lot of code had to be retyped and new bugs popped up.
We also implemented an Agile methodology where we had a core idea but we were also flexible in terms of creation.
2. Which aspects of the implementation were more difficult than you expected, and which were easier? Why?
-
For graphics, FBX animation parsing was the hardest to implement in my opinion (Wes did a great job implementing it). We originally tried to use Open Scene Graph to parse the fbx files, but we didn’t want to use OSG for our entire project, so we had to try to manually parse it, which was really troublesome.
In terms of networking and the server, we initially thought that the tutorial on networking solved all our network problems, but it turns out that we needed to do much more to get our network running without bugs. We had assumed that a packet would always get transferred over in one piece, but it turns out it’s possible for a number of bytes to arrive that is not a multiple of the packet size. Finding and handling this bug was a real pain and was never completely solved.
Server/Game logic was actually easier to implement than expected because we had assumed that we would need to deal with rotating bounding box collisions and such, but our game worked just fine by simply using our player's position and checking that with bounding boxes of other objects. In general, things could be simplified a lot more due to the simplicity of our game.
For art, getting the models to work with the game engine was one of the biggest problems for since it required a lot of tweaking before we got something running. Something that would run fine in Unity wouldn't run correctly in our game engine for example.
3. Which aspects of the project are you particularly proud of? Why?
-
For graphics, Bump Mapping was a great feature. Not because it was difficult to implement, many members just simply never tried it before, and the result was pretty great, especially combined with Toon shading. We were also really happy when we got animations working because it took so long to figure out. Once we had that, we were able to add in the really awesome animations and models of the Mechs that David created. Our models were probably some of the most complex but it was so cool to see in the end!
Another thing that we were proud of was that the game was actually fun to play. The real-time fast paced game with really unique mobility moves and attacks really added an aspect of skill and strategy to win - this ended up being really enjoyable. We really tried to be as creative as possible with how each character could be played and the result from that was something to be proud of.
- "I’m proud of my teammates for being able to pull this together, we never had reason to argue or fight and everyone had a great attitude. I love the models that I ended up with, and I feel like they can be even better. I feel like with the game engine foundation that was laid out, we’re now able to focus on detail and the environment if we were to keep working on it." <3
4. What was the most difficult software problem you faced, and how did you overcome it (if you did)?
-
For graphics, one of the most difficult problems was the different file formats we have to play with. For animation, as I mentioned above, fbx was extremely difficult to parse. We initially started with dae files and tried to move onto md5/md2 and 3ds. Even after we settled with fbx files, we have to decide on whether we should use OSG or not. For image parsing, we also shifted among Assimp, stb_image, and ppm parser.
For the network, receiving packets turned out to be a real pain. After getting data to correctly show up in packets, we would find an occasional bug where health bars didn't match up on the different clients. This of course didn't make sense because the server sends the same info to all clients. It turned out that we were processing the packets in the incorrect order and so instead we reversed the order that we read the packets from our receive buffer which fixed that problem but then introduced a new one. There were times where a number of bytes would be sent which was not divisible by our packet size, so we would end up incorrectly reading ALL packets of that receive from the server loop and lose out on a whole cycle of updates from the server. This was particularly bad when this happened with initializing the game because then certain buildings would not show up or the game would not even start. We got around this by making sure we started at a place at the end of the buffer that was divisible by the packet size, but that means that we lost some packet data at the end of the receive buffer. We did not have enough time to fix this bug.
5. 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?
-
C++ was fine since many group members were comfortable with the language. In general, the consensus was that life could have been made a lot easier if we decided to use a few more libraries and engines (particularly mentioned was a physics engine). We pretty much built things from scratch which was a great learning experience but limited the final displayable result in the end.
As far as recommending for the future, we think that C++ is fine to use so we would recommend going ahead and using it. Before coding though, we would recommend doing some research on good coding practices in C++ to best organize your code before it becomes a giant behemoth.
6. 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.
-
Using xargs in the git folder with all the code, the resulting number for lines of code turned out to be: 18152
- The command in particular was: git ls-files | xargs wc -l. We used it on both the client and server folders where all the code resided and subtracted out any lines from files that were not pertinent to the count.
7. 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?
-
As far as the networking went, the back-end team was pretty pleased with Winsock.
- David Wang: Unless you have someone as good as Wes in importing Fbx files, I would probably stay away from that file format if you’re working in Maya. I found a way to export Md5 files from fbx files in blender with a python script, but that takes a little searching. I remember Md5 as being a much easier alternative, though by the time we figured that out, Wes already solved the fbx issue. .dae files cause bone issues in Maya and obj files are for static meshes only. If you do plan to export FBX files, animate in Maya LT through their game exporter. From there you’re able to export multiple “takes” for one model in one fbx file. This saves memory and time loaded in the beginning of the game. Running “select -hi” in Maya LT’s python script allows you to select all of the bones at once for keyframing. You’re welcome future animator.
- Wesley Lau: For graphics, animation was a pain to figure out. I first had an initial model loader that just got the static models to load fine, but extending it to animation was the frustrating part. Anyways, there is not a lot of documentation out there, but perhaps I will post up the code for our animation loader up online if any future 125 students want to see how our pipeline (code-side) worked. Here are the steps that I took after receiving the fbx model file from David:
- Using ASSIMP, I loaded all the mesh, bone, and animation data
- At least start drawing the initial mesh (bind pose)
- Take the bone matrices of each mesh and apply the necessary calculation to animate them while running an animation timer
- Draw onto screen using VAO or vertex3
8. Would you have rather started with a game engine or would you still prefer to work from scratch?
-
Most of us would have preferred to work from scratch from the perspective of a learning experience, though we all agree that starting with a game engine would have placed a lot more flexibility and focus on game design. So in the end, it boiled down to whether or not we were interested in implementing software or designing a game. As such, we had some mixed opinions.
-
Hubert Hsiung: While I didn’t necessarily work with the game physics, I would still prefer to work from scratch since it teaches you how all these engines work (and I also have a strong hatred towards bullet engine). Also, with my experience working with other large scale game engines, the project will take too little time to finish with the convenience of these engines. On the other hand though, having a game engine will save the students a lot of time on implementation and instead will give them a lot more time on game design.
-
Yuhong Hu: Well, since this class is about software design and implementation, it’s better to start from scratch, just to get the experience of building something from scratch. However, I do prefer to use game engines because I think maybe that’s how game is made nowadays. It will be another type of experience. Then the focus would be making games instead of building software. It really depends on what experience this course wants to offer.
-
Wesley Lau: I would still rather work from scratch. The implementation methods are so unlimited and now that we have done it once, I feel more prepared to do it again next time. The way that we can design our system to be anyway we want versus a game engine is so freeing, although there are some challenges that stand toward an end goal. Given more time, we could have refined each part of our game.
- Brandon Ustaris: I was actually working on a Unity project while this was all happening and… I choose Unity. Using a pre-existing game engine just allows you to get things done so much faster. It allows you to focus on adding features to the game rather than fixing functionality with our self written code.
- David Wang: I definitely would’ve preferred to use a game engine for animation purposes. Though not many people can say their group created their own game engine, so it is definitely an accomplishment.
9. 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?
-
Our team did not use any physics libraries. We think that animations could have looked a lot more real if we utilized one and probably would have saved time instead of figuring out some things on our own. Our game didn't turn out to be that physics heavy though so that's probably we why didn't opt in to use one. Openscenegraph would’ve been great from the artist standpoint since it made it a lot easier to implement world objects and lighting.
As far as networking we would use winsock again definitely. It was easy to use but we just didn’t look into everything carefully enough which was the reason we got bugs. Moral of the story: Don’t just follow tutorials blindly!
10. What lessons about group dynamics did you learn about working in such a large group over an extended period of time on a challenging project?
-
Meeting often is definitely a requirement, meeting way more than once a week.
- Everyone should learn git or some kind of version control; when many members are still having issues merging work because of that it slows down the pipes a lot. Should teach everyone how to commit and push often to avoid missing functionality and headaches with merging. Incremental change is pretty key.
- Every person should be assigned a specific role, more than just basic front-end/back-end/art teams. There also be a concrete group leader put in place at the very start to official make decisions and drive progress. Otherwise, deadlines become soft and he schedule lags.
- Communication is key!
- SPEND LOTS OF TIME IN THE LABS TOGETHER!
11. Looking back over the past 10 weeks, how would you do things differently, and what would you do again in the same situation?
-
A lot of us agree that we should have definitely reached the baseline game setup point a lot sooner; essentially, having all the pipes open with adding graphics, models, animations etc. into the server-client code. We spent way too much time early on working in separate branches and not experimenting with how things would merge together.
We also should have done a lot more work at the beginning. The first two weeks were sort of wasted away because of a false sense of security... while 10 weeks seems like a long time, it's pretty short in reality for producing a quality video game from scratch.
We definitely liked the way we split up the teams for work efficiency, but again making sure the different teams merged together earlier would have helped things out a ton.
As far implementing models and animations went, we would have stuck with fbx knowing that we would eventually come through with a working importer. Modeling would have been a lot faster along with rigging and animating and thus there would have been more time to create assets for the world.
I think the main lesson here in terms of doing things differently is to experiment with a pipes a lot and as early as possible in the quarter.
12. Which courses at UCSD do you think best prepared you for CSE 125?
-
CSE167, CSE165, CSE168, CSE169, CSE190 (Advanced Graphics), CSE120, CSE131, CSE110, CSE160A-B
- Wesley Lau: CSE131 compilers definitely helped prepare a lot. This course taught me a lot about design aspects such as inheritance that I could translate over to a lot of our client-side objects in 125. Also taking graphics classes like 167 helps jumpstart a lot of OpenGL knowledge (although you will end up learning more by implementing things for this class), depending on which library you use for OpenGL or DirectX.
- Jesse Qin: Wish I had taken some graphics courses like CSE167 before CSE125!
13. What was the most important thing that you learned in the class?
-
The single most important thing we pretty much agreed on was working with a team to produce a huge project like a video game. This was far unlike any other group project in all other courses at UCSD and really teaches the true importance of teamwork. There was no way that we could have gotten anywhere without every single member working hard, contributing, and communicating with each other and that kind of experience is really hard to come by in a college course.
Other mentions:
-
More advanced GLSL functions and techniques
- Client/Server Communication
- Workflow for a game modeler, rigger, animator, asset creator and the necessities of working with other programmers.
14. Please post four final screenshots of your game on your group pages for posterity. I will also display them on the group web page.
C
1. 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?
-
To add: http://gameprogrammingpatterns.com/contents.html
- Don't need to remove anything! The recommended list was really useful.
2. I will be teaching this course next Spring. What advice/tips/suggestions would you give students who will take the course next year?
-
Really hash out how you plan to keep their deadlines and progress in check, whether it is having a team lead or sub-team leads etc. We initially set out with a simple democratic everyone-checks-each-other system but it really wasn't concrete enough to avoid schedule lags.
- Finish game design early and stick with it, unless facing extreme technical difficulties.
- Decide what tools you gonna use and really study them in the first two weeks.
- Don’t make EVERYTHING from scratch. If someone has done it, use their approach.It will solve your problem. For example, I had a bug on circular dependency. All i did to solve the bug is to find examples that can avoid this error. Also, study the patterns (how people actually make a game loop).
- Expect to spend a lot of time, choose your file format wisely if you’re going the rigging route.
- Definitely recommended to take a graphics course beforehand!
3. How can the course be improved for next year?
- Thoughts from everyone:
-
Good course, better presenters maybe... a lot of them had a monotone voice.
- The course could offer some base code/ example code instead of completely from scratch. We could read simple base/example code for network structure, game loop, objects, etc. Even if the group decided not to use them, it would be a great reference. I believe there are a lot of the works already done out there and we can learn from those examples.
- I don’t know… this was the best course ever
- I thought the course was fine, maybe go over the group notes of previous groups during the first week of class.
- I think it would be cool to have one or two mid-quarter type get together with all the groups to see how far everyone has made progress. This would help encourage everyone to reach the level of the furthest group and also stir some advice-seeking.
4. Any other comments or feedback?
-
Seriously the best class ever! Worth every hour work!
- Hubert Hsiung: Hi.
- David Wang: Rumspringa!!!!!!