Week 8 Report
Group status
Meeting: Sunday, May 26, 2024
We added sound effects, ways for the boss to sabotage, crafters and spawners, and a crosshair! We need to continue working on finishing the rest of our gameplay.
Our group has mixed feelings because half of us got sick. Many of us are worried about being behind, but we’re confident we can get back on track.
Individual statuses
Nick
My goal for this week was to do a lot of things from audio to movement tuning, and just like a lot a lot of things. You can probably find all of them in a previous weekly report but it’s okay because I did none of them.
I ended up not doing anything besides adding a silly little html crosshair element that we’re probably not going to be used in the final game
I caught covid for the first time and I was wiped out for most of this week :(
This week since I’m finally starting to feel better, I want to start implementing the core game loop for what the players will experience in the demo. This means putting players in a sort of lobby while waiting for people to join (or literally just moving the players to a position in the air in a starting room while the players populate), having some sort of countdown clock in which the players can move around and do things in. Hopefully not much more than this is needed to have a complete MVP.
I learned that I should not have put off getting the (4th? 5th?) vaccine. covid sucks
I am in disarray but I guess I’m slowly picking up the pieces to put things back to normal.
Marcelo
what were your concrete goals for the week?
GAME PHASES
what goals were you able to accomplish?
I switch goals to creating some sfxes and i create some sample ones
if the week went differently than you had planned, what were the reasons? note that this happens regularly…I would prefer you to be aggressive in what you want to try accomplish rather than limit yourself to goals you know you’ll easily achieve. so answering this question is more of a reflection on the development process and the surprises you encounter, it’s not at all an evaluation.
Unfortunately I realized i got covid and accidentally got Nick and Sean covid as well 💀. Due to this I work on something less intensive than coding - sound designing. I hope to recover soon and I want to code some fun interactions.
what are your specific goals for the next week?
game phases.
what did you learn this week, if anything (and did you expect to learn it?)
I learned that I should design sounds in mono files so that I can support playing the sound from a directional source.
what is your individual morale (which might be different from the overall group morale)?
A bit nervous due to the unexpected circumstance
Tyler
No report.
Killian
- My concrete goals for this week was to concept a finalized version of the map so I can start concepting it this week.
- This week I was able sketch the finalized version of the map but since I was home with no access to my PC, I couldn’t do much more than that.
- For this week, I mostly kind of met my goal but I wish I could’ve done a more thorough drawing.
- Next week, I want to focus on modeling everything else that we need for the game, along with a solid version of the map.
- I don’t think I learned anything new this week, except for maybe more about exporting Blender files
- I feel a little worried this week because I kind of took a week off from modeling but I think I can catch up with work this week.
Sean
The reason why I missed last week’s meeting was purely because I overslept my alarm. However, I suppose it worked out because I later tested for Covid! I was fortunate enough to have a very mild experience with Covid—I got over it a lot faster than a normal cold, and I didn’t feel too bad. Since I had to isolate, and I didn’t have much homework this week, I was able to spend a lot of time working on the game!
My goals last week were:
- Adjust the model positions and sizes.
- Debug why shadows seem a bit broken. Perhaps also figure out why lighting doesn’t really work on Android.
- Add name tags to players.
- Rendering text in-game would be useful for showing the status of crafters and such.
- Create a simple UI widget for the timer and define the message format to allow the server to set the timer for a client.
- Use Tyler’s crafting system to detect recipes and produce outputs.
- Try adding the ability to hit other players, and maybe apply some knockback.
I spent a lot of time trying to figure out why shadows felt weird.
In summary, there were three issues with shadows I found and fixed:
- Our shadow camera was using a 45° FOV for generating the cube map. I changed it to 90°.
- Our depth calculations were using Euclidean distance, but that’s not how depth values are stored (if you can imagine the perspective projection matrix, you might be able to see why). I found code on StackOverflow that does the correct calculation.
- I’m still not sure why shadows are bleeding through walls, but there was a balance between that and having precision issues with lighting. However, testing whether normals were occluded helped to mitigate this issue. I also had to fix how normals were transformed by the model transform—I took another formula from StackOverflow.
Finally, shadows look nice! Except they still are broken on my Android phone, as well as on Nick and Kenzo’s PCs (which is mostly masked by the outline filter also being broken for them).
I also built on Will’s features: I fixed Will’s reticle, which previously only rendered for him and (oddly) on my phone, and I added a smooth transition for sabotage effects like spore and traps.
I also refactored Entity
s to use auto-generated IDs. Previously, they were called name
s, and it wasn’t clear that they had to be unique (they were given human-readable names), so duplicate names broke things. Now, many of the debug keys work properly.
I also fixed how raycasting works—the physics engine has several poorly documented quirks about its raycast methods, so we made incorrect assumptions about it—so for like the seventh time, jumping was fixed again. This refactor was to implement hitting players, which currently only applies knockback.
I was under the impression, from reading the photos of the whiteboard posted last week (I missed both of last week’s meetings), that Tyler had finished a recipe system, but it hadn’t been applied to crafters yet. Since it was on my to-do list, I decided to implement it. Quite unfortunately, Tyler had already implemented it on his machine, but he forgot to push it. It’s quite tragic because now, all of his work was for naught. I’d really like to avoid this again in the future, so during this week’s meeting, we made sure to clarify who was working on what, and avoid stepping on each others’ boundaries.
Finally, the biggest change to the game was that I added temporary sound effects and a system for the server to send sound events to the client to play in 3D. From playtesting, the sounds have really given the game some character and life, even if it’s just constantly hearing “boing jump.” I think adding particles will be just as impactful, so I look forward to seeing them in the game soon, as well as proper sound effects from Marcelo!
However, during the meeting, it became clear that others were also experiencing lag. Server metrics suggest the physics engine is handling the game with ease, so it must be due to client-side rendering. I refactored the graphics code to batch draw calls for the same model together using instancing, and now the game can handle dozens of items with ease.
During the meeting, I was assigned to fix performance this week. However, I already did that. So, for the rest of our second to last week, my goals are:
- Options menu (mouse sensitivity)
- Timers
- May involve implementing a phase system on the server so there’s something to show
- I think the boss needs a sabotage selector wheel to help with discoverability
- We need a way to show controls and game mechanics to the player
- Since we have different player models, we should have a role and skin selection screen as well
- Since we have armor, we need a way to equip them
I’m confident we’ll get the game to a fun state soon!
Will
My goal was to implement a couple of the boss player’s abilities: giving other players a blindness + slowness effect and setting traps.
I did both of those things and some extra stuff as well. The blindness effect makes use of our rendering pipeline by temporarily adding a new filter on the client side, so I’m glad we had that infrastructure in place. Similarly, the trap feature builds off of previous work which made it easy to just create a new entity type and implement its interactions. In addition to that, I revamped the particle system code so we could control the appearance of particles and how many/often they spawn. The hope is that we’ll be able to plug that into other types of models with minimal setup. I also used a new particle system instance to render a reticle in the center of the screen so you can see where you’re aiming.
It took me a while to figure out some issues with WebGL transform feedbacks, byte offsets, and shader attribute ordering for the particle system code. When I implemented a particle system for CSE 169 I just did the physics on the CPU because I couldn’t find a good resource explaining transform feedbacks, but the initial implementation by Kenzo helped elucidate a lot.
My goal for next week is to implement a win condition. This will involve support for two stages of gameplay, the first of which will have a timer and the second of which will be essentially a multiplayer QTE. I would like to finish this ASAP so we have time to try making a combat stage.
I learned lots about transform feedbacks which are pretty neat. I can see how they make OpenGL/WebGL more general purpose.
I feel confident that we’ll have something to show by the demo day.
Kenzo
My goal for this week is to implement a particle system spawner. so we can use it to spawn particles whenever the players do some action/ something happened
I was able to plan and see how can I implement the particle spawner in a efficient way so that the code can be expandable and can be reused in many places.
I was really busy this week with my other class, because the final presentation is coming up this Thursday. But I’ll try to finish the particle spawner as soon as possible
My goals for next week is to continue implementing the particle spawner.
I learn more about how Will implement the sabotage player code and see how the playSound was implemented so that I can get an idea of how I should implement the particle spawner
I am a bit worried we are behind but very excited to see how will our game turns out
Meeting notes
Today’s meeting was moved online because four of us are sick.
Present: Sean, Tyler, Will, Kenzo, Killian
- it’s week 9. two weeks left. no playable demo yet. probably no combat
- sean: currently there’s punching, but that’s probably more sabotage than combat
- for combat, we’d need inventory, potions, armor, bows, which can’t rotate in your hand
- need big boss model, crafting table models
- we need: win condition, new map and that’s it
- and playtest
- hard to select items
- and playtest
- models a little scuffed
- need to give each item a different collider
- rn there are sound effects,
- marcelo said he wanted to. not sure where he’s been
- he’s playing minecraft
- marcelo said he wanted to. not sure where he’s been
- game is a bit laggy
- probably with many items/meshes
- playtesting
- sound effects are funny
- we have spawner now, but it’s buggy (need to throw axe at it but it currently works without it)
- player collisions also spawn item
- hit reach distance is very far
- lag is an issue
- kenzo’s PC has same issue as Nick’s, with weird buggy rendering
- reticle not being rendered
- crafters work, spawners work
- standing on players/crafters makes you really slow, and can’t jump on players
- need timer
- options menu, an actual UI
- mouse sensitivity
- killian: do we need big/little boss
- not as important. just need crafting models (furnace and crafting table and potion station)
- forest for wood
- ore vein for ore
- spiderwebs for string
- mushrooms
- crafting stations: anvil for making knife, sword, armor, ingot. bow and magic sauce at their own tables. furnace to combine wood + ore for ingot
- not as important. just need crafting models (furnace and crafting table and potion station)
- killian: map idea for two levels:
- top level is abandoned living area: crafters and wood source (forest/broken furniture)
- lower level is darker, abandoned work area: mushrooms, iron, spiderweb
- tyler: have holes from top to bottom, can throw items down and accidentally fall. and prevents people from clashing with e/o on the stairs
- tyler: need to double size of the map
- killian: will make upper level larger
- tyler: need menu/UI for showing tutorial page
- divy up work instead of making it free-for-all
- sean: performance
- will: win condition, fix crosshair
- kenzo: still trying to work on blind sabotage, unsure how to move camera
- will already did that. boss can spore player to reduce vision
- tyler: just keep what you’re doing
- we need particles
- can implement it like sound. server plays particles at position,
this.game.playParticle
- can implement it like sound. server plays particles at position,
- combat could be free for all since it’s not MVP
- will could do it soon
- tyler: fix spawner, populate crafters. after that, implement combat, like sword or bow shoot arrows
- tyler: doesn’t seem like people are passionate about this anymore. it’s week 9. some people have been absent
- will: people are sick
- marcelo and nick not here. cringe
- can playtest on tuesday. game is at playtestable state
- will tried to fix reticle but still doesn’t work. sean might work on it since will can’t reproduce it
- killian will be back in SD tomorrow
Summary of to-do items:
- Crafter models (Killian)
- Detailed map (Killian)
- Performance (Sean)
- Win condition (Will)
- Fix crosshair (Will)
- Playing particles
- Combat (Will? Tyler?)
- Fix spawner (Tyler)
- Populate crafters in map (Tyler)
- Sound effects and music (Marcelo)