Browsed by
Author: bhn013

Final Report

Final Report

A. In the project review document, start by addressing these main questions:

1. Game concept: How and why did your game concept change from initial concept to what you implemented?
We mainly stuck to our original game concept of fat chickens participating in a game of capture the flag. The game concept as a whole remained intact throughout the project.

2. Design: How does your final project design compare to the initial design, and what are the reasons for the differences, if any?
We originally wanted the chickens to parachute down from the sky. Since this was a “nice-to-have” feature rather than a “need-to-have,” our actual end result was to have chickens fall from the sky instead due to time constraints. We wanted mounts, but we couldn’t make it that far. We dismounted the mount idea. We also wanted a bean stalk where we could have gone to like, another field in the sky. Barbara’s hot tub was stationary, we envisioned it to float higher and to move around.

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.)

The whole team was really behind schedule. I think we simply overestimated everything and miscommunicated too much. I think we planned to have like, moving object block visually present and connected to the server by week 3 or 4 but didn’t get it until week 5. Everyone was still learning how to get things working and I would say that was the slowing point of the project. Animations took a lot longer than we had hoped. Miscommunication of graphics and network side cause some problems. Merging was always a hassle because sometimes we stray away from master branch. Early on, some of us weren’t too pressure and probably didn’t put in 100% work power so some slack built up.

B. Then address these more general questions:

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

We used JIRA, which was helpful for the first half, but as time went on we neglected it. While we used it it was useful to see what everyone was working on, but also to know what we each needed to get individually.

We also used git for our source control, keeping master as the working branch (most of the time :^) ). We also tried to use pull requests as our Code Review, but no code review was actually done and pull requests weren’t a good platform for that either because you can’t really inspect the exact lines of code for good/bad code.

2. Which aspects of the implementation were more difficult than you expected, and which were easier? Why?
[Matt] I ran into a couple issues when implementing animation; I certainly expected it to be a lot easier than it was. One issue was figuring out how to get a file format that would load into our project. Another was the lack of much code implementing animation in Modern OpenGL. When things went wrong I wasn’t sure if it’s because the tutorial was bad or I was doing something wrong in my pipeline so I had to check all my bases. Also it’s stupid that people use row-major matrices. 
Also, adding shadows was more difficult because I had trouble with using multiple shaders. Modern OpenGL was a lot more difficult than expected, because I knew nothing about shaders.

[John] Bullet had its ups and downs. We had a disaster just before our demo because of the Bullet mesh objects. Collisions with those mesh objects caused our server to crash and David had to hard code our physics objects as static objects really quickly.

[David] Trying to figure out the Bullet physics engine with poor documentation was rather bothersome and took longer than estimated.  Unexpected behaviors of the engine caused various problems throughout the project duration, but overall I think the engine really helped with 3d collision detection and handling.  Additionally, it was quite an educational experience to write both client and server side projects that were connected through networking.  Because of the complexity, team communication and collaboration were definitely more difficult than expected.

[Brian] I think the idea of having two parts to the game (Server/Game) made it really difficult to debug. Networking team didn’t touch the graphical things too much until later on in the quarter. That meant when we started hooking up the two worlds and if bugs were to appear, we would doubt whether it was our networking or graphical. We had a bug that made the bullets graphically appear farther away from us then it was supposed to. We were fairly certain it was network problem but it turned out to be graphical in a spot that John and I would have never looked.

[Phoebe] Animation took way more work than I expected because there weren’t many resources available online to help and it was difficult to debug the shaders we were using. The UI portion of the game also took more than I expected because I used LearnOpenGL to learn how to render text, but the text rendering originated at the bottom lefthand corner of the screen rather than the top left, so I had to spend a lot of time figuring out how to change the vertices matrices so that it would render the way we wanted. I didn’t want to have to use two different coordinate systems for text and 2D sprites because that would get real crazy, real fast.

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

In terms of graphics: animations! They make the game feel more realistic and fun to watch. It also allows you to have the fun of taunting. Also the shadows for the same reason of realism.

[Matt] An object that I really like is the corn maze because it’s a fun location to fight around and hide in.

[John] Other than the whole thing, I like some of the weapons that I implemented. The teleport gun and the egg mine were really cool to do and Bullet actually made the teleport gun really easy to create. There were a lot of other weapon ideas that I had that I didn’t have time for though.

[Brian] I really enjoyed doing the network and actually utilizing CSE 123 in something practical like making a game. Coming up with map ideas was also really fun.

[David]  I really liked how the server-side physics was set up with field detection and general collision detection.  Also, getting the vertical rotation working so that the player could aim was a nice touch, considering the differences of the camera angle to the chicken.

[Phoebe] I’m super proud of our animation! 🙂 It brings so much more life and character to our game.

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

[John] Bullet’s mesh objects crashed our server right before our demo. David had to hard code the physics objects super quickly to get our server stable again. The last hour of making everything stable again was really stressful. We were also stress testing the server and squashing out the last of the crashing bugs while David was getting the physics reimplemented. As that hour of fixing was coming to a close, we just threw David’s stuff in along with our modifications and some of Matt’s modified sound stuff and prayed that it would work during the demo.

[Brian] ^What John said.

[David] It definitely was stressful to deal with the last minute physics engine issue with imported meshes.  The clutch fixes with music and hardcoded physics objects were definitely a relief and arguably the most difficult problem given the time span.

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?

N/A

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.

src: 519

src/Audio: 212

src/Basic: 46

src/Client: 4324

src/Graphics: 1957

src/Graphics/Animation: 1850

src/Graphics/Objects: 1842

src/Graphics/Shaders: 984

src/Network: 0

src/Server: 1244

src/Engine: 3899

Total: 16,877

We used wc -l on all files, subtracting files that were totally or mostly unwritten by ourselves.

[Matt] I edited/rewrote a lot of the files that I got from OGLDev because it was terribly written or didn’t fit in our pipeline, so I included that as the count as code I wrote.

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?

[Animation, Matt] Models were rigged and animated in Maya, then were exported as FBX files. In our code we loaded the animation files with Assimp, but had to compile it on our own rather than using Nuget’s package of assimp which could not load FBX files. I think we got the latest version of Assimp from their repo (https://github.com/assimp/assimp), using CMake to get our Visual Studio project file. For some reason CMake didn’t work the first time I tried, but it did another day. I don’t know why. Afterward I parsed the Assimp scene into my own AnimatedModel/AnimationPlayer/AnimationMesh classes to handle multiple animations because I don’t think you can put multiple animations in one FBX without some manual delineations for which seconds belong to which animation.

[Textures] Models were created in Maya and exported as OBJ files.

[Modeling, Matt] One issue we had was trying to display our models at a certain location, but it didn’t seems to be there and that was because the models were not centered on the origin, but offset for the sake of creating a map. Translate models in your model matrices.

[Audio, Matt] I used Simple and Fast Multimedia Library (SFML) for audio. It was simple and fast, but I needed my audio to be in wav/ogg format and in mono rather than stereo in order to have spatialized sounds.

8. Would you have rather started with a game engine or would you still prefer to work from scratch?
[Michelle] I liked that we worked from scratch because we learned how to do everything from the ground up.

[John] I’ve never used a game engine, so I have nothing to compare this experience to, but I would think that there are advantages to both. Building from scratch is a ton of work, but it’s easier to do what you want since you’re building the framework. Using an engine can cause trouble since the engine might not let you do what you want to do and you would have to fight against the engine. I would just say it depends on what kind of project I want to do.

[Matt] Working from scratch is a lot of work, but rewarding. At the same time you get some messy code that could be written and designed better and unless you’re really good you’ll need to refactor your pipeline, which could be painful.

[Brian] I think working completely from scratch was very difficult and confusing at first. I like how we ended up doing things and it worked out well in the end. I wouldn’t mind seeing how the game engine scene would work so I utilize it in the future if necessary.

[David] I think that it was very rewarding to work from scratch and have more customizable choice in the physics and graphics portions.  Doing this project definitely gave me an appreciation for what game engines provide, and so I’m very glad to have experienced working from scratch;  I would still prefer working from scratch for the experience and customization power.

[Phoebe] I love that we were able to start from scratch and really understand how the whole system works in a networked game, but if I were to make the game again or make a new game, I’d use a game engine because it’d allow us to do so much more in the same amount of time, not having to reinvent the wheel.

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?

[Brian] For networking, we used WinSock which was provided as a skeleton code by the professor. I personally would use the WinSock code again. We had to set up packet types and structures which was really interesting. John and I learned this from 123 which was really helpful. After the initial setup of WinSock, we really didn’t know how to have code to actually work over the internet like using sockets and IP. The skeleton handled that really well for us. I would like to learn how to set that up myself eventually and get it to work on other operating systems. After working with the physics engine Bullet, it made it easy to see how stuff should be done like handling physical objects like planes or rigid bodies. I originally wanted to start with a self built physics engine, but we defaulted to bullet. It has brought a lot of insight and would love to make our own in the future. For bullet, don’t use mesh objects to represent OBJ files.

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?

We had all taken CSE 110: Software Engineering in which we developed a mobile application in a team of 10, so we had each worked in a large group before. However, this experience was better because we have now developed different skill sets from classes (graphics, networks, etc) and could bring a lot more to the table prior to the start of development. We learned that when there are subteams working on different parts of the game (server side and client side), it’s important to often go over each part so that we can integrate them seamlessly. At times, there were delays in integrating branches (such as between physics & graphics, and

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

[John] Where do I even start? There are a lot of things I would do differently. I’ll just mention one thing. The server side architecture wasn’t planned out very well and we kind of put hack on top of hack when building it. It made things difficult to do without refactoring. We had some god classes that had methods that could have been and should have been modularized. I would say planning is the biggest thing that we lacked and it came back and bit us.

[Brian] When John mentioned how he planned everything out from the very beginning for a separate project and how well it flowed out throughout the project’s span, I would have had a solid plan and map of how everything should have been laid out. I suppose it would have been hard if new ideas were to pop up though if we spent a solid time talking about it then it would have been better.

[Matt] A lot of me is frustrated that animation took so long and part of me thinks that it was because Phoebe had no background in graphics (though I appreciated her work), but as she tried to debug it it wasn’t getting better, and maybe worse. So I wish I could have worked on animation first.
[Michelle] I would have scheduled more team meetings to work together in the lab.

[Phoebe] I agree with Matt that it wasn’t the best to have me work on getting animations running since I had no experience with graphics – it would’ve been better if Matt or Michelle had been tasked with that responsibility. I think we would’ve saved a lot more time.

[David]  I think communication and a solid understanding of the project goals could have been improved.  Certain design decisions were implemented without additional features in mind that were decided or imagined later.  Having a more set and defined project idea would have helped initial implementation of the classes, and would have made later work much easier.

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

[Michelle] CSE 167, 168, and 169 prepared us for implementing graphics into our game.

[Matt] +1 to Michelle’s response. Also for the experience in writing C++ code.

[Brian] CSE 123 really helped with the networking aspect of our game. I thought it was

really helpful to set up the network and understand packet structures. I suppose CSE 110 could

be helpful if you had an nice experience with it for a team.

[John] 123 was helpful for networking. 120 helped with identifying and dealing with any race conditions due to the networking.

[Phoebe] CSE 120 and 123 was useful for the networking side, and COGS 121 helped with our UI and menu design and working on a project at an extremely fast pace.

[David] CSE 123 helped with my understanding of networking, CSE 131 helped me deal with horrible Bullet documentation, and some aspects of CSE 110 and 120 helped with semaphores and design decisions.

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

[Brian] The power of friendship.

[John] The power of planning and the lackof.

[Michelle] The power of coffee. [John] I didn’t drink any coffee. I am powerless 🙁 .

[Matt] How to learn. <- That’s actually a real answer. I think it was good to take on challenges that I didn’t know how to solve and be okay with going into it.

[David] Becoming comfortable with not knowing what you are doing, but learning and doing it anyways.  I think it’s a good life lesson that could be applied to a lot of things.

[Phoebe] The power of chickens (and teamwork).

14. Please post four final screenshots of your game on your group pages for posterity. I will display them on the group web page.

EggScramble EggScramble2 Untitled2 Untitled3

C. Finally, if you wish, I would appreciate any feedback on the course (entirely optional):

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?

We didn’t really use any of the books :(.

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

Plan out your software architectures and make sure to communicate between your subteams. Miscommunications made it tricky to merge stuff sometimes and some things were implemented twice because of it.

Sit down, spend a good day or two (More if you need to) and plan everything out your map design (allow room for change, but don’t plan on it), physics structure, weapon hierarchy, everything possible that you can think of. Worst mistake you can make is to think: “We can think of this later when we actually start implementing it.” <- Biggest lie you’ll tell yourself.

Don’t get far from the working branch. If you are, be conscious of what is out of date and what you’re adding. You’ll make merging really difficult if you don’t do that and no one wants to go through that.

[Matt] Also, don’t suck at C++ coding/object oriented design (use keyword “override” when overriding a base class function, delete dynamically allocated memory/use smart pointers, “Don’t repeat yourself” e.g. call your other constructors in your constructors, forward declare classes as much as you can to prevent circular dependencies/long build times, etc.).

3. How can the course be improved for next year

[John] I love how the course is run already. Maybe more guest lectures?

[Brian] The freedom of the course made it really nice. In the beginning of the course, other than the two requirements (3D and multiplayer), nothing else was needed. The support provided via Piazza, in person help from Prof. Voelker and TA, other teams’ help, and books in the cabinet are all helpful. Nothing really needs to be changed in my opinion.

[Matt] I was kind of looking forward to guest lecturers more.

[Phoebe] I think it’s already great. 🙂

[David] I enjoyed the freedom given in the course to succeed and fail on our own, but also the amazing help provided when asked for.  If anything to improve, more guest lecturers would have been nice to give ideas or perspectives of relevant projects.

4. Any other comments or feedback

Thanks Prof. Voelker and Ruiqing for the awesome experience! We appreciate the patience and kindness in the food provided to the extra time to fix our code during the demo 🙂 Stay awesome.

[Brian] I love you all.

[David] Thank you so much for this amazing experience to attend the class and work on our own video game project.  This really made an amazing last quarter and a huge impact on my entire college career.  

Week 7

Week 7

Overall Status:

  • Network: Multiplayer functionality works now!
  • Graphics: Got some other models loading in (tractor, barn). Working on character pipeline for using the animated model to walk, jump, etc.
  • Gameplay:
  • Input:
  • Art:
  • Audio:

Meeting Dates:

  • Every Tuesday and Thursday morning for all team meetings
  • Tuesday and Sunday for networking team
  • Monday for a combination of some networks & graphics

Group Morale:

Screenshots:

underground_chicken 13249441_10209664117986017_1108508618_n13242105_10208718193541192_144909507_o.png


Individual Progress Reports:

Brian:

1) What were your concrete goals for the week?

Multiplayer functionality was the main goal for this week. We wanted to get players to see each other, move around, and collect eggs respectively while updating the scene whenever and event happens.

2) What goals were you able to accomplish?

Multiplayer works now and for the most part, everything is working. I was able to find part of the bug that made the chicken turn upside down and fixed that. More physics objects have been implemented such as bullets.

3) If there were goals you were unable to meet, what were the reasons?

As shown in the picture, the chicken spends most of it’s time upside down. I was able to to fix that so that when rotation starts, it will turn up side down briefly but then go back up and everything is normal. I believe it’s how we’re handling the quaternions that’s a little whackey. But that shouldn’t be too hard to fix.

4) What are your specific goals for the next week?

I hope to get jumps working and to get the other world objects such as hay bales and barns up and about.

5) What is your individual morale (which might be different from the overall group morale)?

It’s pretty good. Cool to see the chickens run around and rotate on each other’s screens. Can wait to get that animation added!

David:

1) What were your concrete goals for the week?

Get more gameplay mechanics implemented and connected with client-side.  Work on getting weapon fire rate, projectile spawning, and damage working smoothly and with correct object ids.  Implement a field object in the physics engine to do field damage effects or vehicle mounting.

2) What goals were you able to accomplish?

Re-organized server-side dynamic objects to spawn from a singleton spawn class, all under the super class Entity and placed in a map to more easily send client side updates.  Also created a singleton fire rate class that controlled the rate of generic weapon use per time;  waiting correctly resets the weapon to be of immediate use.  Bullets spawn dynamically with a scaling object id for an indefinite amount of time, decrements player health.

3) If there were goals you were unable to meet, what were the reasons?

I was unable to connect that many server gameplay mechanics to the client-side.  I focused more on re-structuring and adding server-side code for weapons and spawning.

4) What are your specific goals for the next week?

Add more weapons / powerups to be picked up, both melee and ranged.  Work on getting the maps designed and set on the server-side.  Get mounts working once the fields get figured out.

5) What is your individual morale (which might be different from the overall group morale)?

More of the program structure is really coming together; necessary preparations for the final sprint.

John:

1) What were your concrete goals for the week?

I wanted to fix up multiplayer functionality. We had a hacky version of it that broke when the network got more complicated. I also wanted to get more gameplay stuff hooked up to graphics.

2) What goals were you able to accomplish?

Multiplayer has been fixed. Planned out some more of the architecture of the gameplay/server side with David.

3) If there were goals you were unable to meet, what were the reasons?

Rotational information was the most important part of hooking up the gameplay stuff to graphics, since we’ll be launching projectiles and projectiles need a certain direction to be launched in. As you can see in the screenshot, rotational information isn’t correct yet. Movement does consider the direction that the player is facing, but for whatever reason, the models are upside down right now.

4) What are your specific goals for the next week?

Fix this rotation bug, get projectiles going, get player deaths going. Want to just build up on this baseline right now.

5) What is your individual morale (which might be different from the overall group morale)?

Pretty good, looking forward to some of the gameplay stuff like projectiles and items that David’s been implementing, but we haven’t been able to integrate yet.

Matt:

1) What were your concrete goals for the week?
To get the animation actually integrated into the player and start looking into the networking/server backend involved in gameplay.

2) What goals were you able to accomplish?
I started learning about the networking required for spawning objects, and worked a little on getting the player to animate.

3) If there were goals you were unable to meet, what were the reasons?
This week was a really busy week for me and so I wasn’t really able to work on the project.

4) What are your specific goals for the next week?
I want to get the player animated as we move around. Then maybe look into textures as a small aside. I also want to start getting into gameplay such as attacks or mounts.

5) What is your individual morale (which might be different from the overall group morale)?
Hard to say since I didn’t do much work this past week.

Michelle:

1) What were your concrete goals for the week?

I had planned to work on UI, but I believe Phoebe and I have a similar eye for these things. I decided to work on building up our scene more while she works on the menu.

2) What goals were you able to accomplish?

I expanded our world and added a barn, silo, tractor, and bench into the scene and am now currently working on implementing instance-rendered grass.

3) If there were goals you were unable to meet, what were the reasons?

I wanted to get grass finished by now, but am running into an exception that’s breaking my program. On Tuesday we plan to do a long coding session, during which I should be able to finish debugging that.

4) What are your specific goals for the next week?

Finish grass, implement physical boundaries in our scene such as a fence to blockade players from venturing too far. Add in fields, etc. Work with the physics side to get collision detected for the inputted objects recognized. Also design eggs, add in more lighting, work with Phoebe to get more UI done.

5) What is your individual morale (which might be different from the overall group morale)?

Not too bad since it’s coming together! Just need to rev up the pace since demo day is around the corner.

Phoebe:

1) What were your concrete goals for the week?

I wanted to have a working game lobby so we can transition smoothly between game states.

2) What goals were you able to accomplish?

I was able to get font rendering working and put together a menu with 2D sprites. I’m currently in the middle of debugging sprite selection, because there seems to be something wrong with my shader.

3) If there were goals you were unable to meet, what were the reasons?

I wasn’t able to get the game lobby working yet because I ran into issues with detecting sprite selection. Also, the font and 2D sprite rendering took longer than expected because our original shader class had some issues that we found while working on the menus.

4) What are your specific goals for the next week?

Hopefully I can work with matt to figure out my shader issue since he has more knowledge of OpenGL than I do. Once that’s fixed, and element selection is working, it should be simple to finish the rest of the menus. I also hope to do the animation for the melee chicken attack.

5) What is your individual morale (which might be different from the overall group morale)?

I’m glad that I was able to render fonts and menus on my own, and I’m excited to get the game lobby finished 🙂 Hopefully I don’t run into any more hiccups.

Week 6

Week 6

Overall Status:

  • Network: We’ve bridged graphics and physics!! Eggs can now be collected in both worlds.
  • Graphics: Added abilities to add and remove entities from the scene. Got animation working with appropriate materials and an animation player that should work well with a character pipeline (yet to be created).
  • Gameplay: Can pick up eggs
  • Input:
  • Art:
  • Audio:

Meeting Dates:

  • Every Tuesday and Thursday morning for all team meetings
  • Tuesday and Sunday for networking team
  • Monday for a combination of some networks & graphics

Group Morale:

I think we collectively feel behind schedule, though on the brink of getting real gameplay going.

Screenshots:


Individual Progress Reports:

Brian:

1) What were your concrete goals for the week?
My goals this week was to update graphics to represent the physics world. More specifically, we already had the chicken in the physical world detect collisions with walls and eggs (flags) and we wanted the graphics side to reflect that.

2) What goals were you able to accomplish?
We were able to get the graphics to update correctly and we can now spawn eggs and the chicken in the world and go around to pick them up thanks to the new API’s provided by the graphics team. We also had to change some of the network side by adding new packet types and actions.

3) If there were goals you were unable to meet, what were the reasons?
We were able to get our immediate goals done but we did run into some troubles with off by one errors with our object IDs but that was fixed after some mild debugging.

4) What are your specific goals for the next week?
We hope to get the multiplayer working next where we can have 2 or more players control their own chicken while collecting the eggs across the world. That would take some more consideration into the structure of our network side to avoid any race conditions and to make sure that all the correct information is being sent to the clients.

5) What is your individual morale (which might be different from the overall group morale)?
My morale is pretty good right now. It was really cool to see the eggs being picked up after colliding with it. I can’t wait to get other players in the world to see a bunch of chickens run around.

David:

1) What were your concrete goals for the week?
Helped connect the physics API and the graphics side with the networking team.  Starting to implement additional game logic elements on the server side, fixing the symbolic map walls, implementing the jump reset, spawning and handling projectiles to do player damage.

2) What goals were you able to accomplish?
Helped finish connecting server player movement and egg collection with the client graphics.  Fixed the physics map walls, jump reset, spawning and handling projectiles, as well as worked on restructuring classes with class and object ids.

3) If there were goals you were unable to meet, what were the reasons?
Finished the main goals I wanted to accomplish.  Restructuring with class and object IDs helps dynamic object spawning, but slowed extra progress.

4) What are your specific goals for the next week?
Get rotation, jump, and bullet firing connected with graphics.  Implement different weapons or powerups, maybe with a type of grenade effect.

5) What is your individual morale (which might be different from the overall group morale)?
Seeing the player pick up eggs is a really nice moral boost.  Feeling time slip by though, wanting to pick up the pace

John:

1) What were your concrete goals for the week?
I wanted to bridge the physics and graphics worlds so that we can pick up eggs upon collision.

2) What goals were you able to accomplish?
We can now pick up eggs on collision

3) If there were goals you were unable to meet, what were the reasons?
Movement isn’t perfect right now since we’re not sending orientation of the object yet. We’re only sending position. This is problematic because “forward” for the player is always in a specific direction regardless of where they’re facing.

4) What are your specific goals for the next week?
Refine movement, do more basic gameplay stuff, specifically bullet logic.

5) What is your individual morale (which might be different from the overall group morale)?
I’m glad we have something now haha.

Matt:

1) What were your concrete goals for the week?
Get animation working and once that’s done to place it in a usable structure for multiple animations on events. Maybe also to work on UI.

2) What goals were you able to accomplish?
Got animation working and it’s in a fairly good structure. Materials for objects work so the coloring is right.

3) If there were goals you were unable to meet, what were the reasons?
Not fully sure how to put the character pipeline in in regard to walking, attacking, idle, etc. but I think that’ll come a little later. I wanted to make a better system for events so when the server tells us to move, we’ll change coordinates and play the walking animation (which I guess is character pipeline) or similarly on dance to play the animation and music. Didn’t get to that because parsing over the animation to a better structure took a little longer than expected. UI was not touched at all in terms of menus or health bars.

4) What are your specific goals for the next week?
We need to create a game lobby to connect to server. If we can include graphics in it, that would be good, but not sure how long that will take to research and implement. Would like to start working on the map and creating a world to play in. Also need to correct camera/model coordination and make the player use our animated model instead of the static one as well as fix the coordinate space movement.

5) What is your individual morale (which might be different from the overall group morale)?
Very happy I have animation done 🙂 I want it in a usable state, but not sure if that’s good to do now. Do indeed feel behind, but now that animation’s done I should be able to put much more time toward the gameplay or something of the sort.

Michelle:

1) What were your concrete goals for the week?

Work on UI and add lighting/shaders.

2) What goals were you able to accomplish?

Restructured the storage of objects from vectors into a map to now keep track of each object using a class ID and an object ID. Created adding and removing entities and helped merge with networking so that physics can be represented in our world. A collision with an egg can now be detected and registered as “collected.”

3) If there were goals you were unable to meet, what were the reasons?

Didn’t get to UI or developing more advanced lighting/shaders yet since there were higher priorities, but will definitely get to them next week.

4) What are your specific goals for the next week?

See above, UI (menus, health bars, etc). Now that animation and physics are working, we can work on more gameplay and scene design.

5) What is your individual morale (which might be different from the overall group morale)?

We definitely need to pick up the pace but we are setting ourselves up in a good position to do so. A hackathon session next week would be good.

Phoebe:

1) What were your concrete goals for the week?

I wanted to finish up multiplayer controls and fix some bugs we were having last week in regards to that.

2) What goals were you able to accomplish?

I managed to fix get multiplayer controls up and running (on master), and I also started working on managing our game states and creating menus so that we can do a game lobby to create teams.

3) If there were goals you were unable to meet, what were the reasons?

N/A

4) What are your specific goals for the next week?

Next week, I’d like to have a working game lobby where we can create our two teams and be able to transition between menus/play state smoothly.

5) What is your individual morale (which might be different from the overall group morale)?

I’m optimistic and hope to push through the coming weeks to make some awesome gameplay 🙂

Week 5

Week 5

Overall Status:

  • Network: There wasn’t much work to be done on the networking. We went to work on physics with David instead.
  • Graphics: Working on displaying eggs and running animations. Eggs can be added, and different textured chicken models can be used for players.
  • Gameplay: Moved player around to collect flag objects
  • Input:
  • Art:
  • Audio: Is working on SFML, though it’s not currently useful.

Meeting Dates:

  • Every Tuesday and Thursday morning for all team meetings
  • Saturday for graphics team
  • Tuesday and Sunday for networking team
  • Monday for a combination of some networks & graphics

Group Morale:

I think we collectively feel behind schedule, though on the brink of getting real gameplay going.

Screenshots:

PlayerVelocitySuccess

PlayerAcquiresFlag


Individual Progress Reports:

Brian:

1) What were your concrete goals for the week?
This week, we wanted to get a successful world set up where players can spawn and run around and pick up eggs. In order to do this, we had to first get collision detection working.

2) What goals were you able to accomplish?
We were able to get Bullet pretty much integrated into our network code with some bugs that need to be fixed. We believe we have most of the physical world set up. As for multiplayer, on the Client side of things on another branch, things seems to be more functional but not complete yet either.

3) If there were goals you were unable to meet, what were the reasons?
We weren’t actually able to get both sides merged yet as to difficulties with Bullet. We believe that we just don’t fully understand the library as we had hoped in the beginning. As mentioned before, we have physical objects for players and eggs, but it seems like movement and collision detection is a little weird. We believe it might be pointers are going around correctly or maybe we aren’t setting the correct values.

4) What are your specific goals for the next week?
Once we get these bugs fixed, we hope to actually merge both the graphics side and the client side again to get the players running around collecting eggs. I believe it isn’t that much further as soon as we fully grasp Bullet.

5) What is your individual morale (which might be different from the overall group morale)?
I’m feeling slightly frustrate because I can’t seem to follow everything that’s happening in Bullet, but I am starting to get it more, so I hope once everything becomes clear, I can get everything set up and ready to go.

David:

1) What were your concrete goals for the week?

My goals were to further implement the game logic with the physics engine; to implement movement, flag/egg collection, jump, and other game play mechanics with the physics library.

2) What goals were you able to accomplish?

After debugging an issue that prevented physics objects from being updated, we now have the player able to move around and collect randomly spawned eggs/flags.  Most of the issues were with the unforeseen prevention to object updates, but with that solved, everything should work a lot smoothly.

3) If there were goals you were unable to meet, what were the reasons?

Extra game play mechanics of bullet spawning and angle of fire have been delayed to fix general movement and flag collection.  Debugging the updating issue with the physics object took time and was the main reason.

4) What are your specific goals for the next week?

Finally connect the game logic with the graphics team and start working on combat game play.  At least get bullets to spawn and deal damage.

5) What is your individual morale (which might be different from the overall group morale)?

Got frustrated since I thought I understood Bullet better, but after solving the update issue, things aren’t so bad.

John:

1) What were your concrete goals for the week?
Get the chicken to pick up eggs through collision detection. We wanted this to be reflected in both the physics world and graphically.

2) What goals were you able to accomplish?
We set up the physics world with Bullet. We’re at a point where we can see some collisions, but movement is buggy right now, so we can’t run the chicken into an egg yet.

3) If there were goals you were unable to meet, what were the reasons?
We can’t pick up eggs yet because of the issues with movement right now.

4) What are your specific goals for the next week?
Get these bugs sorted out. Finish collision detection, which would let us collect eggs. I feel like we’re so close to getting it to the point where we can almost call it a game.

5) What is your individual morale (which might be different from the overall group morale)?
Pretty average. I feel like we’re behind, but we’re also meeting more often now.

Matt:

1) What were your concrete goals for the week?
Get animation working.

2) What goals were you able to accomplish?
I was able to add the newest version of Assimp to load in fbx files and start testing the animation code.

3) If there were goals you were unable to meet, what were the reasons?
I was unable to get the animation working. I think there’s a combination of complexity in switching from OpenGL 1.2 to Modern OpenGL that makes this more difficult, but also trying to use a tutorial’s code which is quite complex in itself. If the tutorial’s code is supposed to work on it’s own, I’m not sure why it doesn’t, so everything is suspect for bugs at the moment.

4) What are your specific goals for the next week?
Animation. But also, again, if we can quickly provide what the other teammates need in terms of client-side graphics, then Michelle and I can start looking into UI/menus or terrain.

5) What is your individual morale (which might be different from the overall group morale)?
It’s pretty mediocre, but not terrible. At least at this point the issue isn’t trying to get the libraries to work, but rather doing something that I know how to do and debug.

Michelle:

1) What were your concrete goals for the week?

Try to get animation working and also put some eggs in the scene for the networking and physics team to try collision detection with.

2) What goals were you able to accomplish?

Took a break from animation to let Matt take a stab at it. Created an Egg class to easily add eggs into the scene, and also wrote a function to easily change the texture of the chickens which will come into play when we have different players with different chicken textures, as well as when the chickens change texture in response as a result of picking up an item.

3) If there were goals you were unable to meet, what were the reasons?

Animation has been a huge roadblock thus far. We are conversing with other teams about it, which has helped make slight progress, but we are still unsure where the bug lies since it is modern OpenGL and we are still learning as we go. There are lots of other tasks to do besides animation, so working on other things seems like a better option for now.

4) What are your specific goals for the next week?

UI, build a more finalized scene that we will use for our demo, add lighting/shaders, possibly environment mapping. If we begin to see a slow in performance, we can use the following week to optimize.

5) What is your individual morale (which might be different from the overall group morale)?

I think we need to meet more as a team, not only for productivity reasons but also for morale reasons. I agree with the group morale. This week Phoebe had to go to the hospital for internal bleeding which was frightening 🙁 She is healing now and I hope she feels better soon!

Phoebe:

1) What were your concrete goals for the week?

I had wanted to get all the multiplayer controls, spawning, and picking up eggs completed.

2) What goals were you able to accomplish?

Unfortunately, I wasn’t able to meet any of my goals.

3) If there were goals you were unable to meet, what were the reasons?

On Tuesday I spent the afternoon trying to fix a networking bug created by our merge. Late that night, I had severe abdominal pains and I had to go to the ER after vomiting and blacking out from the pain. It turns out I had a ruptured ovarian cyst that caused severe internal bleeding, and I had to stay in the hospital for a day to monitor my blood pressure/blood count. I was prescribed narcotic pain medication that left me unable to do anything for the entire week while I healed.

4) What are your specific goals for the next week?

Next week, I hope to complete my goals from this week and help out wherever the team needs me.

5) What is your individual morale (which might be different from the overall group morale)?

I feel horrible for setting my team back 🙁 I had really wanted to work from bed but my medications kept me knocked out and I gave up trying to stay awake.

Week 4

Week 4

Overall Status:

  • Network: The network infrastructure is pretty solid now. We improved the packet system to use a byte buffer so we can be flexible with the data we’re sending.
  • Graphics:
  • Gameplay:
  • Input:
  • Art:
  • Audio:

Meeting Dates:

  • Every Tuesday and Thursday morning for all team meetings
  • Saturday for graphics team
  • Tuesday and Sunday for networking team
  • Monday for a combination of some networks & graphics

Group Morale:

 

Screenshots:

 


Individual Progress Reports:

Brian:

1) What were your concrete goals for the week?
To get the client to update based on what the server had sent back. Also, we worked on the new packet structure changing it from a set structure to something more like a byte buffer of some sorts.

2) What goals were you able to accomplish?
We got the client to update accordingly to the server and what it sent back instead of just doing everything client side. The packet structure was also changed into a byte buffer which allows for multiple structures of packets to be sent back and forth.

3) If there were goals you were unable to meet, what were the reasons?
We got everything done for the week and functioning. We did run into trouble of how we initially imagined the byte buffer. We had hoped it to be a packet with a variable buffer length. We soon found out that storing a pointer to a buffer and sending that pointer to a client won’t mean anything so we ended up having a fixed length buffer of the biggest object needed to send back and forth instead of a ridiculously large buffer which causes excess data to be sent back and forth.

4) What are your specific goals for the next week?
Now that we got a hopefully nice buffer working, we plan to start working more on game logic thus allowing us to expand on the types of objects and structure of the network when sending packets back and forth.

5) What is your individual morale (which might be different from the overall group morale)?
It’s pretty good right now. Interesting things are being done with our group and it’s cool to see the world we made interact on two different computers.

David:

1) What were your concrete goals for the week?
My concrete goals were to fix the Visual Studios issues with the Bullet Physics installation, get symbolic objects for Player, Map, and Bullets, as well as connect networking to the physics engine

2) What goals were you able to accomplish?
I was able to fix the Visual Studio installation issues with the Bullet Physics engine, and have continued implementation of the game physics objects.  I have been implementing the game logic as an API that the network update method can call.

3) If there were goals you were unable to meet, what were the reasons?
We have not yet connected the network update to call the Game Physics API just yet, but we are ready to.  We will do so during our next meeting

4) What are your specific goals for the next week?
Further implement the game logic in adding health calculations, angle of fire, different weapon types, and flag pickups.  See if components can be utilized in game implementation.

5) What is your individual morale (which might be different from the overall group morale)?
After fixing the Visual Studio issues, I feel like I better understand the IDE and can focus more on game implementation.  More hopeful

John:

1) What were your concrete goals for the week?
I wanted to improve the packet structure to use a byte buffer so that we could send more general packets between the client and server.

I wanted to merge the networking side with David’s game objects this week so that we’d have a fully integrated graphics/network/game-physics into a “game”.

2) What goals were you able to accomplish?
I implemented the packet improvements and started a pattern for object serialization/deserialization. We only have one type of object so far that contains positioning info, but as we go along, we can just use this pattern for (de)serialization.

3) If there were goals you were unable to meet, what were the reasons?
Met up with David to try to start integrating his game objects, but we were running to some issues with bullet and Visual Studio. We managed to get those issues resolved, but didn’t have the time to start the integration.

4) What are your specific goals for the next week?
I’ll be working with David on the game objects, physics, and gameplay since the networking side is pretty solid now. I’ll still keep an eye out on improvements we can make to the network infrastructure though.

5) What is your individual morale (which might be different from the overall group morale)?
I’m feeling pretty good since the networking side of things is laid out now. I’m also a bit nervous since we delayed our merge meeting a bit and haven’t done it this week. Everyone seems to be far from master, so things might get a little messy. We’re hoping to merge before or after our meeting with Prof. Voelker tomorrow.

Matt:

1) What were your concrete goals for the week?
I wanted to get a better structure for objects in the Scene to be able to add them more robustly. I also wanted to get animation working.

2) What goals were you able to accomplish?
I made fair headway on the structure for the scene, creating a superclass for objects

3) If there were goals you were unable to meet, what were the reasons?
I got more involved in animation this week and found some problems such as Visual Studio’s version of assimp not loading fbx files, nor multiple input files for formats such as md5. Started looking into other formats/loaders. I also got a little stuck on design patterns in regard to having an Entity superclass and which classes should subclass, etc.

4) What are your specific goals for the next week?
I want to read more on design patterns for video games to have cleaner code. Aside from that, having the game in a state where we can pick up eggs is important and continuing to look into more graphics improvements will be beneficial along the way. Particularly need to look into UI such as health bars, name tags, etc.

5) What is your individual morale (which might be different from the overall group morale)?
A little tired to that animation keeps sucking up time without having obvious answers. If I didn’t think about it I feel like there’d be a lot more progress toward other goals.

 

Michelle:

1) What were your concrete goals for the week?

2) What goals were you able to accomplish?

3) If there were goals you were unable to meet, what were the reasons?

4) What are your specific goals for the next week?

5) What is your individual morale (which might be different from the overall group morale)?

Phoebe:

1) What were your concrete goals for the week?

My goals for this week were to create more animations and create an engine on the server that will handle any manipulations we need to do from client packets.

2) What goals were you able to accomplish?

I made animations for jumping and pecking, and I got the client to update based on packets sent from the server. I also created an engine on the server that holds a virtual representation of our world and holds the positions/states of all the objects. Data from this virtual world is now used to update the view in the clients. I created a function in the engine to generate random locations for any type of object, but I haven’t applied it to the actual game yet because I’m in the middle of finishing up multiplayer controls.

3) If there were goals you were unable to meet, what were the reasons?

There’s nothing I wasn’t able to meet, as I got further than I expected to this week.

4) What are your specific goals for the next week?

Next week, I want to finish multiplayer controls, integrate random spawning, and implement picking up eggs. I expect multiplayer controls to take up a bulk of my time since I’m likely to run into bugs with current server/network implementation.

5) What is your individual morale (which might be different from the overall group morale)?

I’m very optimistic about the actual engine, but worried for the animations side since the graphics experts weren’t able to complete animation loading this week.