Log #17: Nov/15/2024

  • Redesigning the Story
  • Look at that Upside Down Stuff!
  • Rebel Recruiting
  • What Do I Do Now?

I am routinely faced with the ordeal that my teammates are running out of tasks to do, and I need to plan more of our game. Of course there is much to plan, but I always find myself only planned just barely ahead of what the team is doing.

Two of our artists has been pumping out models lately, and our programmers have been cranking out things as well, so I am beginning to realize that I can be slightly more ambitious on what goes into our game. However, this means I have to lay out more of the details. I find myself scared, because I fear I will procrastinate and not get too much done.

The gravity mechanic proves to be a beast. The form user interface has also been hard. I think our team needs some solid deadlines, because some of these issues have been hovering for a while. Of course they're difficult jobs, but I don't want to take too long on these mechanics.

Despite the difficulties, things are getting done. The gravity mechanic now works for the ceiling, and is very cool. I think our game's gravity functionality will be super fun to play, and it allows for super interseting level design. Wish us luck!

Me and one of the team's artists sat down and redesigned the game's storyline. I wanted to make sure our artist was invovled so they got a better idea of the game, and could branch off onto design work themselves while keeping the core feeling of the game I want. Additionally, they've proven to have a myriad of cool ideas, so I'm super glad I decided to discuss the game's story with them.

Otherwise, this week I mostly did work on level design (see below) and organizing the next tasks for our game. I've made a more subtle introduction to the rebellious characters in our game, and while it's been tedious, I think the rebel tasks I've been planning out will be cool in-game.

MATH SEGMENT: Geometry

I got to spend a lot of this week continuing to do level design on our game. I've been trying to brainstorm strange designs that utilize the game's gravity mechanic, as well as settings that carry the feeling I want our game to have.

Some upside down desks in a small square room.

Aside from rotating lots of models 180° to make them upside down, I have also used numbers to neatly measure everything.

For example, I have determined that a typical hallway in our world should be square: 300cm wide and tall (centimeters are the units that Unreal Engine uses). Additionally, in order to keep wall heights consistent, I have decided that I will place the floors of areas inside of the walls. This means that our walls will be 320cm tall, allowing room for two 10cm thick platforms, -the floor and ceiling.

While some of these details are unnecessary, making things consistent makes everything neater, and makes some parts of level design easier.

As I mentioned in an earlier blog post, the location a model is listed by might is represented at a particular point, called the origin. Now that most of our models have thier origins at their bottom corners, measuring where objects should go is much easier.

I have been unnecessarily tedious about making sure to precisely measure the length of a wall so I can type in the exact coordinates of an adjacent wall. I've been doing lots of measuring.

A pillar in my work-in-progress level layout.

As you can see in the above image, the origin of the pillar is positioned at its bottom corner, where the three red, blue, and gree arrows intersect.

On the right side of the image is the coordinates. You can see under the section labeled "Transform" that the origin sits at about (1240, 2563, 10), listed with the x, y, and z coordinates, where the z coordinate points upward in the level.

You can also see that the pillar is scaled to (0.5, 0.5, 3.0). This is because when I was laying out the level, I simply used a 100cm cube, and scaled it to have the shape that I needed for the level. Given the above scales, the pillar measures at 50cm wide and deep, and 300cm tall.

Level design is fun, and when I make sure all the numbers line up (or mostly line up) the level looks nice is pretty!

MATH SEGMETNT: Functions!

While I continued planning out the functionality for tasks in our game (thus laying out the logic for how they worked), that is not what this MATH SEGMENT is about. This week, I poked my head into the Precalculus course on Khan Academy that was shared with us.

I completed the first lesson on composit functions, which was review mostly review for me.

I'll share a summary of what I learned:

Let's say we have a function, let's say it's f(x). For an example, this function adds 1 to an input x.

Let's make another function, g(x). This function will multiply the input x by two.

What was taught in the lesson I did is that (f ○ g)(x) is equal to f(g(x)). If our input was three, (f ○ g)(3) = 7

So there you have it. Applying functions to the results of functions.

This has useful applications in coding. Let's say we're measuring the number of points a player has in a game, and we use a function called getPoints() to calculate the number of player points. Maybe we want to do something with that player's point score, such as make the number of enemies increase for higher numbers of points. If we have another function to calculate the number of enemies the game should make, let's call it monsterCount(), we can combine both of these functions. In this scenerio, we could calculate the number of monsters based on the number of points by writting

(monsterCount ○ getPoints)(x)

This is just one simple example of a time when you may want to apply a function to the result of another function. Composit functions are useful, and I look forward to learning more.

Thank you for reading this week's blog post!

-Luke Knotts