Home Specifications Weekly Status Reports Media

Week 3: April 20, 2020


Overview


This week, we made some progress towards creating a minimal working version of the game. We started to migrate to using forge, merge the garphics code with the networking code, seperate different class structures and build 3-D models in Blender based on the concept art design.

Group Morale


As a group, our progress is a liitle bit behind the proposed schedule due to issues we encountered when mergeing the graphics and networking code. With every member of our group falling into our prescribed roles very well and taking ownership of each of our parts of the video game, we are confident that we can get the issues solved soon and catch up with our proposed schedule.

Showing Off Our Screen Shots!!


3-D Models in Blender

Model Model

Forge is working as intended


Individual Updates


Charles

Last Week’s Goals:

Work with Aditi to refine server/client communication and implement player movement across the connection

Completed Goals:

Cleaned up the netcode Kevin, Jimmy, and Hao wrote a bit and abstracted it into separate classes, got some work done on player movement

Unmet Goals:

Didn't manage to complete player movement because we realized we still needed a scene graph on the client's side and we were missing a camera object. We wrote shells for other game objects in the meantime.

Next Week’s Goals:

Finish up player movement and camera control and get that working across the server/client connection, implement other gameplay objects

What I Learned:

There's a lot of gray area when it comes to what's graphics vs network vs gameplay. Making sure that when the player presses w, they move forward sounds like gameplay, but how about communicating that across the network? And what about reflecting that on screen? Even in something so simple, a lot of fields are involved.

Individual Morale:

I feel a little disappointed that it's week 3 and we haven't at least gotten player control working, but once we have a good foundation with the scene graph and good network communication, the rest of the gameplay code shouldn't be too bad.

Jimmy (Jiajian)

Last Week’s Goals:

Work with Kevin and Hao to put the network code and graphics code together.

Completed Goals:

Setup the netcode with basic structure. and was latter refined by Charles and Aditi.

Unmet Goals:

Haven't figure out how to do multiple client and server communication.

Next Week’s Goals:

Finish up multiple client and server communication. Planning to do a multithread server side that handle each client input on each thread and each thread manipulating the global structure that encodes the state of the game

What I Learned:

I was completely inexperienced on computer graphics and I thought we will just use a regular compiler like g++ to compile the graphics code. But, in we were actually using visual studio and the built in Microsoft c++ compiler to build the whole graphics side.

Individual Morale:

I feel like I was a bit behind on this week that we didn't get the graphics and networking integrated. But Charles and Aditi get them to work on their machines which is good. I'm worried that I couldn't load the obj files on my machine, which might cause many problems when I need to test the code. And I don't have any experience with openGL. I hope this can be solved after we replace openGL with the Forgre.

Esther

Last Week’s Goals:

Learn how to use Blender and start modelling the three basic components (one unit, base female/male characters, one tower). I also planned to design more variations of character, towers, and units. Lastly I planned to come up with some sort of backstory for the game.

Completed Goals:

Learned how to use basic Blender functionalities through watching online tutorials. I was able to model a unit and female character and added some preliminary materials to the models. That's pretty much all I accomplished because using Blender is trickier and more time consuming than I expected.

Unmet Goals:

I think I overestimated my goals for last week, because I definitely did not complete all the goals I had in mind. I did not design more unit/character/tower variation concept art and did not come up with a lore. I had a difficult PA due for another class this past week so I think I managed my time poorly.

Next Week’s Goals:

To not overestimate my goals again, this week I plan to complete the unmet goals from this previous week. Also I plan to export my models so that Kevin can test out rendering them on the client side.

What I Learned:

I learned that Blender has a pretty large learning curve given how many features and capabilities it has. Humans are hard to model... Respect to all the people that do this as a full time job in animation studios! I can't imagine how long it takes to create models for games like Final Fantasy, etc. I also learned from Kevin that I should anticipate animation when modelling the joints of our characters. I probably took 10x longer than an expert at Blender to do the same thing. Blender was kind of frustrating to use because I kept accidently hitting hotkeys that I was unaware of, and making things disappear from the UI and I had to keep googling how to fix my problems. Also there were some things such that I knew what I wanted to do, but didn't know how to do it. So again, I looked up youtube tutorials. In the process I learned a lot about building models and how to be more efficient with the different tools that Blender offers!

Individual Morale:

It's great. I think getting things started is always the hard part, but now I've gotten past the blank canvas and that stage of knowing nothing about Blender and now have some decent looking models. Nevertheless, I'm excited to create more models this week now that I've gotten some practice and experience. It's time consuming but fun. I think it'll be easier when I finish the characters (human) and start modelling more geometric things like towers.

Kevin

Last Week’s Goals:

For this past week, I aimed to work with Jimmy and Hao on merging graphics and network, and complete a forge prototype.

Completed Goals:

I was able to meet with the networking team to merge code. I was also able to successfully create a forge prototype that closely emulates the OpenGL prototype.

Unmet Goals:

I wasn't able to get the merged code to work on my computer. There was an issue with an "accept()" function not returning on my machine only, which I will need to resolve. On the graphics side, there are still some unresolved memory leaks.

Next Week’s Goals:

Replace OpenGL code with Forge code and set up scene graph and more robust model loading system.

What I Learned:

I learned a lot about how descriptor sets worked in The Forge's framework.

Individual Morale:

I'm feeling pretty middling right now. On one hand, I'm glad the forge is working, but I'm concerned about why the networking code doesn't work on my computer.

Aditi

Last Week’s Goals:

Work with Charles to clean up code for the server and client as well as implement some of the player logic.

Completed Goals:

Abstracted out the server and client classes and got some of the famework laid out for player logic.

Unmet Goals:

Did not finish fleshing out all player/game logic because of some uncertainties on the graphics side. Should make more progress on that next week.

Next Week’s Goals:

Finish designing player and gameplay logic after clearing up confusion on graphics stuff.

What I Learned:

I learned a great deal from studying the server and client code about how our framework is going to look and got a better picture of what it's going to take to finish up player and game logic.

Individual Morale:

Progress was a little slower this week than expected but we are getting into the nitty gritty and getting our hands dirty in all of the technical work, so there aren't any blockers and I think most of the learning curve should be overcome by next week. I'm feeling good about our progress!

Hao

Last Week’s Goals:

Work with Kevin and Jimmy to put the network code and graphics code together.

Completed Goals:

We are able to integrate the networking code into the grahics code.

Unmet Goals:

After we merge the code and testing, accept() always got blocked. We are not sure if it's a connection issue or a issue with our code. We need to take a close look into it.

Next Week’s Goals:

Modify the existing code to accomendate multiple clients and add multiple threading features.

What I Learned:

I never had experience with computer graphcis in the past. This week, while we are working together, Kevin walked us through the graphics code so I got a general idea about the graphics part of the project. As I went over the code from groups in Spring 19, I learned how to set up multiple clients and multithreading stuff.

Individual Morale:

I felt a little bit stressed when we cannot get the code working earlier this week, but thanks to Atidi and Charles that they refactored our code later in the week and got more stuff working. Now I'm feeling more optimistic that we have such a great team and we have each other's back.