devlog001: Starting with Unreal Engine 5.1
Tags: beginners
Published: 2023-04-28 14:55:19

## This devlog

I am starting this devlog as a means to track my progress and stay motivated on my project: an ecosystem simulator, complete with humans able to throw the system out of whack, who are forced to negotiate with one another using natural language. I am interested to see if it's possible to generate relevant and goal-driven interactions with natural language, conditioned on the environment surrounding an agent.

That's the core idea, chosen to span across my areas of interest. When I grow bored of working on the perfect landscape, I can shift to the decision-making process for agents in the game, the natural language processing models I will have to develop, or creating new animals and organisms to introduce to my world.

If all this sounds vague, it's because it is. As time goes on and I learn more about Unreal, simulations, and natural language processing, I'll refine the project's scope.

## Where am I starting?

I have experience with Natural Language Processing, so I'm leaving the development of those systems for later. I have absolutely no experience when it comes to game development, 3D graphics, or 3D modelling.

## Why Unreal?

I've watched one too many cool YouTube demonstrations. [This video](https://www.youtube.com/watch?v=Dj60HHy-Kqk) in particular blew me away. Also, from the looks of it, it has decent documentation, and a good amount of tutorial content on YouTube.

## Starting in Unreal

As a start, I read through the first couple of pages in the [documentation](https://docs.unrealengine.com/5.1/en-US/). As someone who has never been exposed to game development or Unreal, I learned about a lot of things. Actors, Levels, Materials, Textures, and Meshes. These were all new to me. Below are some definitions of common terms I ran into.

**Level**: A gameplay area.
**Actor**: Any object which can be placed into a level. This could be a camera, player, or mesh.
**Mesh**: A "wire-frame". Defines a surface or volume in 3D space.
**Static Mesh**: A geometry that does not change over the course of gameplay.
**Skeletal Mesh**: A geometry which has "bones", which connect to one another and allow for animating the polygons of the mesh surrounding the bones.
**Pawn**: An in-game persona. Either controller by AI or player. When controlled by character, it is considered _possessed_.
**Character**: A player-controlled Pawn.
**World**: A container for all game levels.
**Volumes**: A bounded 3D area. Example use case is to apply effects to a player, for example, a fire volume hurting a player.
**Texture**: A map of the fine-grained surface details of a mesh.
**Material**: The "coloring" applied to a textured mesh.

This is by no means a comprehensive list, but these were the most important terms I learned which helped me understand what was going on in YouTube tutorials. I recommend reading the documentation I linked, going through the [Understanding the Basics](https://docs.unrealengine.com/5.1/en-US/understanding-the-basics-of-unreal-engine/) and [Working with Content](https://docs.unrealengine.com/5.1/en-US/working-with-content-in-unreal-engine/) sections.

After reading those sections, I wanted to get my hands dirty, so I found [this tutorial](https://www.youtube.com/watch?v=1cfPiofNy-U), booted up Unreal, and started messing around. After a couple hours, I had a basic island.

![Basic grey island mesh with water](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dvnx5zcx9y69jxjahpdl.png)

## What's Next?

I am going to follow the rest of that tutorial to try and prettify my island. Once that's done, I'd like to learn more about the options for procedural generation in Unreal, and see if that is relevant given my intended use case.