Status Report 6/5

A lot of progress was made this week. We had a very solid, rich, and yet simple enough gameplay. Now the goal for the survivors is to destroy the tower in the center of the map. The tower will spawn monsters randomly on the map, and the probability of spawning increase linearly to the time has passed. The god’s goal is to protect the tower by killing all the survivors, which can be achieved by placing monsters and trees (to block survivors) strategically.

We are in the final polishing stage and aiming for the demo on Friday. We will have a significant UI update and a better lobby and end page.

There are three classes that the survivors can choose. They all can shoot bullets to attack by using the first ability. They have different roles and have different initial stats (damage, move speed, etc.).

Fighter is a tank role and has higher armor and defensive utility. Fighter’s first unique ability is to cut down trees to clear out spaces. The second unique ability is to gain 100 armor (100% damage taken reduction, invulnerability) for a short period of time. The third ability is to taunt the surrounding monsters and force them to chase and attack Fighter.
Archer is a DPS role and has higher damage and mobility. Archer’s first unique ability is to launch a fireball which has larger collision radius and much higher damage. The second unique ability is to sprint and increase movement speed for a short period of time. The third unique ability is to double the current attack speed for a short period of time.
Healer is a support role and has the lowest damage but very strong utilities. Healer’s first unique ability is to heal nearby survivors overtime for a long period of time. The second unique ability is to increase nearby survivors’ damage for a long period of time. NOTICE: Only one of Healer’s healing aura and damage-buff aura can be activated at the same time, and they share a relatively long cooldown. The third unique ability is to resurrect a survivor and restore full health.

Besides, we finally made our animation system work and we also added a simple audio system.

Individual Report – Shuyuan Ma

1) What were your concrete goals for the week?

Animation, audio, finish gameplay.

2) What goals were you able to accomplish?

All above.

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

No. I am quite happy with the last week. We have made significant progress. Now all that is left is to beautify the game and play test for the demo.

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

Finish the final report.

5) What did you learn this week, if anything (and did you expect to learn it?)

Not much.

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

Enjoy the experience.

Individual Report – Lin Zhou

1) What were your concrete goals for the week?

  • Add spear to the attack animation (removed)
  • Add animation of throwing (removed)
  • Add another monster and other items

2) What goals were you able to accomplish?

  • Add animation for cutting trees with an axe
  • Add another monster with its attack animation
  • Created a ring for healing effect
  • Added flame texture to the bullet
  • Created model for taunted effect
  • Standardized dimensions for the ring and the bullet

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

Adding other items; reason: change in priority

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

  • Add animation for shielding with floating shield model (from online)
  • Add texture to item models
  • Improve UI for game entry and ending
  • Help with sound

5) What did you learn this week, if anything (and did you expect to learn it?)

Teamwork and more devoted time on the game brings it alive; expected

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

Excited for the final completed version of the game and can’t wait to see what other groups have accomplished in this amazing quarter!

Individual Report – Haomin Wang

1) What were your concrete goals for the week?

Make some adjustment and improvement on the animation system.

2) What goals were you able to accomplish?

Added new functionalities that allow certain animation to be played only once(like player death animation) and allow us to color animations without textures.

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

For now I think I finished my work. However, I will keep working if necessary.

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

This is the last week.

5) What did you learn this week, if anything (and did you expect to learn it?)

I learned something about how our client works and how models and animations are used in our game.

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

So far so good.

Individual Report – Tianhui Cao

1) What were your concrete goals for the week?

Adjust gameplay, add central tower, fix bugs

2) What goals were you able to accomplish?

The game’s winning condition is adjusted to destroy tower at the center. Add functionality that monsters could randomly spawn on map. Fix multiple bugs including the melee/chase functions.

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

We achieved the gameplay as what we as a team discussed after last week’s meeting.

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

Change the lobby and add control guidance before demo day.

5) What did you learn this week, if anything (and did you expect to learn it?)

I didn’t really learn anything technical this week but was considering what we could have done better during the quarter after I saw other teams’ fabulous games and learned from other teams. I feel our gameplay is robust in essence but our graphics including UI and animation definitely need more improvement. It might be a good idea if we chose to use more online model resources instead of creating our own when one teammate dropped the class. In that way, we would have two people fully work on the graphics early on.

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

80% satisfied.


Individual Report – Kai Li

1) What were your concrete goals for the week?

Added more skills and fixed some UI. Polish some details.

2) What goals were you able to accomplish?

All above.

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

None. It has been very productive

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

Finish the game!

5) What did you learn this week, if anything (and did you expect to learn it?)

Not much.

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

Enjoy it!

Status Report 5/29

It’s been a relatively less productive week. We have finished the item loot system and the notification system. The animation engine is not yet finished. The skeleton movement is working but the texture rendering is not. Without the animation engine, we can’t proceed forward with any significant graphics updates and the audio system.

The infrastructure of the gameplay aspect is mostly built, and we have made solid decisions about more features in terms of game design.

The time is tight but we still feel confident that we will make it a fun game.

Individual Report – Shuyuan Ma

1) What were your concrete goals for the week?

Help get the animation integrated with our graphics engine.

2) What goals were you able to accomplish?

Added more features to the gameplay and attack system.

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

The animation system is still not 100% working. Haoming said he would finish the system by last Friday and I was expecting to help review, refactor, and integrate it into the main system. Unfortunately he is still working on it and I couldn’t help much.

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

More features, make the game winnable for survivors, hopefully get the animation done.

5) What did you learn this week, if anything (and did you expect to learn it?)

It’s hard to help or get help on development if we don’t code in a readable and modular manner.

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

Enjoy the experience.

Individual Report – Lin Zhou

1) What were your concrete goals for the week?

  • Integrate animation into game with Haomin Wang
  • Add weapon(spear, bow and arrow) to the attack animation
  • Design different appearance for players

2) What goals were you able to accomplish?

Design different appearance for players

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

Add weapon to the attack animation, reason: trip to SF and other coursework

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

  • Add spear to the attack animation
  • Add animation of throwing
  • Add another monster and other items

5) What did you learn this week, if anything (and did you expect to learn it?)

Nothing in particular

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

Spend more time this week to catch up! Keep working and trying!

Individual Report – Haomin Wang

1) What were your concrete goals for the week?

Finishing the animation system.

2) What goals were you able to accomplish?

FInished the animation a lot later than I expected, tried several Collada parsers during the process. Finally choose http://rmx.github.io/collada-converter/preview/examples/convert.html.

Now finishing an animation system that can play skeleton animation, adjust speed and play only a part of it.

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

I thought I could complete it much earlier, but turns out that I couldn’t fully understand the json file generated by the previous parser I used. Spent a lot of time trying to figure out connections between converted json and the original Collada.

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

Help Shuyuan to integrate the animation system if no other instructions.

5) What did you learn this week, if anything (and did you expect to learn it?)

I can pretty much understand every line of a Collada file now after so much research. Didn’t really expect that.

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

Desperate for the weekend because I promised to finish last Friday. Still feels good when I finally see the correct animation instead of messed meshes.

Individual Report – Tianhui Cao

1) What were your concrete goals for the week?

Finishing item system

2) What goals were you able to accomplish?

Now the slimes would drop items randomly when dead. Survivors could pick up the item to buff themselves. I am still polishing the god’s attack pattern as well adding a feature to allow god to create tree to block survivors.

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

I was planning to adjust some functions to better match with the animation once the animation system is completed. Since animation is delayed, I couldn’t quite move on if I don’t know how the animation system would behave.

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

Adjust existing features to better match with animation and perform final polish to ensure the whole game work from the beginning to end.

5) What did you learn this week, if anything (and did you expect to learn it?)

We shouldn’t underestimate animation and we should have let an extra person to help Haomin when we thought he was stuck.

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

“It’s the endgame now.”

Individual Report – Kai Li

1) What were your concrete goals for the week?

Polish the details.

2) What goals were you able to accomplish?

Added UI for items, notification UI and a charge system for skills

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

None.

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

Keep working on details, polish more.

5) What did you learn this week, if anything (and did you expect to learn it?)

None

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

Work Harder



Status Report 5/22

Group report

With most of the underlying systems done, we did a lot of refactoring and content filling for the server this week.

We reanalyzed the time remaining and the technical difficulties of remaining goals, and decided to change the game design to more combat focused. We canceled the crafting system and the idea of building towers to overthrow the god. Instead, the survivors kill monsters to gain progress and finally will confront the god himself in combat. The god player wins if all survivors die, or the survivors win if they can finally defeat the god. We plan to add a rouge-like item loot system to allow the survivors grow in strength to confront the overpowered god at the endgame.

However, the animation system is still going slowly. We’re hoping to finish it by the end of this week. And after that, we might arrange someone to shift job and help with the modeling and animation.

Added status bar for all survivors at the top left; item bar at the bottom right. Moved the skill bar to the top right inside the status bar.
Survivor’s screen turns to black and white when s/he dies.

Individual Report – Kai Li

1) What were your concrete goals for the week?

A lot of small pieces. Refactor the skill system. Refactor our files. Display teammates and their health. Add visual effect to indicate a player has died. Add an item system, and enhance the player when they pick up items. Add a notification system. Detect wins.

2) What goals were you able to accomplish?

Everything except for the notification system are done. Some small details still need to be improved.

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

Notification system is not done yet because lack of time. Looking forward to finish it ASAP

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

Not sure yet. Depends on how everything goes. We have a barebone version already, so more likely will need to polish all the details. One thing for sure is to finish the part where God will show himself and the survivors can beat him.

5) What did you learn this week, if anything (and did you expect to learn it?)

None.

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

Work harder and learn more!


Individual Report – Shuyuan Ma

1) What were your concrete goals for the week?

Review and refactor pull requests. Implement the on-click skill/shooting system. Zooming cameras. FPS viewpoint.

2) What goals were you able to accomplish?

All above, plus reassessing the progress of the project and changing the game design.

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

I wish we could finish the animation integration, but it turns out the standard formats of .dae files are not well supported by some of the parser we found online, or at least we haven’t figured out how to use them correctly.

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

Help get the animation integrated with our graphics engine.

5) What did you learn this week, if anything (and did you expect to learn it?)

Good documentation is priceless. Some external JS libraries can be a nightmare to work with, especially when there are no better alternatives.

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

Enjoy the experience.

Individual Report – Lin Zhou

1) What were your concrete goals for the week?

Finish walk and attack animation, static dead position, export to expected format and work with Haomin Wang to put the animation into the game

2) What goals were you able to accomplish?

  • Finish walk, run and die animation, export to dae format
  • Finish the model for the cactus monster

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

  • Integrate animation into game
    • reasons:
      • blender exporter issue: blender default exporting shifts the position of the head in the animation; so installed an add-on for exporting
      • issue with the parser: cannot parse non-deforming bones (control bones) so currently still working on different ways of exporting and parsing

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

  • Integrate animation into game with Haomin Wang
  • Add weapon(spear, bow and arrow) to the attack animation
  • Design different appearance for players

5) What did you learn this week, if anything (and did you expect to learn it?)

Exporting animation from Blender (expected)

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

Looking forward to a great improvement in the game UI with integrated animation! Keep working and trying!


Individual Report – Tianhui Cao

1) What were your concrete goals for the week?

  • Replace sphere body in the physics engine with box, which works great!
  • Use quaternion to update box direction so that the attack region could be easily calculated
  • Use collision filter to filter out some collisions
  • Randomly plant trees on the map
  • Use config.ini
  • Adjust god player behavior (Turn off the attack, and immune to any attack)
  • Add item/buff system

2) What goals were you able to accomplish?

Item/buff system is still in progress. Other than quaternion, everything is achieved.

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

I researched online about quaternion and its usage in cannon js but wasn’t quite able to use it without causing any incorrect side effects. So right now I still calculate the attack region by treating the player body as a sphere. If time is available I will look into this issue more but would finish item/buff system first.

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

Finish item/buff system, possibly work with the graphics to incorporate the animation for each attack or item usage.

5) What did you learn this week, if anything (and did you expect to learn it?)

Application of 80/20 rule and making tradeoff, in the sense that I spent so much time looking into the advanced feature of cannon js, (handling collision and behavior of sphere or cylinder) but it turns out box works the best. The only thing remaining in the physics engine is whether we want collision between survivors and slimes.

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

Unlike last week when I felt no progress was made, I feel more achieved during this week. Feel the hope now and especially look forward to the animation.

Individual Report – Haomin Wang

1) What were your concrete goals for the week?

Finishing the animation system and make it work together with our code and dae files.

2) What goals were you able to accomplish?

I have successfully render an animation using a dae found online.

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

The dae parser I am currently using seems to have problems when loading our dae files. I am currently working on solving that.

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

I will finish animation system ASAP. Not sure what to do after that, maybe working on performance of animation rendering.

5) What did you learn this week, if anything (and did you expect to learn it?)

I am currently looking at the dae files and learned something about how data are stored in dae files.

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

Still trying to figure out the difference between dae files. Hopefully I can get this soon.


Status Report 5/15

1) summarize your overall status for the week

Reworked and optimized the graphic engine. Now models, materials, textures, and lighting works properly with much better performance–fps now can easily reach the highest refresh rate of the monitor.

Optimized both the server and client. Now only necessary data will be sent through network IO, and CPU usage drops significantly.

Modeling and skeletal animation is slowly progressing.

A profession (class) system has been added, more game design is needed for this system.

A basic monster chasing AI is implemented. The slime now chases the closest survivor and will explode upon collision.

2) include both the week # and the date of the meeting

Week 6, 5/10 Friday: Reviewed and integrated the monster AI system, profession system.

Week 7, 5/14 Tuesday: Merged the reworked graphic engine and the optimized server/client.

3) add a statement summarizing the group morale (feel free to be creative in expressing your morale)

The game is coming together and we are quite excited.

4) add at least one of your latest screenshots to your group page

New lobby, skills, and debugger UI
Slime chase AI

Individual Report – Shuyuan Ma

1) What were your concrete goals for the week?

Get the graphics working and look into skeletal animation.

2) What goals were you able to accomplish?

I first tried to optimize the graphic engine then I found some major flaws in the engine, so I ended up reworked it completely. It’s now rendering correctly with lighting added, and with much better performance.

I reviewed and helped with the chasing AI system by Tianhui and the optimization of server/client by Kai.

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

I didn’t look into the skeletal animation part specifically. I did some research and found some blogs about the topic and send them to Zhou Lin. Haoming now is working on importing animations into our graphic engine, and Tianhui showed strong interests in the model and animation development, so I let them do the work.

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

Add the terrain to the physics engine using height map. Design more monsters and skills for different professions.

5) What did you learn this week, if anything (and did you expect to learn it?)

I used to review and refactor group members’ pull requests alone and many times I have made major structural changes to the codes based on my own judgement. It is kind of arbitrary and thoughtless, and turned out to cause trouble if they are to continue working on the same branch. From now on I will try my best to review and refactor codes during a face-to-face meeting, or at least to make sufficient communication before I made changes.

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

Learn and try to be a good PM.

Individual Report – Kai Li

1) What were your concrete goals for the week?

To optimize package sent by server during each server loop. Also to incorporate a profession system that let players pick different profession.

2) What goals were you able to accomplish?

Package optimization is done. Right now we don’t send anything if nothing happens, and we only sends if status changes. The profession system is on the way. Now user can pick different profession, and I have some UI up and running for it.

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

I was thinking about finishing the skills for each profession, but then I was assigned to optimize the package thingy, so this task was postponed. But I will finish it eventually.

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

For next week I will finish the skills for each profession, which requires me to add a lot of game logics. Also keep updating the UI.

5) What did you learn this week, if anything (and did you expect to learn it?)

How javascript stringify works.

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

Work harder and learn more!


Individual Report -Lin Zhou

1) What were your concrete goals for the week?

Simple walk/run and attack animation of the player

2) What goals were you able to accomplish?

Simple walk cycle animation of the player

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

Complexity with rigging and weight painting, and to resolve them, had to change the player model, which results in redo of texturing

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

Finish walk and attack animation, static dead position, export to expected format and work with Haomin Wang to put the animation into game

5) What did you learn this week, if anything (and did you expect to learn it?)

Animation using keyframes in blender

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

Spend more time, and start early!

Individual Report – Haomin Wang

1) What were your concrete goals for the week?

A client-side animation system that is able to load and display dae animation.

2) What goals were you able to accomplish?

For now I am able to render the keyframes separately.

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

I still haven’t finished the implementation of updating each joint using the time and keyframes, I think a linear interpolation will do.

I took some time to compare and choose from several ways to play dae animations. Eventually I chose to convert dae file into json using collada-dae-parser then write the whole animation system myself.

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

Finish the animation system, perhaps try to test it with animations created by Lin Zhou.

5) What did you learn this week, if anything (and did you expect to learn it?)

Working with collada-dae-parser, I am able to play keyframe animation using a different(and simpler) way.

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

Busy week, but there are some progress.

Individual Report – Tianhui Cao

1) What were your concrete goals for the week?

Generalize the melee/shoot function so that both player/survivors could use it. Spike on applying collisionResponse or other approaches to avoid unwanted collision.

2) What goals were you able to accomplish?

Now there are three types of slimes able to perform explosion, shoot, melee respectively.

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

  • Matching between the bounding box size and the model size is unresolved. I researched online to see how to draw out the bounding box and most of them are using three.js. Since animation is priority of our graphics team, I decided to postpone this debugging feature.
  • CollisionResponse doesn’t work. In Cannon.js, if I set collisionResponse = 0, the body would also neglect the ground plane and fall. I would try to look into the beforeContact and afterContact more looking for an alternative.
  • Kai and Shuyuan made lots of progress on refactoring the code and data transmission (Hooray!) Although there are not as many as merge conflict as I imagined, I do encounter some unexpected bugs when I finish rebasing the branch. So my current priority has been fixing the bug instead of adding new features.

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

Finish unmet goals mentioned in 3.

5) What did you learn this week, if anything (and did you expect to learn it?)

Last week I felt I had become more familiar with Cannon.js. But this week what I have realized is that many features for example colliders, common in implementing attacking, are not yet supported in Cannon.js although some sites suggest the author has implemented similar feature in his 2d physics engine.

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

Very frustrating during this week since I made few progresses and couldn’t find many useful online resources. Hope life would become better 🙁


Status Report 5/8

Group Status

1) summarize your overall status for the week

We have finished the skill system, which now includes the ability of spawning monster for the god player. The attacking system now supports shooting bullets and melee attacks (no animation yet). Objects will die after their health go to 0.

The texture, lighting, and shading are still in progress.

2) include both the week # and the date of the meeting

Week 5, 5/3 Friday: Finished the cursor tracing, assign tasks for weekends.

Week 6, 5/7 Tuesday: Reviewed and integrated the attack system and spawning system.

3) add a statement summarizing the group morale (feel free to be creative in expressing your morale)

GLHF ( with the midterms D: )

4) add at least one of your latest screenshots to your group page

Mouse tracing to the ground level
Spawn slimes
Shoot
Melee

Individual Report – Kai Li

1) What were your concrete goals for the week?

To incorporate a skill system and to make better looking UI.

2) What goals were you able to accomplish?

Skill system is working and has cooldown checking. Skills are defined on the server(only one skill yet). Also cooldown has animation on the client.

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

None.

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

For next week I think I will add more UI and more skills to it. Specifically for skills that affect the surrounding of the player, which is more difficult than just spawning monsters at a given point. Also on the game logic we could add things like AI of the monsters, world tiles generation.

5) What did you learn this week, if anything (and did you expect to learn it?)

None

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

Work harder and learn more!

Individual Report – Shuyuan Ma

1) what were your concrete goals for the week?

Attack system and spawning system.

2) what goals were you able to accomplish?

Both of the systems. Kai Li built up the UI and network IO for the skill system, I integrated it with the cursor tracing system and hooked up the game logic. Tianhui built the attack system and I reviewed and merged it with the skill system.

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

Not really unfinished, but this week most of our group members have midterms to study for, so they won’t have too much time to work on the project at the first half of the week.

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

Get graphics working for sure. Look into skeleton animation with Lin Zhou and how to import it to the game client.

5) what did you learn this week, if anything (and did you expect to learn it?)

Ray tracing is a cool technique. I used its algorithm for the purpose other than graphical rendering.

6) what is your individual morale (which might be different from the overall group morale)?

GLHF.

Individual Report – Haoming Wa

1) What were your concrete goals for the week?

Make texture and lighting works. Working on particle system.

2) What goals were you able to accomplish?

I fixed problems on texture so multiple objects now can be rendered with different textures, with or without material. I finished a phong shading for the whole scene. I made some test using models, material and textures made by Lin Zhou.

I am currently implementing particle system for fire simulation based on a 2D fire simulation I found, I want to try to make it 3D.

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

I haven’t finished a demo of particle system. Fixing all the problems took me more time than expected.

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

Before I get any assignments, I will be working on making a demo of fire simulation. I might still have to adjust some parameters for the shaders after we have more models.

5) What did you learn this week, if anything (and did you expect to learn it?)

Learned more about how sampler works in WebGL while debugging.

Learned about how particle-based fire simulation works.

Pretty much expected both.

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

Good, the texture and shading part works in general and I am going to learn about particles.

Individual Report – Tianhui Cao

1) What were your concrete goals for the week?

Building attack system.

2) What goals were you able to accomplish?

I followed Cannon.js demo to create a ball-shooting attack mechanism in our game. Also I used bounding box to represent each melee attack for collision detection.

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

I had a midterm on Tuesday so I didn’t have enough time devoted to the project this week. Most of the work is done on Friday and Saturday.

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

Resolving bugs and working on item interaction, such as cutting a tree.

5) What did you learn this week, if anything (and did you expect to learn it?)

More knowledge on how javascript callback should work and how to use incorporate it into physics engine mechanism.

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

Feel the pressure as we have four weeks left. More effort is needed.

Individual Report – Lin Zhou

1) What were your concrete goals for the week?

  • Texture for player
  • Rigging for player

2) What goals were you able to accomplish?

Texturing for player

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

Midterm and other coursework

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

Simple walk/run and attack animation of the player

5) What did you learn this week, if anything (and did you expect to learn it?)

Blender texturing and rigging (expected)

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

Work more often, game is getting into shape!


Status Report 5/1

Group Status

1) summarize your overall status for the week

We have finished setting up the basic physics engine. Now players’ movements are computed by the physics engine and jumping is enabled. Graphics engine partially works with texture loading, but there are still bugs. 3D modeling is going well. Skeleton animation is partially done. A fundamental UI based on HTML and Javascript is working.

2) include both the week # and the date of the meeting

Week 4, 4/26 Friday: Reviewed the multiplayer sandbox together. Assigned tasks to group members for the weekend.

Week 4, 4/23 Tuesday: Finished the new physics engine together.

3) add a statement summarizing the group morale (feel free to be creative in expressing your morale)

GLHF

4) add at least one of your latest screenshots to your group page

Jump movement. Upper right corner shows the newly designed player’s status panel.
Collision

Individual Report – Shuyuan Ma

1) what were your concrete goals for the week?

Graphics engine should work with texture. Physics engine should work. Attack interaction should work (based on physics engine). Basic UI.

2) what goals were you able to accomplish?

Reviewed and integrated: UI and the physics engine.

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

The graphics engine turns out to be complicated, and also the physics engine. The texture can be loaded but the rendering process is disorganized. The delay on physics engine delayed the development of attacking events.

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

Help fixing the graphic engine. Make attacking works. Add the spawning function for the god player.

5) what did you learn this week, if anything (and did you expect to learn it?)

Physics engine is complicated and fun to play with.

6) what is your individual morale (which might be different from the overall group morale)?

Explore more tools and engines, and have fun developing the game.

Individual Report – Tianhui Cao

1) What were your concrete goals for the week?

Work on physics engine and quadtree, and finish basic attack system so that player could attack other items.

2) What goals were you able to accomplish?

With the use of cannon.js, one physics engine in JavaScript, players could perform the movement same as without the use of the physics engine and could collide with other items, but the actual attack system is yet to implement.

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

Shuyuan and I worked on Cannon.js together this week. However, our progress is slowed down since (1) the API of cannon.js has already assumed we have enough knowledge in physics engine (2) we were stuck on whether the type of player object should be dynamic or kinematic (3) I am still a bit confused about the relationship between physics engine, quadtree and bounding box, and I need to discuss this on Thursday.

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

Catch up on the progress and finish attack system and physics engine.

5) What did you learn this week, if anything (and did you expect to learn it?)

Some knowledge in physics engine

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

Calm down, think more and work harder

Individual Report – Lin Zhou

1) What were your concrete goals for the week?

  • Build 3D models for basic environment
  • Apply texture to all models

2) What goals were you able to accomplish?

Build 3D environment with simple water, grass and rock texture and varying height

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

  • Change of priority
  • The initial 3D model of the player is not well built so that there are holes in the initial texture baking, need to spend some more time to fix this situation

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

  • Draw texture for player 3D model
  • Add bones for player 3D model for animation movements

5) What did you learn this week, if anything (and did you expect to learn it?)

Create simple environment with heightmap in blender (expected to learn it)

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

7/10, getting more familiar with powerful Blender, but should spend more time playing around with it.

Individual Report – Haomin Wang

1) What were your concrete goals for the week?

Finish material and texture rendering, implement lighting, start particle systems.

2) What goals were you able to accomplish?

I am able to read and render obj model together with the mtl file or textures. I packed the loader and renderer into a class for convenience. I also wrote a simple phong shading.

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

Some problems on texture when rendering multiple objects at the same time. Have found the reason is because WebGL store all the textures together, currently trying to find a way to solve it.

I have just take a look at some examples of particle systems, haven’t really start implementing it.

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

Right after I fixed everything for texture problem, I will start the implementation of particle system.

5) What did you learn this week, if anything (and did you expect to learn it?)

Get some review on light shading and understand more about how WebGL works.

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

Lots of problems came out during this week, but eventually able to figure them out, feels good.

Individual Report – Kai Li

1) What were your concrete goals for the week?

To complete a status bar.

2) What goals were you able to accomplish?

Status bar is done. It has some non-ugly ui. Health bar has animation. Health bar updates when stats in the server updates

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

None.

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

I will make the game look better next week. Also I will try to randomly or algorithmically generate random monsters on the map.

5) What did you learn this week, if anything (and did you expect to learn it?)

I have learned more CSS in the past week, mostly to make the status bar looks better

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

Work harder and learn more!

Status Report 4/24

Group Status

1) summarize your overall status for the week

We have finished the multiplayer sandbox, where players can move around and see each other. We have decided to make our game a 45-degree fixed angle top view. Lin Zhou has designed a player model and a slime model. And we are still working on how to load and render models with textures/materials.

We are now working on some of the basic game logics, including the overall data structure, the map, the interactable classes, attack events and other interactions.

2) include both the week # and the date of the meeting

Week 3, 4/19 Friday: Assigned tasks to group members for the weekend.

Week 4, 4/23 Tuesday: Checked progress. Reviewed the PR for the new fixed angle camera and multiplayer support.

3) add a statement summarizing the group morale (feel free to be creative in expressing your morale)

GLHF

4) add at least one of your latest screenshots to your group page

New fixed angle camera with rotation:

Added avatar:

Multiplayer support:

Individual Report – Shuyuan Ma

1) what were your concrete goals for the week?

Complete the sandbox, multiplayer support, data structure and map implementation, basic game logics.

2) what goals were you able to accomplish?

Sandbox and the multiplayer support.

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

The game logic is still in progress, and I am positive that we could finish our goals by the end of this week.

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

Different camera view for the God player. Zoomable camera. Attacking events, where players or slimes will die.

5) what did you learn this week, if anything (and did you expect to learn it?)

External libraries sometimes don’t function as expected. I need to read the source code to figure out their behaviors.

6) what is your individual morale (which might be different from the overall group morale)?

Since our “senior engineer” has quit, I shall expect more technical obstacles and more time spent on them. I should speed up the development correspondingly.

Individual Report – Lin Zhou

1) What were your concrete goals for the week?

Build 3D model for player and simple environment items

2) What goals were you able to accomplish?

Build 3D models for player, slime and a simple tree with blender

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

Unfamiliarity with Blender

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

  • Build 3D models for basic environment
  • Apply texture to all models

5) What did you learn this week, if anything (and did you expect to learn it?)

  • How to create simple 3D models with blender with multiple tutorials and practice (did expect to learn it)
  • How to export a proper format for rendering in WebGL (did expect to learn it)

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

7/10, happy to see our own player model come to life and excited to further dive into more game logic and setting specifics

Individual Report – Tianhui Cao

1) What were your concrete goals for the week?

Learn transformations used in graphics and finish synchronizing players’ positions on backend.

2) What goals were you able to accomplish?

I looked at several Professor Ramamoorthi’s online lectures on Youtube, got familiar with glMatrix and is now working on the attack system of players. Players’ positions are now synchronized.

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

I am having some trouble implementing the attack system, especially regarding how players should detect the enemies standing in front of them without looping through and checking all enemies on the map. I am thinking about an efficient way to detect only positions within the attack radius. However this approach complicates more as players’ face directions could point to any position, not necessarily perpendicular to any tile edge.

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

Finish basic attack system (hit, slash, etc) and ideally showcase health bars.

5) What did you learn this week, if anything (and did you expect to learn it?)

Transformations in graphics and related matrix knowledge.

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

Thrilled to see that now players can see each other moving on the screen and excited to implement the attack system.

Individual Report – Haomin Wang

1) What were your concrete goals for the week?

Figure out how to add color and textures to loaded model.

2) What goals were you able to accomplish?

For now, I am able to add textures by texture coordinates or simple materials using content of mtl file.

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

I am still having trouble figuring out how to render different materials on one objects, especially when there are different texture images for different parts of an object. The obj loader we are using do not have any documentation on material loading and rendering, so I have to check their source code and tests to figure it out myself, which took me a lot of time. Also, I have to make many changes to the shader to render texture and material.

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

I am still working on the texture and material and hopefully I will have something works perfectly soon. After that I will take a look at how to make particles effects using WebGL, such as fire.

5) What did you learn this week, if anything (and did you expect to learn it?)

I got a review about how texture mapping work with shaders. Besides, I learned about the format of mtl file and obj file to understand how they work together and what is the meaning of each line of an mtl file. I didn’t expect to learn this much, I thought using texture coordinates was enough to render texture correctly.

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

It’s kind of tiring to figure out a functionality without documentation. I spend a lot of time yet I haven’t made this works correctly. Still, I learned and reviewed a lot on shaders, obj and mtl processing.

Individual Report – Kai Li

1) What were your concrete goals for the week?

My goal this week was to learn some computer graphics because I had no experiences with it. And also to implement a timer for the game, as well as the status bar for the player.

2) What goals were you able to accomplish?

I have only done learning some computer graphics

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

I am too busy, don’t have time. There is 1 project due and 1 midterm. But I will have more time next week and I should achieve more next week.

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

Finish timer and status bar. Start working on something else if I have time

5) What did you learn this week, if anything (and did you expect to learn it?)

Some computer graphics, like translation matrix, rotation.

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

I want to achieve more next week! Learn more and do more!

Status Report 4/17

Group Status

1) summarize your overall status for the week

We are aiming to complete Phase 1 of our project, which is to build a basic sandbox where a camera can move around and view static objects in the world. We are on track and have completed the graphic engine, camera, obj model loading, server setup, client integration with IO and graphic engine.

At the end of this week, we should hook up the server and client, and let the server decide the movement of the camera.

2) include both the week # and the date of the meeting

Week 2, 4/12 Friday: Assigned tasks to group members for the weekend.

Week 3, 4/16 Tuesday: Checked progress. Reviewed the PR for the server setup, graphic engine, and camera.

3) add a statement summarizing the group morale (feel free to be creative in expressing your morale)

GLHF

4) add at least one of your latest screenshots to your group page

  • Landing page
Two buttons: “Play as survivor” and “Play as god”
  • Loading page
Player would be directed to this page after choosing one role on start screen and wait for other players to join.
  • Game Start
Currently we have a command input bar at the bottom.
  • Graphics Loaded
After entering ‘cmd cube’ into the input bar, the graphics would be loaded.

Individual Report – Lin Zhou

1) what were your concrete goals for the week?

Build 3D models for 3 players and god

2) what goals were you able to accomplish?

Build simple cubic 3D models for players and god

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

  • Change of requirements
  • Unfamiliarity with the software

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

  • Finalize the character 3D models
  • Build 3D models for simple environment items

5) What did you learn this week, if anything (and did you expect to learn it?)

How to create cubic art, which I expected to learn

6) what is your individual morale (which might be different from the
overall group morale)?

6/10, getting more involved in the game as we start to discuss the core logic and settings

Individual Report – Tianhui Cao

1) what were your concrete goals for the week?

Finish networking, construct classes to represent players, items, etc, show players’ positions on map

2) what goals were you able to accomplish?

The networking infrastructure has been built up, thanks to socket.io. Basic classes have been built but currently only very instance variables are included. Besides the goals, I also built a basic start screen and loading screen so that four players could enter the game screen simultaneously.

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

One reason is that since I lack graphics background, I don’t quite know what kind of data graphics need in order to render players’ positions for example. I could have created more appropriate instance variables if I have some background. Another is regarding the software/game design. For example, regarding showing players’ positions on map, it is easy to print it out the arrays representing the map on the console. What troubles me is how the arrays would actually be representative of the actual map (does each element represents a tile on the map?), what should be the appropriate size of the arrays and whether I actually need to create arrays on the server side or the positions are already representative?

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

I need to talk with Shuyuan to determine the tasks for next week. Personally I would look into players’ position and related game logic.

5) what did you learn this week, if anything (and did you expect to learn it?)

Socket.io is really convenient (unexpected). CSS is hard (expected).

6) what is your individual morale (which might be different from the
overall group morale)?

Excited to see our baby game is growing up. Will become a bad parent who forces his child to turn into someone he likes.


Individual Report – Haomin Wang

1) What were your concrete goals for the week?

My goal is to get familiar and write demo with WebGL and several libraries we are going to use for Graphics, including gl-Matrix for calculation, Cannon.js for physics and webgl-obj-loader for model loading.

2) What goals were you able to accomplish?

I was able to complete a demo. It has a camera that is able to be controlled by mouse and keyboard. It uses Cannon.js to simulate a scene of a cube hitting the ground, and it is able to load and render .obj format models.

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

The code was a bit messy and the camera movement is not fluent enough. Also I only used a few basic functions of the libraries. We are going to need some more complex functionalities like collision of different models and load obj file from server.

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

The specific goals are TBD. For now I think I will try to write some more complex demos that make use of some advanced functionalities of the libraries, especially Cannon.js.

5) What did you learn this week, if anything (and did you expect to learn it?)

This is my first time to ever implement graphics program using WebGL and related libraries. So I learned a lot from everything I did this week.

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

I’m glad that we decided to use WebGL for development because everything about it is new for me. I am currently enjoy learning new stuff and it always feels great when I see the rendering succeed.

Individual Report – Shuyuan Ma

1) what were your concrete goals for the week?

Get the team to complete Phase 1, where a camera can move around in the game world and view static objects. My jobs are to assign tasks, keep track of progress, review and test pull requests. The development tasks includes:

  • Graphic engine using WebGL
  • Free moving camera
  • Object loading (.obj files)
  • Server loop
  • Client (Integration of graphic engine and the IO with the server)
  • Serializer

2) what goals were you able to accomplish?

All above except the server loop and serializer.

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

The server side development takes longer than what we expected, and we were not clear on what serializer we should use.

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

  • Start to get on game development, including designing some general game object classes, basic interaction logic.
  • Further design the protocol in between clients and the server.
  • Start to consider arts, model, audio

5) what did you learn this week, if anything (and did you expect to learn it?)

Json might be enough for the scale of our game in terms of serialization. 3D models have many different standard formats and require a lot of effort to load them in.

6) what is your individual morale (which might be different from the
overall group morale)?

This is my last quarter at UCSD and I am fully dedicated to this project. I love games. I love indie games. I would like to experience what is like to develop one our selves.

Individual Report – Kai Li

1) what were your concrete goals for the week?

My goal is to write a serializer that compresses data to improve network efficiency, and a deserializer that recovers the data.

2) what goals were you able to accomplish?

I have finished an early and working version of serializer. And still working on a more compressed serializer.

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

I was going to accomplish more… But I don’t have enough time, and that I still have to learn the technology(Javascript) to finish my work. Also, our data structures and not determined yet, so I have to wait to start designing my serializer.

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

It’s yet to be determined… But I think next week I and other teammates will need to design our data structures and I could improve my serializer accordingly. Also next week I will pick up some tasks to help finish the game world and server communication.

5) what did you learn this week, if anything (and did you expect to learn it?)

I learned about javascript classes and also javascript function prototypes. These are very interesting and very different from other programming language. I didn’t expect to learn it, but obviously for my serializer to work I have to learn about them.

6) what is your individual morale (which might be different from the overall group morale)?

My individual morale is that I try to finish my work on my own without needing people to help. This can reduce a lot of wasted time on communication and improve the efficiency of my team as a whole.

Individual Report – Xiaofan Lin

Project Specification

Project Description

  • What kind of game are you planning to build?

We are planning to make an asymmetrical multiplayer survival game.

  • What are the goals of the game, how do players win, how do they lose?

The players will have two roles to play: God and Survivors. In each single match, there will be exactly one God and many Survivors. Survivors’ goal is to cooperate to build the Tower of Babel and overthrow the God. God’s goal is to stop Survivors’ attempt by whatever means. For Survivors, the game will be similar to Minecraft and Don’t Starve, where they need to find food, build shelters, fight monsters, and try to build the Tower of Babel at the same time. For God, the game will be similar to a RTS type of sandbox simulator and Plague Inc., where he/she could spawn monsters on the map and cast natural disasters to stop Survivors from their reckless goal.

  • What are the interesting or unique aspects to your game?

Our game will combine the elements of survival and strategy, and provide an innovative gameplay experience. God can’t fight Survivors directly, but only through strategic planning.

  • What are the list of features of your game? Prioritize them into at least three categories: “Must Have”, “Would Be Really Nice”, and “Cool But Only If Ahead Of Schedule”.

“Must Have” features: Survivors’ survival system, including the vital status, the combat system, and the crafting system. The geographic features and resources system for the map/environment. God’s skill system including placing monsters on the map to attack Survivors and casting natural disasters on the map with cooldowns and some restrictions. Monster AI.

“Would Be Really Nice” features: Sanity and disease system, where instead of having cooldowns on God’s skills, God can charge up his/her skills by collecting the suffering of Survivors. Rouge-like loot system, where Survivors gain random loot by killing monsters. Tutorial.

“Cool But Only If Ahead Of Schedule” features: VR mode. Story. NPC and side quests.

Group Management

  • What are the major roles in your group’s management?

Our group would mimic team settings in workspace. Major management roles of our group include a project manager and a senior engineer. The project manager is in charge of project planning, maintaining communication, and keeping track of progress. The senior engineer is in charge of designing the architecture and providing technical support for all group members.

  • How will decisions be made? By leader, consensus?

The decisions shall be essentially made by all group members. Practice-wise, the PM shall collect ideas and consult with the senior engineer for technical analysis, and then assign tasks to group members. Engineers are encouraged to participate in and contribute to the discussion.

  • How will you communicate? Email, meetings in the lab, discussion board?

Communication is through group meeting in the lab and WeChat (a Messenger-like app).

  • How will you know when you’re off schedule, and how will you deal with schedule slips?

The PM is responsible for checking the status of all group members, notifying obstacles, and arranging solutions by consulting with the senior engineer or corresponding group members. Developers should also not be hesitant to actively communicate with PM or other group members to resolve schedule conflicts or seek technical help.

  • Who will produce the weekly group status reports?

The PM should produce the weekly group status reports.

Project Development

  • What are the development roles and who will handle them?

Development roles include Gameplay Design, Graphics Engine, Networking API, Server-side Logic, Client, UI Design and Modeling/Art/Audio.

Gameplay Design: Xiaofan Lin, Shuyuan Ma

Graphics Engine: Xiaofan Lin, Shuyuan Ma, Haomin Wang

Networking API: Kai Li, Shuyuan Ma, Tianhui Cao, Lin Zhou, Xiaofan Lin

Server-side Logic: Kai Li, Tianhui Cao, Lin Zhou

Client: Tianhui Cao

UI Design: Lin Zhou, Haomin Wang

Modeling/Art/Audio: Tianhui Cao (Interested, but no experience)

  • What tools will you use?

We will be using JavaScript (ES7) as our main programming language. The server runs on Node.js and the client runs on web browsers. We will use the Net library (https://nodejs.org/api/net.html) of Node.js for socket level API, WebGL as the graphics engine, and ammo.js (https://github.com/kripken/ammo.js) for the physics engine.

  • How will you do testing?

Given the scale of our project, the language features, and the size of the team, we decided that we will not have a standalone QA nor use unit tests as our testing scheme.

We use Object Language structure to assign tasks as classes to each team member. Within a class, they will implement their own logic. When it comes to integration, we will make a temporary meeting with the persons who are part of the integration process and discuss about the use of the class and interface. Small logics should be tested by the person who is in charge of the class. Complicated logics should be tested by the temporary team.

  • How will you do documentation (both internal group documentation as well as external player documentation)?

At the base line, all functions must have a high-level description of its functionalities, logic, input, output, and error conditions. After testing and integration, we will collect them and organize them into a collective API document.

External player documentation (tutorial) is less important in terms of development. It should be done in the final stage and be ready before the demo.

Project Schedule

Define a set of milestones with a specific definition of what each milestone is, what it means to complete each milestone, and when you expect to complete them. Define the milestones at two scales, a high level set of key milestones like integration and design freeze, and a low level set of weekly milestones.