Note: Individual check-ins are at the bottom.
We’ve made progress!
We’ve started toying around with the general engine that Jeff brought in from CSE167. We’ve learned how to use it on a basic level, and we’ve also learned some of its quirks (and fixed some bugs!). Fully understanding his engine is going to become paramount when it comes to integrating networking.
We also have fleshed out game design (including some puzzles), began work on client/server architecture, and modeled a few assets out. When it comes to our schedule, we’re mostly on track except for acceleration structures, which is essential for both collision detection as well as point-light shadows.
Besides the normal class meetings, we also have scheduled meetings on Mondays and Wednesdays at 2pm.
Morale is good. Everyone is contributing, and we’re playing to our strengths. Everyone is coming to meetings, and Slack is working great for out-of-meeting communication. Any morale problems we’re having are due to the lab computers (lack of software, general slowness), but we hear that some of that is being fixed.
Here are some screenshots of art we’re working on! All of these assets can be loaded into the engine with basic lighting effects.
My goals for the week were to work on basic movement and physics, as well as to do some art and puzzle design.
I ended up focusing entirely on art and puzzle design, with a bit of time spent futzing with the engine. (see initial email for full list)
This week most of my goals didn’t pan out because other people ended up working on the code I was gonna write, so I wound up working on art and design instead (partly that’s my fault for not being “aggressive” enough at finding work).
My concrete plans for next week are to help you work on movement, help Dexter work on physics, write any other code that we need, and texture the player models.
- Primary goal was to get configuration files up and running in our engine.
- The config files are working fine, and I had plenty of time to read up on collision detection algorithms and data structures. Started implementing an octree.
- I probably should’ve done more last week.
- We have naive collision detection implemented (although I haven’t tested it.) This week’s goal is to get efficient collision detection implemented. If I get time, I want to get started working on basic game physics, and hopefully improve our particle system. I’d like to build a particle viewer, with some minimal UI so we can quickly prototype and deploy particle effects. The current particle system is VERY hardcoded.
- Collision is going to be tough. I took the easy road the first two weeks, now it’s time to get my hands dirty, so to speak.
I worked on the client code this week, taking basic Windows socket code and encapsulating them in higher level easier to use class with corresponding class functions that can be used to send messages over to the server, and receiving messages from the server. Instead, of needing to maintain how client code is manipulated to send arbitrary bytes of data, a user can use this new client code to send over a C++ string. This means the user doesn’t need to worry about the lower level and more unsafe C code, as it abstracts both the memory management and the sockets code. Once this code is integrated with the game engine, connecting and interfacing with the server should be seamless and easy.
Next week I plan to integrate it into the rest of the game. I currently feel pretty confident and I do not feel particularly stressed about the game, although there is a feeling of impending urgency.
My primary goal was to get FPS movement within the existing engine, as well as design some puzzles.
As I will be a gameplay programmer, I spent most of my time becoming familiar with Jeff’s game engine. I was able to implement standard FPS controls (mouse-look, WASD movement) within it, and through this learned how future gameplay logic should be implemented within the confines of the engine. I also had to dig into the actual engine a couple of times to fix bugs, or add features that I anticipated we’d need.
Concerning game design, I worked with Bert on designing a few puzzles that will be strewn about the map, as well as the general interaction system that puzzles will be built upon.
I also spent a good amount of time learning Blender. Initially I just wanted to construct a simple scene and player character (i.e. boxes) so that I would have assets of which to use the engine with, but gaining some basic skill with Blender will make it easier to make and edit simple props that I might find myself needing in the future.
My goal for Week 3 is to implement a general-purpose system for hooking up pressure plates, buttons, and levers to doors, gates, chests, etc that we can build on top of for puzzle design. If Elton and Pavan finish the client/server message framing early, I’ll also start working on the server game-loop, and how to handle event-passing. Finally, I want to work with Bert and Dexter on designing a floormap for the main level of the game.
My morale is good. I learned that if we’re going to be working on someone else’s engine, it’s almost necessary to have them nearby in case any problems arise.
This week I worked on art and asset loading and managed to accomplish my goals for the week. I created a corridor, and engine prop, the character robot model, and am just finishing up the prison room. I have not textured them yet, but I did rig the player. The asset loading system now uses .ini files to control materials and can automatically reload them and textures when they change. I also created a viewer to test out how models look in the engine. Finally, I spent time helping people to learn to use my rendering engine. Next week I intend to try to do the art for four more rooms, help to integrate networking and a scene acceleration structure if necessary, and possibly work on extra graphics effects such as parallax occlusion mapping of screen space ambient occlusion if I have extra time. My morale is doing fine for now but is dropping every time Jason nags me to write about it.
This past week I worked on getting the client and server communicating on both windows and linux (for testing purposes), and breaking them out into their own network utility classes. I also helped to refactor the code along with Elton to allow a client to reuse the same connection for all of its sending and receiving of messages. Our next steps are to allow multiple clients to connect to the server, and then start working on a serialize/deserialize function to send/receive meaningful messages. I feel good about the position that we are in with regards to the network. This coming week’s work will definitely be a lot harder than the previous one, so I plan to put in more time to compensate for that. I think our team has been working well together so far, and I look forward to continuing our progress as the weeks go on!