Thursday, September 12, 2024

CAGD 495 Sprint 1

For this semester, I’ve been assigned to a special project making a training tool for the United States Geological Survey that models how earthquakes could affect San Francisco. A different team worked on the project for nine months and then passed the torch to our team to complete it.


Here’s what we’re starting with. This project is totally unlike anything I’ve ever had to work on before, and this first sprint was extremely challenging. The first hurdle we faced was having to do lots and lots of reading through scripting and documentation to understand how the project had been assembled. Especially since the old team suddenly and unexpectedly lost their funding halfway through development, one can imagine how organized a project is left under those conditions. Nevertheless, it’s a really impressive system they’ve set up.


One strategy I initially tried to employ when going through the game scripts to try to find what I was looking for was having my own note document where I could write summaries of the scripts, map connections between them, and mark which one’s I’d looked at and which ones I hadn’t yet. While this somewhat helped me understand the codebase, it was rather time inefficient.


The most important move I ended up making was that when I setup a new install of Unity and Visual studio to work from my laptop instead of my desktop, it came with an updated package that lets me click on an implementation of a class or struct in the code and find its definition and references. This was something I’d never had to think about before—since in all the projects I’d made before I never had an issue finding my definitions—but it was vital to working effectively in somebody else’s project.



Ultimately, learning to use this feature was the most important thing I learned, and after a lot of hard work, I managed to get my first assigned feature implemented! I modified the existing code to display a building’s details when clicked on to additionally show how many people are in the building. First, I needed to add a reference to the RuntimeNavigationNetwork which contains a dictionary called TileNodes that lets me input the clicked-on tile and output an AI node. Not shown in the image, but I also had to add the RuntimeNavigationNetwork as a library so that I could reference the TransportNode data class for the nodes. Then, I feed that to the AIMapData’s PeopleNumDic dictionary to find how many people are at the selected node. Finally, I return that back to the UI display, which displays the number of people in the building.


I’m somewhat disappointed in myself that this is all I have for tangible progress, but I hope that the description of the process shows just how much work went into it. The majority of the battle was trying to figure out where all this data was stored in the codebase, and then figuring out how to link up those wildly different systems.  and with this first step up the mountain, we’ve got some momentum going forwards.


Wednesday, August 28, 2024

Saturday, May 25, 2024

270 Final Post

 Some screenshots of the final version of the level developed for this class:














Thursday, May 16, 2024

CAGD 373 Sprint Review 2

    Sprint 3 (4/10–4/16), my second one, was relatively relaxed compared to the mountainous first sprint. During this sprint I UV-d and textured the mounted turret. The UVs required a few topographical touch-ups, but overall didn’t prove to be too difficult, just a little time consuming. When it came to the texture, I took a lot of advantage of normal and height maps to get the details I wanted, such as the vents on the barrel of the gun.

With this texture I also got to use some brush layers. I used a simple brush to put some dark scorch marks on the front of the gun, to give the impression of its use. I also used a brush to put the tan paint on the handles of the gun. Inspired by how physical artists give the impression of texture and wear, I used a sponge-y eraser to make the paint look chipped away with wear. The last element of the texture was using an alpha to put some text on the gun where appropriate.

I didn’t do as much work during this sprint as the others, but I probably needed a break after how much work the first sprint was for me. I recognize that having a large team was the reason I could spend so much time focusing on a single model—however, it was certainly a model that require that level of attention. Overall I took on some more general work going forwards, and everything worked out alright as we got all the modeling and texturing done with time to spare.


CAGD 373 Game Scene Review 1

 

Since the first sprint was just getting into groups and deciding on a game scene, the “first” sprint where I completed cards was actually sprint 2 (4/3–4/9). During this sprint I had a single yet goliath task: modeling the mounted turret. 

Since I’ve never played Halo Reach before, the first step for me was collecting reference. I ended up using a lot of different references for this model because it looks different from the different angles. I tried to find a good side-view of the left and right sides, a three-quarter view, a top view, and even a back view. While these were immensely helpful, I still had a hard time telling how the inner cylinder of the gun was supposed to be shaped, since in all renderings it’s obscured by the shadows.

This was my first time making a prop this complex, and trying to make it all as one mesh definitely slowed things down. On my future props of a similar complexity, I made a blockout first before tackling them, just making sure each piece lines up on their seams. That being said, I’m still super proud of how the mounted turret turned out. I think I managed to capture the important details of the original model in a recognisable way. While studying the Halo turret, I noticed their attention to detail with how the gun parts slot together, and tried to follow that along to make sure I got each part. It was still very time consuming and I was quite stressed, but I learned a lot that would make my models better going forwards—and I ended up with a pretty cool model.

Monday, January 1, 2024

First Person Shooter - Progress Update 1/1/2024

 


This is the first progress update for the first person shooter I'm working on in Unity. The level is completely procedurally generated.

Evolution

 


This is the Evolution simulation project I worked on in Unity.

The orange cubes represent creatures. All they know how to do is move forwards, back, left, right, and jump when they get stuck. Whenever they take an action, they check if it brought them closer to their goal, and if so, they do it again.

They need to eat, drink, and sleep, and if they're successful for long enough, they'll reproduce and pass on their genetics to their offspring. For now it's just metabolic rate and color--metabolic rate determines how fast they move, but also how fast they spend energy.

The creatures also have a symbiotic relationship with the plants. When the creatures eat plants, they spread the plant seeds. The plants also have genetic inheritance, with their genetic traits including color, growth rate, and nutritional value.

Because the creatures will prefer plants with higher nutritional value, over the course of the simulation, those plants will get naturally selected to proliferate more. 

Lots of other emergent patterns can be seen in the video.

Featured Post

ProcGen FPS Update -- 8/28/2024

  The level is procedurally generated each time the program is run.