Published on

[Dev Log] Starting Unity: The Gap Between Tutorials and Reality

Authors
  • Name
    Logan Kim
    Twitter

The Gap Between Tutorials and Reality

Turning a Single-Player Game into an MMORPG

1. The Beginning of the Grind

I installed Unity with confidence, but staring at the empty screen, I felt completely lost. I bought a few books and tried following the examples, but they weren't much help. Apart from the genre differences, the bigger issue was my lack of basics.

I am a server architect with 15 years of experience, yet in the Unity world, I was a rookie who couldn't tell the difference between a Collider and a Rigidbody. I was so green I didn't even realize that the difference between 2D and 3D was simply a matter of camera projection.

Brute-forcing it was inefficient. I needed a proper reference. After some searching, I found a very well-made series on YouTube.

Reference: Action RPG in Unity Tutorial

It was a "follow-along" style tutorial, but the explanations were thorough. Through this, I was finally able to grasp how the game loop actually functioned.

2. Copying to Learn

The debate on whether "copy-coding" is beneficial for developers is endless. However, my view is different. I wasn't trying to learn C#; I needed to learn the usage of a tool called Unity. In this case, imitation is the fastest method of learning.

I grabbed some free character assets from Mixamo, applied animations, and succeeded in making a character move and hunt monsters. It looked plausible.

But as soon as I finished the implementation, a fundamental question hit me. "This is a single-player game. So, how do I make an MMORPG?"

No tutorial gave me the answer to that.

3. Meeting Photon Fusion

I went back to research. AI and search engines recommended Photon Fusion. I signed up and dug into it. It was a network engine operating as a SaaS (Software as a Service). The structure was quite interesting.

  • Cost Efficiency: Free up to 100 CCU (Concurrent Users). Sufficient headroom for an indie developer.

  • Smart Routing: It connects users to the nearest relay point within their cloud.

  • Abstraction: It handles network failures and basic data synchronization at the platform level.

From a server architect's perspective, it was an attractive proposition. It meant I didn't have to manually optimize server locations or routing.

However, finding a solution didn't mean the work was done. The single-player code I had written following the tutorial was completely useless in a networked environment. I had to scrap everything. It wasn't just a modification; it was a massive refactoring to rebuild the entire skeleton.

The hot summer of 2025 began just like that.