Image of a 3D character model.
Juan Méndez avatar
Juan Méndez⌛ 4 min
Published at:Apr 16, 2025
Updated at:Apr 16, 2025

Project Journal #1: An Exciting New Project

This is my first entry in this project journal, and I'm thrilled to share my progress and learnings with you. In this project, I'm planning to create a 3D online game using ThreeJS and React.

This will be my first time developing a complete 3D game from scratch. While I'm not entirely sure what to expect, I'm ready to learn and create something exciting.

The Idea

The concept is to create an online game where players can interact with each other in a 3D environment. Players will be able to move around, interact with the environment, and perform actions like personalizing their characters and their own "houses".

This idea was inspired by the "Open Hotel" project from @pagoruDev. This project serves as a playground for learning and testing new technologies and ideas. My goal is to build everything from scratch using existing technologies like WebSockets, ThreeJS, React, and more.

What Will the Game Be Like?

At this stage, the game is still in its early conceptual phase. I'm exploring various mechanics to incorporate into the game. However, I can tell you that it will be a multiplayer experience inspired by "Open Hotel" and social games like "The Sims" and "Animal Crossing."

Roadmap

The current roadmap is straightforward. I need to create a basic character model and environment to start testing different mechanics and ideas. Here's how it looks:

  • Create a basic character model
  • Create a basic environment
  • Implement a basic character controller with essential actions like walking and jumping
  • Develop an authentication system and basic database to save player data
  • Create a room personalization system
  • Implement basic furniture logic
  • Develop a chat system
  • More features coming soon...

Day 1: Character Modeling

Today, I began by modeling the character. I'm using Blender to create a simple character model. As I'm not a professional modeler, I discovered this YouTube channel that explains Blender perfectly. Here's what I learned and how you can test it:

Modeling the Layout and Solid

I started by creating the character's layout. For inspiration, I used poly.pizza to find model references. Ultimately, I decided to create a basic cubic character, as I want to focus on the game's mechanics and logic while keeping the character design simple.

Character layout in blender

One of the most useful tips I learned from these videos is to use the "Subdivide Surface" modifier to create a more detailed layout and the "Mirror" modifier to create a symmetrical character. These tips significantly accelerated my modeling process.

Character solid in blender

Texturing the Character with Color Materials

After completing the layout and solid, I moved on to texturing the character with color materials. I separated the materials to enable the personalization of each character part through code. For example, I created separate materials for the character's skin and the "color" used for the character's eyes.

Character texturing and materials

Rigging the Character and Adding Main Animations

Following the texturing phase, I began rigging the character. I used the "Armature" tool to create the character's bones and then added the main animations.

Character rigging

This was definitely the most challenging part of the modeling process. I had to learn how to use the "Armature" tool and create animations. Additionally, I needed to learn how to make the animations look natural rather than stiff. Moving each character's bone in the right way to create realistic animations was a challenging task.

Character animations

Testing the Character in ThreeJS

Finally, I tested the character in ThreeJS. I used the ThreeJS free editor to test the character and its animations.

Character in threejs

This was the moment when I truly understood how the character's animations work. It was incredibly satisfying to see the character moving exactly as I intended.

Conclusion

This was the first day of the project, and I learned a tremendous amount. I'm excited to continue with the project and see how it evolves. For the next day, I plan to create a basic environment generation system and deploy the project to test the basic mechanics, such as the character controller.

See you in the next entry!