Jessica’s Updates Week 7 20170522

1) what were your concrete goals for the week?

Originally, the main goal was having UI for units. That wasn’t really much, and I was searching for more things to do. The team said there wasn’t anything pressing for graphics yet, so I decided to try and implement obstacle avoidance so that spaceships don’t turbo through each other and planets.

2) what goals were you able to accomplish?

UI was done pretty quickly. I had to refactor once so that the design would match with Dylans’s suggestions. An hour or so ago, Brandon reviewed the code and said he wants some minor tweaks, but since I’ve been tutoring, I haven’t had a chance to look at it yet. However, I will do so later tonight after

For obstacle avoidance, I ran into some design issues as well as some server issues again. The main gist of it seems to be there with some known issues as well.

In addition, I’m not entirely sure if it’s working since I don’t really have a way to test it out other than randomly spawning units and making them attack each other with the hopes that there is an obstacle in between, but Brandon says there is a PR coming in where I should be able to control unit movement to improve testing.

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

One of my issues that doesn’t seem like a huge issue yet, but should be handled is that only moving units should be checking for collision detections, but since I’m doing it on the server side, I am having difficulty checking for this condition. At first I thought I could just fetch its current command, but it seems to always be set to Idle. So I tried creating a boolean and an isMoving function, but that seemed to crash the Client before it even loads the scene for some reason.

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

Asides from what the team says is necessary for the graphics end, I want to try adding sound to the game since ours is silent so far. (Though technically if you want to be scientifically accurate, there should be no sound).

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

I learned how to work with the nanogui library.

 

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

Morale is slightly better than last week, though I felt like I could have contributed more.

Also slightly weary about the last few crunch weeks since there will probably  will be marathons of shelling out features for both this class and 112 in which my team asked me to switch out roles from documentation to the lead of the front end team.

Jessica’s Updates Week 6 20170515

1) what were your concrete goals for the week?

My goals were to have the ship animation done and a UI set up for the team.

2) what goals were you able to accomplish?

The ships are able to rotate towards the target with some degree of error that needs to be fixed, and they’re able to shoot lazers and explode…however –> to the next section

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

  • I was having trouble turning shooting on and off. As of writing this post, Sylvia says that she has it handled it, but sometimes the animation is too fast.
  • In addition, there’s no trigger for the explosion and any waiting for it to be deleted yet either. So it’s also an all or nothing deal.

Most of the issues are that I’m not really sure how the server is being handled so, I have a lot of trouble figuring out what needs to be updated, how it is updated, and where.

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

I need the animation working with all of its triggers. I also want to help out with more things. Now that the UI library is integrated, depending on how much Dylan has already done with it, I would like to be able to design it too.

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

I probably should have stayed more on top of the code reviews. I had mainly paid attention only to things that were the client side.

Brandon on the other hand, takes the time to review everyone’s code, so I feel like he knows most, if not all, that’s going on in the project. However, I was mostly lost when I had to use the server side code.

In addition, taking time to document our software architecture might have been helpful, but we put it off because our architecture was changing so often that it would not have been worth it.

 

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

Morale is still low. I feel like I was the least contributing member on the team. Dylan is doing so many things at once, one of his Trello cards was setting up the UI so I wanted to take that off of his hands. On Thursday, I started in the morning with trying to set up the nanogui library and trying to link it properly with our project. Once I had everything linked, I spent another few hours trying to figure out why the program was crashing each time I was trying to instantiate a UI screen. By 3pm or so Dylan said that he would take care of it so I wouldn’t have to worry. Reluctantly, I left it up to him.

Next, I switched to integrating animation with Syliva. I already had a client only version working, but there had been debates back and forth about how to handle rotation and whether it should be on the server or the client. The idea was that most of the load should be on the client side so that all the calculations wouldn’t slow down the server if there were hundreds of units.

I was told that the only thing I would have to work with in order to calculate rotation was an orientation vector sent by the server. I struggled with trying to figure out how I would work with such little information, but we decided that we could lerp from the original  orientation vector to the final orientation vector, and that I could build the rotation matrix based off of that vector.

This worked only sometimes, and other times the ship would be pointing the wrong way. I was also really unhappy with how inaccurate the lerping method was. It was also not going to fly because maybe 1/10 times it would rotate correctly. I ended up deciding that I wanted to go with my quaternion slerping implementation, even if I had to stick all the calculations on the server for the sake of having the right functionality. However, the math I had used before was not working anymore and sometimes the ship wouldn’t even rotate. In the end, I spent 12+ hours that day working with no results while my other team members seemed to have gotten a lot accomplished.

Several days passed, and after pulling my hair out, I finally had rotation working (mostly, but not perfect yet) by Saturday afternoon. After digging through all of the classes I figured out that nothing I wanted to update was updating because I had a misconception about how things worked on the server side. Rather than assigning the value to the variable in just the class it belongs to, I also have to set the same value to another class which sets it properly for the class I was trying to set it in originally (?).

I thought that I had figured out how the server side works once rotation was in, but then I spent the next entire day just trying to turn a boolean on and off so that I could turn on and off shooting lasers,  but once I turned it on, the variable was never updated properly for me to turn it off, and once again I had made no progress on a simple task the entire day.

I feel like I didn’t have a hard task, nor did I have many tasks, but I wasn’t able to accomplish anything.

Looking at some of the other team’s projects, they look really nice. With me being one of the people handling graphics, I feel like it’s on me for our project not looking as nice.

Jessica’s Updates Week5 20170508

1) what were your concrete goals for the week?
On my trello board I had:

  • making the skybox fixed in place so that you can’t zoom outside of the box
  • making texture references
  • looking up a ui library
  • creating the animation of a spaceship attacking another one and having the other one die

2) what goals were you able to accomplish?

  • the skybox is fixed at infinity
  • I tested out a library called imgui
  • The spaceship can turn towards a point and be torn apart
  • As a bonus, we now have geometry shaders, and the particles are actually billboarded!

 

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

  • I have not actually done anything with the library yet. I had asked what kind of items we might need for the UI so I could see if the library would be feasible to use, but I didn’t seem to get a response. I guess I should have poked my teammates more.
  • The texture references have not been done yet. It seemed like a quick refactoring task, so I left it for last. But I was distracted with particles again. One of my weaknesses is that I’m never satisfied with something and it bothers me to keep fixing it if I have no deadline. In addition, my schedule was filled this week due to midterms starting and having to grade a bunch of projects for one of the classes I tutor for.
  • The pieces for the spaceship animation are in place but not integrated yet. Now that our parts are more intertwined, I need to work with Sylvia who is working on some unit stuff and classes on the server side so that I can fit the parts in the right places. Unfortunately we were unable to meet over the weekend and on Monday, so hopefully it will be done this week.

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

  • finish integrating with Sylvia.
  • get the texture references done by the Thursday team meeting when we go over our code. (Tuesday I have a midterm, and Wednesday I have a music assignment, and I still have one project to finish grading, so it will have to be done Wednesday night)
  • other goals to be discussed by team needs

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

I started learning about how geometry shaders work. I’ve heard of them but never used them before, so they were a magical mystery to me.

I also learned that as the quarter progresses, I need a better way of figuring out time management.

 

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

My morale slightly dipped this week. The times for this class are concurrent with my music GE, so I have not attended a single music class lecture since this class and our team meetings are the same time as my music class. Although I’m taking it pass/no pass, attendance is 20% of my grade, and I didn’t seem to do well on my midterm, so there’s now a possibility that I won’t be able to graduate and that I’ll lose my job offer. Of course, it’s on me for deciding to take two classes at the same time, but the mood seemed to affect my development this week.

Jessica’s Update Week 4 20170501

1) what were your concrete goals for the week?
After discussing with the team, Dylan wanted to take on the user input. With no other unblocked graphics goals set in place,  I volunteered to work on our last week’s stretch goals of having the hdr bloom shader. In addition, Brandon wanted some optimization on the particle effects.

 

2) what goals were you able to accomplish?
I was able to finish the bloom and hdr shader so that our planets have a nice slight glow to them.

3) if there were goals you were unable to meet, what were the reasons?
I’m still a bit stuck on particle optimization. I wanted to work on the bloom and hdr first because it seemed to be more exciting, and put off going back to particles until the end. Brandon had suggested a linked list data structure of some sort, but I was still trying to understand how that would work. As of last night, I ran into the idea of something called instancing, so I was going to test that out, but as of now, it’s not working for me.

In addition, I lost a whole day of working due to a ridiculous situation.

*cue long backstory, but it leads into what I learned this week. skip to question 5 to get to the point*

On Wednesday, my laptop had lost charge and I couldn’t even turn it on anymore. I brought it home, hoping my parents would be able to fix it, and after disassembling my entire laptop, they decided that my charger was not delivering any voltage. My solution was to quickly order a new one on Amazon Prime, but with my parents both being EE alumni from UCSD who never want to spend extra money, they wouldn’t let me order it because they were going to fix my charger themselves. After cutting up my charger and bringing out the soldering iron to attach its wire to another charging cable, they realized the issue was in the head of the charger, not the wires. In the end, my dad told me to go buy a new one, so I ran to Target 5 minutes before their 11pm closing and bought a new charger for a whopping $66 just so I could charge my laptop and try to salvage some time to get work done.

The next day, I came home and wanted to charge my laptop so I reached into my backpack to pull out the charger, but it was not the charger I bought at Target. I thought it was strange because my dad already cut up my charger. I reached in again and pulled out the Target charger.

TLDR: My charger wasn’t working because while my real charger was inside my backpack, I had accidentally grabbed my old one that had broken several months back and taken it to school with me to use that day. Even though I should have disposed of it many months ago, I just left it out on the sofa the whole time next to all of my stuff.
4) what are your specific goals for the next week?
I need to discuss this with the team since we seem to have deviated from our original weekly plans, but we probably want to get some UI up and going.
5) what did you learn this week, if anything (and did you expect to learn it?)

After the entire charger fiasco, I learned several things:

  1. I need to be more organized instead of letting things lay around everywhere.
  2. If my laptop had been the issue, I would have lost some code that was locally committed but unpushed. My plan B was to pull the latest commit from github and work inside B220 or the VR lab where the tools I needed were already installed, and plan C would have been to steal my brother’s laptop to do work. That would have given me something to work with, but there would have been a lot of work lost. Note, that this is also still week 4 so time would be a bit more forgiving if I had to redo some stuff, but had this been in week 9 or the day before the final code freeze, my team would be in big trouble because of me. As of writing this, I realize that I need to PUSH OFTEN. If I made any valuable progress, I should also push anytime before I close my laptop or step away from it.

I also learned from trying to implement bloom in our graphics. I had actually tried to implement bloom in my 167 final project a year ago, and it failed miserably. Now that I’ve revisited bloom and reimplemented it successfully, I realized that I had misunderstood how to implement it the first time. Now I can implement additional post processing effects if need be.

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

I was slightly frustrated on Wednesday while trying to get my laptop up and working again, but now that it’s charging and I managed to get most of my goals for the week accomplished, it’s back to my original level of morale. I’m not very emotional until I get stressed out or accomplish a big goal, so my morale will probably be a flat line during most of the development process.

Jessica’s Update: Week 3 (20170424)

The goals for the week changed a bit after talking to the team, so for this week, I had set out to implement a skybox and particle system.

The skybox is pretty simple, so I had completed that, but I ran into obstacles with the particle system. I have one in place, that can be rendered but it’s not the beautiful or complete particle system that I was envisioning.

  1. As of writing this post, billboarding is not working for the particles. I am using flat squares and am trying to make them face the camera at all times, but there is something wrong with my math calculations.
  2. I wanted a nice shader and shape for my particle system to represent thrusters so that it would look like real fire. I’ve attempted things such as using textures and noise sampling, but nothing looked quite right yet, so i’m just using colored squares.

Hopefully for next week, I will be able to start implementing user selection and input with our graphical interface.

What I learned this week is that I really need to brush up on some of my math. I should also try and ask my teammates early on for help. No one has really been asking me for help yet, so I’ve been working kind of individually on my side, but I feel like I should try and integrate more with the team.

 

The team still seems pretty excited. It was neat when Brandon sent me a screen shot of his success hooking up networking with graphics. He had been sending position coordinates and updating the position of our Earth model with it.

Jessica’s Update: Week 2 (20170417)

My main goals  this week were to get model loading done, as well as to rearrange the graphics base that Dylan setup to organize it better.

I managed to get model loading up and going, along with its color and texture properties. There are also some functions that allow you to manipulate the model matrix. I also refactored the graphics code, which is still under review

I think I accomplished most of the goals set out for the week, but I was actually hoping to get more accomplished or start on the next iteration since I thought that model loading would be a simple task. However, I had to try to understand and adjust to the newer version of OpenGl as well as understand how to use the Assimp library, and I’m a bit slower at picking up new things than other people. In addition, there were some cases where I was testing model loading and it didn’t seem to work so I wasted a long time trying to debug. Later, I found upon inspection, that it wasn’t necessarily my code that was wrong, rather the model file info was different than what I was expecting. (One of my models had no color, but it was because blender had not exported the colors I painted on it, so all of the information was gray. Another model had purely color materials and no textures, but at that time I was using a shader that only handled texture information.)

There are also some issues still with the shader giving a pinkish tint to my models, and the lights passed to the shader should be organized in a better fashion.

I also spent more time than I thought on thinking how I would refactor the code since the Sphere code Dylan had was very similar to calls I would use to draw or create a mesh.

 

My goals for next week are:

  • Planet/ solar system animation
  • Having a skybox

Stretch goals:

  • Bloom shader
  • Particle system

 

This week I learned that if something working, I should try other cases instead of being fixated on that one case to try to narrow down what is wrong. I have a bad habit of obsessing/ being focused solely on one thing.

In addition, I made the mistake of waiting to make a huge pull request with lots of changes. I don’t like to show people things that aren’t done or that have imperfections (not that my code is perfect now, but it was definitely more of a mess as I was refactoring one class at a time). I realized this puts a negative impact on my teammates who have an overload or things to review. Note to self: try and get over the insecurity of having other people look at your code because your teammates would like to know what is going on.
In general, I don’t really express much excitement  or have a strong opinion for anything because that’s my personality, and I tend to put up a barrier when I’m still uncomfortable with people. Once I warm up to people I might be more enthusiastic. The rest of the group seems really excited for the project and are always spitting ideas back and forth. Dylan and Brandon are really proactive. Sylvia says that she can’t wait until she can see a ship shoot down another ship. Raj and Ethan are always ready to jump in and contribute ideas.

 

One of the model loading screenshots**:

** note that the ship is not to scale