Week 2Last updated: 2020-04-15

Overview

Team morale is high and everyone is excited about our game. We all are excited to see the game come together and can't wait to be able to play our game. But we did have a few issues with communication and staying productive. We are hoping to address these issue by being more active on our discord and checking in with our subgroups daily.

Our goals for this week were to set up our toolchain and start building a basic client, a server-client echo server, and producing a basic map layout. This includes establishing the how we are going to hold and update our game state.

What we achieved

We created a game flow and UML Diagram based upon our current understanding of the project.

We implemented ~40% of the core gamestate classes.

We built a server-client echo server.

What we didn't achieve

Finalize the game state transefer specification

Build a basic graphics client that has a moving cube.

Finish the game state classes

Our plan for next week is to get our basic graphic client cube working, continue to add to the game state, add game state to the client, establish reliable transfer of game state between server and client, add collision, and create concept art for out models.

Screenshots

Current Game Flow Diagram.
Current UML Diagram.

Individual Reports

Christopher Maytom

Goals for week 2:

Design and implement the game state and all current object classes and handle update events that modify the game state.

Goals reached:

I was able to implement a basic version of our game state which included a base object class and moving objects class and allows for the creation and basic updating of these classes.

Goals unable to reach:

It took me a while to get used to visual studio which delayed me so I wasn't able to implement all the classes for each game object. I also struggled to set up a work schedule during this week but plan to follow a more strict schedule next week which should help me get more done.

Goals for next week:

Next week my goal is to finalize an MVP for the game state and then implement movement and collision detection.

What I learned:

I learned a lot about Visual Studio while exploring it and setting up our tool chain. I also learned about gitflow since our team is using gitflow methodology to keep our github repository. The only other thing I relearned was c++ since I haven't used c++ in a while.

My morale:

The more I work on the project the more excited I am about it. I feel like I am going to learn a lot from this project including how to work remotely.

Steven Hausman

Goals for week 2:

Create a basic client window that renders a moving cube

Goals reached:

Created the client class

Goals unable to reach:

Creating the window and rendering the cube because we had issues with the libraries that we were using and so far have been unable to compile running versions

Goals for next week:

Finishing rendering the cube to the client's display window, finding/creating in game models, working on concept art to guide our search

What I learned:

I learned how to set up the environment to work on our project and learned how to solve some issues with setting up the libraries we need.

My morale:

I'm disappointed that we ran into issues before we started making progress, but I'm confident that we can make significant progress once we solve these basic issues.

Patrick Liu

Goals for week 2:

Set up toolchain and finish basic entity classes

Goals reached:

Set up toolchain

Goals unable to reach:

Finish basic entity classes(~40% done)-didn't put enough time in, and our UML chart wasn't as clear as it should have been

Goals for next week:

Finish entity classes, perform serialize/deserialize on gamestate, start on interations between entities

What I learned:

Visual Studio's build system, CMake

My morale:

feels pretty good right now, though need to put in much more work in coming weeks.

Thiago Marback

Goals for week 2:

Create basic client and display models

Goals reached:

Set up toolchain, display something in a window

Goals unable to reach:

Displaying models, due to issues with necessary OpenGL libraries

Goals for next week:

Implement loading and displaying models, camera movement

What I learned:

How to configure a CMake project and use vcpkg

My morale:

Fairly good, setting up OpenGL makes me angry but we're getting somewhere.

Anthony Lau

Goals for week 2:

We intended to build a simple echo server and flesh out what data needed to be sent across the network.

Goals reached:

We were able to develop a simple echo server and decided the general format of how we would pass data between the server and the clients.

Goals unable to reach:

We did not fully specify the data needed to be transferred between the server and clients, as we have not entirely decided how to represent game state and client events.

Goals for next week:

Decide on a representation for game state and client event transfers and add those transfers to the echo client.

What I learned:

I learned about visual studios and cmake as part of our toolchain and about winsock, windows threads, and other windows-specific C/C++ features.

My morale:

I feel pretty good about the progress so far, seems relatively on track.

Cameron Foster

Goals for week 2:

Tony and I planned to have a basic echo server up and running along with a finished spec for how the game state would be stored.

Goals reached:

The basic echo server was finished with little to no problems (aside from getting used to Visual Studio).

Goals unable to reach:

The game state spec was not finished. Because Visual studio is a new IDE for me and I have not worked with Windows sockets in C++ before, most of my time was spent reading up on how to use Winsock and how to effectively navigate and use Visual Studio. This, along with a lack of communication, led to the game state spec falling to the wayside.

Goals for next week:

The plan for next week is to have the game state spec fully fleshed out and to get the state to transfer between client and server reliably.

What I learned:

Communication is very important to keeping things running smoothly. I have a better understanding as to how I should use Visual Studio and Winsock.

My morale:

This is a big task, but I'm ready to tackle it!

Week 3Last updated: 2020-04-22

Overview

Team morale remains high as things are begining to come together. Our commoradory is up as every is being active on our discord. There are still issues with working remote and keeping in contact but we are all trying our best to make the most of this situation.

Our goals for this week were to get everything setup to join our game together by the end of the week. This included tasks such as specifying all data transfer formats and how all data will be represented at each state.

What we achieved

Updated our UML diagrams to reflect changes in our project

We implemented minimum core gamestate classes including players and events

Created basic models

Implemented more aspects of our rendering including geometry rendering and entity tracking

Implemented server side network interface ready for plug in actual data

What we didn't achieve

Finish finalizing movement events

Deserialize all classes

Load 3d models

Implement collision checks

Implement client network interface

Our plan for next week is to finish all parts to an MVP level and piece our project together, continue to add to the game state, implement deserialization and collision, load 3d models, add more game logic related to game play instead of infrastructure, and continue to work on our models.

Screenshots

Current Game Flow Diagram.
Current Client
Current Player Model
Current Shelf Model

Individual Reports

Christopher Maytom

Goals for week 3:

My goals for this week were to finalize an MVP for the game state including deserialization, implement movement, implement collision detection, and try to piece our project together.

Goals reached:

We wrote all the files to support having players that move around and have set up the architecture for handling events to enable us to quickly create and edit new events without making any major changes to the code we have now.

Goals unable to reach:

We were unable to fully implement movement since we didn't finalize how we plan to map mouse inputs. Also we didn't finish implementing the deserialization due to our focus on implementing the events. We were hoping to put everything together but ran out of time since we ran into architectural issues that delayed us since they required us to discuss how we planned to solve them.

Goals for next week:

Next week I would like to implement all the classes to support a game run on the server that allows a cube to move around. This involved implementing deserialization, and adding mouse events. After achieving this I want to add map objects and start implementing the shoppers and their AI logic.

What I learned:

This week involved a lot of architectural decisions about how we wanted to implement our game engine. Each decision involved discussions about the costs and benefits of certain implementations and this served as good practice in seeing how architectural decisions will impact our project. In addition to this, these discussions were great practice for learning how to articulate my opinions and add to the discussion. Finally, I after a few weeks of development I feel a lot more comfortable with C++ and Visual Studio.

My morale:

I'm still excited since I keep finding new things that I didn't know. I can't wait to see the game running.

Steven Hausman

Goals for week 3:

Start looking for and creating models and textures, write a function to load models

Goals reached:

Created some basic models for players/enemies and the environment

Goals unable to reach:

Creating a function to load models - I didn't have time to work on it yet and I plan on doing it later this week

Goals for next week:

Continuing work on models and textures, and trying to get some to display on the client

What I learned:

How to work more efficiently in blender

My morale:

Feeling confident but slightly confused about our plans

Patrick Liu

Goals for week 3:

Finish entity classes, perform serialize/deserialize on gamestate, start on interactions between entities

Goals reached:

Finish entity classes, finished serialize, started on interactions between entities

Goals unable to reach:

Deserialization, collision

Goals for next week:

Collision, deserialization, start on game-specific classes for actual game logic instead of infra

What I learned:

Software design is really hard when you're not in the weeds, and you regret a lot of things you did earlier

My morale:

Reasonable, looks like we're more or less on track, but still can't let up.

Thiago Marback

Goals for week 3:

Implement rendering of entities with arbitrary geometry and position, attach camera to an entity, load geometry from object files, send actions to server and sync positions

Goals reached:

Geometry rendering, entity tracking, camera

Goals unable to reach:

Loading geometry from files (not enough time), sync with server (exact specification of events that will be send across the network not finalized yet)

Goals for next week:

Load geometry, sync with server, movement predictions, engine optimizations

What I learned:

Nothing of note.

My morale:

Things are starting to mesh together.

Anthony Lau

Goals for week 3:

I planned to specify the data to be transferred across network and integrate network communication into game loop.

Goals reached:

I set up the server-side network interface to receive incoming client events (using a dummy data type) so that the actual data can be plugged in when ready.

Goals unable to reach:

I did not specify the data to be transferred, as that task was taken up by Chris and Patrick, but the server-side network interface should be able to accept whatever they finalize.

Goals for next week:

Next week I plan to fix any bugs in sending the network data and otherwise assist in setting up game logic on the server.

What I learned:

I learned about the windows threading API and more about building with CMake.

My morale:

My morale is still pretty high, as the pieces of the project seem to be coming together well.

Cameron Foster

Goals for week 3:

Set up a reliable transfer of state between client and server.

Goals reached:

I continued to learn about winsock and assisted in discussions about gamestate.

Goals unable to reach:

Due to being sick with COVID, I was not able to contribute as much as I had originally planned. State transfer is not yet fully established

Goals for next week:

Get past my illness and do my best to pick up the pace and completely integrate server and client communication.

What I learned:

I've continued to learn about windows sockets and how to best use visual studio in addition to reading up on game and level design.

My morale:

Starting to feel better and ready to contribute again!

Week 4Last updated: 2020-04-29

Overview

Team morale remains high but our slow progress is definitely impacting our morales. Due to other courses and projects we were unable to achieve our goals.

Our goals for this week were to finally get everything setup to join our game together since we were unable to last week.

What we achieved

Implemented improved Client network interface

We implemented deserialization classes

Continued to work on our models

What we didn't achieve

Finish finalizing mouse movement events

Load 3d models

Implement collision checks

Finalize core server and link the client.

Our plan for next week is to finish get an MVP game running, continue to add to the game state, implement basic physics such as collision, load 3d models, add more game logic, create basic game related UI, and continue to work on our models. The goal is to have a game that includes a player that can move around the map and AI objects that interact with the map objects.

Screenshots

No new game related graphics

Individual Reports

Christopher Maytom

Goals for week 4:

This week I wanted to implement all the classes to support a game run on the server that allows a cube to move around. This involved implementing deserialization, and adding mouse events. After achieving this I want to add map objects and start implementing the shoppers and their AI logic.

Goals reached:

I was able to implement all the classes needed to support deserialization excluding mouse movements because ran out of time to put them together. In addition to this I started figuring out how I was going to implement map objects and the AI classes.

Goals unable to reach:

I didn't add mouse events because I ran out of time. Since the project is still not fully together I didn't get to implement the map objects or AI classes. The main reason that I didn't spend as much time on the project this last week was due to my other group assignment which had a deliverable due on Monday.

Goals for next week:

My goal for the beginning of next week is to finally put the main server loop together and connect the clients movements to sending events. After getting this together, I will implement the map objects and AI. To achieve this I'm planning on spending at least 2 hours a day in the discord so that I am able to work better with my teammates.

What I learned:

This week I learned a lot about c++, specifically about special pointers, pure virtual vs virtual functions, dynamic casting, and also implemented a few design patterns I learned in CSE 110.

My morale:

I'm definitely worried about staying motivated after the slow progress this week.

Steven Hausman

Goals for week 4:

Write code to load our models into the graphics client, create basic animations for our models to test animation in the graphics client, work on creating/finding more models

Goals reached:

Worked on more models for boxes and barriers

Goals unable to reach:

Loading models into the graphics client - I just haven't taken the time to do it, Creating animations - This takes more work than I thought, so I am still working on finishing a basic animation and figuring out how to get it into the graphics client

Goals for next week:

Finishing the incomplete tasks from this week and start investigating particle effects

What I learned:

How to create model animations in blender

My morale:

Somewhat disappointed in my progress but hopeful that we can get back on track

Patrick Liu

Goals for week 4:

Collision, deserialization, start on game-specific classes for actual game logic instead of infra

Goals reached:

Some deserialization

Goals unable to reach:

Deserialization: Struggled some with the serialized representation, and ended up quite busy with other classes, so didn't get to spend as much time as I would like. Collision, game logic: Didn't finish deserialization

Goals for next week:

Collision, finish deserialization, start on game-specific classes for actual game logic instead of infra

What I learned:

Compilers are wacky, and also that I should budget my time better

My morale:

Not great, getting not a whole lot done this week didn't feel very good

Thiago Marback

Goals for week 4:

Load geometry, sync with server, movement predictions, engine optimizations

Goals reached:

N/A

Goals unable to reach:

All of them, because of midterms, other projects/HW, and personal stuff.

Goals for next week:

Load geometry, sync with server, movement predictions, engine optimizations

What I learned:

N/A

My morale:

Things seem to still be progressing so pretty good.

Anthony Lau

Goals for week 4:

I planned to help integrate network communication into the server and client loops.

Goals reached:

I advised how the server side networking should integrate into the gameplay loop once the serialization/deserialization is complete.

Goals unable to reach:

We did not finish integrating server, client, and network, as object serialization/deserialization for the network has not yet been completed. Also, I was not able to help as much as planned, as I have been working on midterms for my other courses.

Goals for next week:

I plan to continue assisting in getting the network components online, but if I remain blocked, I will start working on AI.

What I learned:

I learned that midterms and midterm preparation are quite time consuming.

My morale:

My morale is at a medium level, as progressive somewhat stalled, but midterms will hopefully be mostly over after this week, so we can get back to working on the project.

Cameron Foster

Goals for week 4:

Implement the interfaces for processing networking events on the client side and fully integrate these interfaces with the game state.

Goals reached:

The interfaces are finished on the client side.

Goals unable to reach:

Game state was not fully integrated as game state is close to being finalized but not ready.

Goals for next week:

Finish up the networking aspect of the project and move on to helping with game logic.

What I learned:

I continued to learn about winsock.

My morale:

I am eager to shift my focus towards working on the game logic.

Week 5Last updated: 2020-05-07

Overview

Team morale is higher than last week but we are becoming more aware of issues related to time restraints caused by other courses. There was a bit of bumping heads when putting everything together as we had differing understanding of what should and has been done.

Our goals for this week were to start focusing on implementing game features while two people finish connecting the client.

What we achieved

Load models from obj files

Generate map based upon an input file specifying the layout

Fixed and updated movement events

Made a basic animation

What we didn't achieve

Implement mouse movement events

Implement AI

Implement collision checks

Link the client to the network code

Implement interactions

Implement animations

Our plan for next week is to have most of the team focus on the gameplay while we let two people debug any issues introduced during the last week. This means we want to add to the game state, implement basic physics such as collision, implement player interaction with AI ,implement basic waves and score system, create basic game related UI. We are definitely behind but will have to start prioritizing features. This means that by the next meeting we want to have something we can play and get feedback related to what we should focus on.

Screenshots

Current Basic Map

Individual Reports

Christopher Maytom

Goals for week 5:

My goal for this week are to finally put the main server loop together and connect the clients movements to sending events. After this I wanted to implement the map objects and a basic AI.

Goals reached:

I finished a the main server loop and have the server sending game state updates and receiving player events. Finally I started working on the map objects.

Goals unable to reach:

I didn't add mouse events because I ran out of time. Since the project is still not fully together I didn't get to implement the map objects or AI classes. The main reason that I didn't spend as much time on the project this last week was due to my other group assignment which had a deliverable due on Monday.

Goals for next week:

My goal for the beginning of next week is to add mouse events, add basic collision detection and interactions, and implement game phase system.

What I learned:

I learned a bit about opengl while reviewing the client code and I'm starting to feel comfortable with c++.

My morale:

Good teamwork makes the dream work. But good teamwork is hard to achieve.

Steven Hausman

Goals for week 5:

Create models, load the models in the client graphics

Goals reached:

Create models, load the models in the client graphics, create a structure to load maps from files

Goals unable to reach:

None

Goals for next week:

Learn how to create model animations and load them into opengl

What I learned:

How to read .obj files line-by-line to generate vertex data in opengl

My morale:

I'm excited by my progress this week

Patrick Liu

Goals for week 5:

Collision, deserialization, start on game-specific classes for actual game logic instead of infra

Goals reached:

Deserialization

Goals unable to reach:

Collision-spent time on integrating client/server instead. Game logic-same as above

Goals for next week:

Collision, game-specific classes

What I learned:

Coordinating between people isn't the easiest when we all have different schedules

My morale:

Not bad, definitely a little low, but better than last week

Thiago Marback

Goals for week 5:

Sync with server, movement prediction

Goals reached:

N/A

Goals unable to reach:

All, waiting on some blockers from other areas (server and networking) and had to work on projects for other classes.

Goals for next week:

Sync with server, movement prediction

What I learned:

N/A

My morale:

Fell a bit due to some external factors, but progress is being made overall so still pretty good.

Anthony Lau

Goals for week 5:

I planned to hep finalize the client/server integration and start working on AI.

Goals reached:

I added a few server network features to streamline server-side communication and started working on very basic grid-based AI.

Goals unable to reach:

I did not get a chance to fully debug the added network code, and I do know of one concurrency issue that should be low impact, but I have not gotten around to fixing it yet.

Goals for next week:

I plan to work more on AI, incorporating it into the GameState classes

What I learned:

I learned that concurrency is always annoying to debug, since some some things need to be serialized.

My morale:

My morale is medium, things do seem to be picking back up again.

Cameron Foster

Goals for week 5:

Move away from networking and help with enemy AI

Goals reached:

Goals were not achieved

Goals unable to reach:

Had very little time to work on CSE125 as my entire week was taken up by a CSE132B project milestone.

Goals for next week:

Continuation of goals from this week. Start working on AI and general game play loop

What I learned:

I should be budgeting my time better to stay on track with weekly goals

My morale:

Concerned about the amount of time my other classes require, but still hopeful

Week 6Last updated: 2020-05-14

Overview

Team morale has dropped but we did reach the milestone so our morale should increase as we add more gameplay features.

Our goals for this week were to get our base milestone done while the rest of the team worked on gameplay features.

What we achieved

Load models from obj files redone using ASSIMP

Added basic Shadows(buggy but we have them)

Basic server client game play milestone reached!!

Collision detection

Finished deserialization

Implement grid based pathing which is going to be used by the AI

What we didn't achieve

Implement AI

Implement interactions

Implement animations or particles

Implement Gameplay systems

Our plan for next week is to have most of the team focus on the gameplay while a few work on improving our network system and basic gamestate map representation. This means we want to add a more concrete map representation to our the game state, implement player interactions, implement gameplay features such as wave and score system, and create basic game related UI. We are still behind but have started to drop features such as sound.

Screenshots

Updated Loading Model

Individual Reports

Christopher Maytom

Goals for week 6:

My goal for the this week were to finish our base milestone, add mouse events, add basic collision detection and interactions, and implement game phase system.

Goals reached:

Milestone Achieved! I updated mouse events to be handled on the server. Also Patrick implemented collision detection.

Goals unable to reach:

I didn't implement interactions or game phases due to the fact that it took longer than expected to reach the Milestone. I was a bit busy last weekend which didn't help since it resulted in nothing being done on the weekend in regards to the milestone.

Goals for next week:

Update map representation, improve client/server messages, and implement a basic load and save current game. If I finish these then I will work with the others on the basic game play features.

What I learned:

Developing a game engine is hard.

My morale:

Feels like we just made it to step 1 and we only have a few weeks left.

Steven Hausman

Goals for week 6:

Work on shaders for lighting and shadows, learn how to make particle effects and start making some, implementing animations in Opengl

Goals reached:

Worked on shaders, did research into particle effects and animation

Goals unable to reach:

Making particle effects and animations in Opengl - I had to refactor a lot of code so that it would be easier to implement animations

Goals for next week:

Make progress on the goals from this week

What I learned:

The basics for animation in Opengl

My morale:

Happy with my progress but frustrated with how long some things took me

Patrick Liu

Goals for week 6:

Collision, finish deserialization, start on game-specific classes for actual game logic instead of infra

Goals reached:

Finish deserialization(thanks Chris!), collision

Goals unable to reach:

start on game-specific classes-was working on collisions

Goals for next week:

Do simple game-specific classes(TP, shelves, barricades, player inventory/money/hp) and interactions

What I learned:

Working in a giant discord call > working alone

My morale:

Looking something like Tesla's stock price

Thiago Marback

Goals for week 6:

Link client to server, start work on UI elements

Goals reached:

Started researching possible libraries to use for UI.

Goals unable to reach:

N/A

Goals for next week:

Implement a simple UI menu.

What I learned:

N/A

My morale:

Neutral.

Anthony Lau

Goals for week 6:

I planned to work on basic AI movement for enemies.

Goals reached:

I implemented a grid-based pathing map and a basic BFS to construct a path that can be passed to the system managing object movement.

Goals unable to reach:

I did not implement A* search due to not having enough time, and, as the pathing maps are expected to be fairly small, BFS should be good enough for now.

Goals for next week:

I plan on working on the wave system and instantiating basic enemies.

What I learned:

I reviewed tile based pathfinding.

My morale:

My morale is medium, due to needing to spend a lot of time hammering out lab 3 for 223B last week.

Cameron Foster

Goals for week 6:

Switch over to working on game logic, specifically enemy AI

Goals reached:

Researched best ways to implement AI AI pathing

Goals unable to reach:

Very little was implemented, other classes and responsibilities took up a majority of my time

Goals for next week:

start working with Tony on getting AI working

What I learned:

The layout of our map will be very grid-like, so having uniform grid placements for objects should lend to a relatively simple ai pathing algorithm.

My morale:

The quarantine conditions are definitely negatively affecting my mindset this quarter. However I believe we can meet our goals if we put in the hours in the latter half of this project.

Week 7Last updated: 2020-05-21

Overview

Team morale has is entering panic mode since there are only a few weeks left so the pressure is increasing. But in response to the pressure everyone seems motivated to spend all weekend pumping out gamepllay features.

Our goals for this week were to add gameplay features to our milestone.

What we achieved

Basic Saving & Loading Game states

Improved movement code and improved collisions

Started connecting AI to our gamestate and map representation

Implemented Basic Phases and wave system(not connected yet)

What we didn't achieve

Add AI to game

Connect Game Phases to current version

Implement animations or particles

Implement Currency systems

Implement Sounds

Our plan for this weekend is to create all phases needed for a player to join during a waiting phase, and interact with the AI during the round phase. Once we have these down we will add the economy system ontop of the phases while Thiago and steven work to add sound and particles to the game. The rest of the time will be spent on exploring and implementing gameplay features that add to the enjoyment such as UI, animations, and more interactions.

Screenshots

Sadly there were no visual updates made this week.

Individual Reports

Chris Maytom

Goals for week 7:

Update map representation, improve client/server messages, and implement a basic load and save current game.

Goals reached:

This week was more planning than coding as I was figuring out how to fix our client/server network messages which was a much bigger task than expected. I set up a way to save the current game state and can create a game state from a file but I linked it into the game.

Goals unable to reach:

So Patrick, Tony, and I all were working on different map related implementations without realizing. This was the result of bad communication about the tasks we were working on but most people. I didn't finish improving the client/server network messages since my initial changes required a lot of refactoring and I was trying to avoid redoing work that was already done. I had another class with a deliverable this past week which took more time than expected so I'm hoping to finish the tasks I didn't finish in the next few days.

Goals for next week:

Finish updating client/server messages and add game saving and loading. After this I will add support for new interactions such as picking up the barricades and placing them.

What I learned:

Communication is key.

My morale:

Mistakes were made. But we will recover!

Steven Hausman

Goals for week 7:

Work on implementing particle effects

Goals reached:

Learned how to create particle effects

Goals unable to reach:

Implementing basic particle effects

Goals for next week:

Work on particle effects

What I learned:

How to create basic particle effects in opengl

My morale:

Concerned about how we are going to combine all of our work into something functional

Patrick Liu

Goals for week 7:

Do simple game-specific classes(TP, shelves, barricades, player inventory/money/hp) and interactions

Goals reached:

Finished barricades/walls and small interactions with it

Goals unable to reach:

Other player interactables(debugging earlier code)

Goals for next week:

Finish remaining basic gameplay elements, add client-side look-good code

What I learned:

awkward decision are awkward later

My morale:

same as last week

Thiago Marback

Goals for week 7:

Clean up some code, implement sound

Goals reached:

Cleaned up some of the server/client connection, set up FMOD for working with sound effects, created some sounds for tested.

Goals unable to reach:

Implement sound in code, ran into some difficulties setting up FMOD with CMake.

Goals for next week:

Finish implementing sound, implement some UI.

What I learned:

How FMOD works in general and how to use their editor program (FMOD studio).

My morale:

Pretty good, working on something I'm not used to sometimes is nice.

Anthony Lau

Goals for week 7:

I planned to work on the wave system and enemy instantiation.

Goals reached:

I built a basic wave system, implementing a WaveHandler class and a timer system.

Goals unable to reach:

I left out the enemy instantiation, as Cameron decided to take that part up.

Goals for next week:

I plan on building a basic economy system.

What I learned:

I didn't really learn anything particularly new this week.

My morale:

My morale is still medium. We're entering a time crunch now, but we still have the capacity to churn things out.

Cameron Foster

Goals for week 7:

Implement wave spawning for AI

Goals reached:

researched possible wave spawning techniques

Goals unable to reach:

no implementation was made, all of my time was dedicated to finishing the biggest milestone for my CSE132B project

Goals for next week:

Finish the wave spawning

What I learned:

Different games implement wave spawning differently. Some have a set number of enemies that can be on the map at a present time and spawn more enemies to reach the cap until a the enemy pool for that round is exhausted. Others assign "costs" to units and place them on the map depending on both the round and map "budget" remaining. I feel that the first design would be more appropriate for our game. The only change would be slowly ramping up the max number of enemies that can be present on the map as the rounds progress.

My morale:

Medium to low, was not prepared for the workload of 132B this quarter.

Week 8Last updated: 2020-05-28

Overview

Team morale is 😟. Panic mode is enabled but we know what we want to achieve.

Our goals for this week were implement game phases, improve wave system, incorporate enemy objects, add an economy system, add sound, and add particles.

What we achieved

Added movement sound

Improved server to send only updates

Implemented a basic economy system

Improved our wave system

Implemented dispenser shelves to pick up objects from

Implemented using items on enemies(needs testing)

Implemented basic particles

Implemented basic ui

Added Shelves and Barricades

Created more models for the game

What we didn't achieve

Implement Phases

Add Enemies to the current version

Improve initial handshake to give the client dynamic data instead of static values

Implement client side object selection

Add Textures/Animations

Save and load games(we load maps though)

Our plan for this weekend is to create all phases needed for a player to join during a waiting phase, and interact with the AI during the round phase. Once we have these down we will add the economy system ontop of the phases while Thiago and steven work to add sound and particles to the game. The rest of the time will be spent on exploring and implementing gameplay features that add to the enjoyment such as UI, animations, and more interactions.

Screenshots

Demo of basic UI and spending economy by interacting with dispenser shelf(blue cude) and placing bought object

Individual Reports

Chris Maytom

Goals for week 8:

Finish updating client/server messages and add game saving and loading. After this I will add support for new interactions such as picking up the barricades and placing them.

Goals reached:

I implemented picking up, place, use, and delete events. Incorporated a basic economy system. Added Imgui for the lulz. Finalized our final game features that we want to have in our game.

Goals unable to reach:

Saving and loading game state because we have a basic loading game map from file and its not worth saving it since we don't support reloading saved games. I didn't implement client based item selection because I ran out of time. I also wasn't able to test some of the features I added since I was waiting on others to finish their implementations.

Goals for next week:

The upcoming weekend is the true make or break moment for our project since we still have a lot of work to do. So by the end of Saturday I want to finalize our phase system, improve our handshake so we can test multiple clients. Then by the end of Sunday I want to have added a score system and have a playable version of the game with our models. I also want to improve the ui and tweak a few of the constants to improve how controls feel.

What I learned:

I didn't realize how much I have learned while working on this project.

My morale:

😅👨🏼‍💻👨🏼‍🎓

Steven Hausman

Goals for week 8:

Work on creating more models, add a basic particle effect system, link the visuals to the client logic

Goals reached:

Created more models, added basic particle effect system

Goals unable to reach:

Linking the visuals to the client logic - Part of this was done by another team member, and the rest of the logic is not complete enough to be able to effectively do this

Goals for next week:

Get all of the visuals synced up and clean them up

What I learned:

All kinds of approaches for creating particle effects in Opengl

My morale:

Feeling excited about all of the components we have but worried about how we are going to make them all work together

Patrick Liu

Goals for week 8:

Do simple game-specific classes(TP, shelves, barricades, player inventory/money/hp) and interactions

Goals reached:

Shelves, barricades, player inventory/money/hp, basic interactions(placing)

Goals unable to reach:

None

Goals for next week:

Integrating the rest of our game together, polishing interactions

What I learned:

i hate everything to do with client

My morale:

¯\_(ツ)_/¯

Thiago Marback

Goals for week 8:

Implement sound, implement UI, make some improvements to networking code

Goals reached:

Sound implemented, fixed some issues with networking and improved it overall.

Goals unable to reach:

UI, struggling a bit to find a library that can be integrated without significant changes to the engine.

Goals for next week:

Add some more sounds, continue looking into UI, finish the wave system and map grid.

What I learned:

Sometimes the tools we use to develop also have bugs.

My morale:

A little concerned that there's only about a week left, but we seem to be getting close to a playable state so hopeful.

Anthony Lau

Goals for week 8:

I planned to work on the economy system.

Goals reached:

Instead, I focused on completely integrating the wave system into the current game state.

Goals unable to reach:

I did not work on the economy system, as the wave system needed more work to integrate with the rest of the gameplay mechanics.

Goals for next week:

This week I plan to work on assisting in getting the main playable mechanics working, like detecting enemy deletion and having waves target the goal.

What I learned:

I learned that true panic mode is engaged.

My morale:

Morale is medium, as despite being in a panic, we are still progressing towards our playable game.

Cameron Foster

Goals for week 8:

Get a basic economy system implemented in the game

Goals reached:

foundations of economy implemented

Goals unable to reach:

Complete integration of economy with barricade pick up (spending money) and defeating enemies (money generation), as enemies haven't been fully implemented yet

Goals for next week:

Complete economy

What I learned:

Not too much was learned this week

My morale:

The rest of my classes are starting to ease off, so I'm feeling better about putting in the time necessary to finish this off. Medium to high morale

Week 9Last updated: 2020-06-04

Overview

The team is tired and proud after all the long nights of work. Our game isn't perfect but we finally have something.

Our goals for this week were implement game phases, connect our wave system and phases, update enemies to use our map representation, add more sounds and particles, and add textures.

What we achieved

Added background music

Implemented phases

Linked our phase and wave systems

Added new models

Implemented End Game Events

Implmented Enemy Spawning based upon loaded map spawn points

Fixed a Shader Bug

Updated Map Loading to visualize shelves that hold items

Updated UI

What we didn't achieve

Created a bug related to placing barricades

Add textures

Improve gameplay

Our plan for the final few days is to find and fix bugs while playing around with the gameplay to make it more fun and balanced.

Screenshots

Start Screen
Game Over Screen
Enemy going to Target
Enemy Exploding

Individual Reports

Chris Maytom

Goals for week 9:

Finish the game. Finalize our phase system, test multiple clients. Add a score system. Improve the UI and tweak a few of the constants to improve how controls feel.

Goals reached:

A basic implementation of all my goals. I implemented phases, linked our phases to our wave system, implemented client side entity creation using correct models, updated the UI, added end game trigger event, added spawn points and targets to our map, updated our map loading to handle all types of objects, fixed a few bugs, and added Steven's new models to the game.

Goals unable to reach:

UI could be better and our gameplay is very simple but we ran out of time.

Goals for next week:

Catch up on sleep and finish my other group project

What I learned:

Imgui is a great UI framework when you need to get it up and running quickly.

My morale:

🥱 but proud of the work I have done.

Steven Hausman

Goals for week 9:

Add textures to most of the models and particles

Goals reached:

Added textures to some models and particles

Goals unable to reach:

None

Goals for next week:

N/A

What I learned:

How to apply textures

My morale:

Hopeful that we can get everything cleaned up and done for the final demo

Patrick Liu

Goals for week 9:

Do simple game-specific classes(TP, shelves, barricades, player inventory/money/hp) and interactions

Goals reached:

All goals + debugged enemies spawning, fixed some lagginess,

Goals unable to reach:

none

Goals for next week:

what do you mean next week

What I learned:

i hate c++ containers

My morale:

it's over

Thiago Marback

Goals for week 9:

Add some more sounds, continue looking into UI, finish the wave system and map grid.

Goals reached:

Everything we planned, really. Also finally fixed some long-running bugs with the network and sound.

Goals unable to reach:

N/A

Goals for next week:

Finals :v

What I learned:

The smallest bugs are the biggest pains in the ass to find (also I hate my self from 3 weeks ago).

My morale:

We actually have a game, so I'm pretty happy even if it's not quite as much as we originally planned considering how crazy this quarter was.

Anthony Lau

Goals for week 9:

Fix everything, as everything is on fire.

Goals reached:

Helped set up dry run. Got enemies actually moving around the map.

Goals unable to reach:

Didn't get to fix shelves from having larger colliders than is represented when calculating pathing.

Goals for next week:

Ride off into the horizon.

What I learned:

That after a while, there is a zen to being in constant panic.

My morale:

This is fine.

Cameron Foster

Goals for week 9:

polish up game mechanics and tie everything together

Goals reached:

Camera functionality was improved. I changed the edge pan camera for a more traditional fps style camera.

Goals unable to reach:

I did not get around to adjusting waves or enemy AI, This will be dealt with in the final days leading up to the presentation

Goals for next week:

no goals since we are presenting on friday :)

What I learned:

not much was learned this week

My morale:

Morale is high, the team came together this last week and put all of the pieces together for our game