• 한국어
    • 日本語
    • 中文-繁體

    2023.01.09 The Originality

    Client Programming, Jaehun Shin

    <THE ORIGINALITY> is a series about NC’s new generation — they are immersed in their jobs where they find inspiration. They pave the way towards excellence and then aim even higher.

    People at NC freely express themselves and achieve growth by challenging themselves to new experiences.

    Development skills are the basics. Then you need to think what makes you someone who other people would want to work with. Work is done through communication. I want to be a person who can easily exchange ideas in both design and technical subjects. The more conversations we have, the better ideas come up and the faster we solve problems.

    Client Programming, Jaehun Shin

    Client Programming

    I’m a client programmer for <Lineage M>. The client can also be called the front end. From game controls to the tutorial system, as well as, skills used by characters, and the effects when those skills are used, all content is developed with player usage in mind.

    Writing messages and scrolling windows in any messenger app is possible without the internet. However, the actual message transmission requires the control of the server. Similarly, game programming is largely divided into a client that runs games and a server that connects the client to players. A client programmer’s job can be seen as building a client space that can run all the content in the game without an internet connection.

    Think about the Structure of the Content

    Once the content roadmap for development has been decided, the client programmers start the design. We picture the overall structure, create a diagram, and develop an algorithm based on it. It is especially important to have a good initial design. For example, let’s say you’re building a 15-story building. When everything is built, there will inevitably be a request for a garden on the 7th floor and additional drilling to the 5th floor basement. If you build a building without much consideration of future plans, the later work becomes more difficult. That is why it is important to come up with a good design in the beginning so that you can react flexibly when things don’t go as planned.

    Next is writing the algorithm. Simply put, an algorithm is a sequence of instructions. For example, you can tell a computer to boil instant noodles by putting water or the noodles first, but you cannot explain in words where to get the water or what a pot is. First, you need to think of a process that inputs this data into a computer. In short, code is developed based on an algorithm.

    When the design is complete, it must be tested. After you put water in a pot, turn on the fire, and if the noodles don’t boil, you need to find the reason through the debugging process. You can repeat the previous steps if there are additional steps to be included. With good design, you don't give up even when it's hard. You develop it if it’s technically possible.

    A Stable Game Is a Fun Game

    Having lag in any game is disastrous for gameplay, as it affects the immersion. When a game, for example, crashes, it destroys the immersion leaving the player feel annoyed, no matter how great the game. To prevent this from happening, programmers prioritize stability and consider whether certain features are necessary or whether there is a way to upgrade them further.

    Live games are updated weekly. On the day of the update, we immediately start fixing problems once feedback like “the game has slowed down” or “the game crashes” is received. Content serviced through Purple is taken care of as fast as possible, but content in the app version may take longer depending on the review period. The goal is to provide the updates as quickly as possible, but there are environmental aspects that cannot be helped. I really want to tell players we sincerely ask for their understanding.

    Just Do It and the Way Will Open

    Reset to Programmer Character

    I majored in Media Engineering and studied all media, business, design, and programming. Initially, I wanted to work in the media industry. Because I didn’t like books and studies, I tried hosting a radio broadcast on campus and was thinking about becoming an announcer. However, after some time, I realized that it wasn’t much fun.

    Then I took a programming class. It was fun to see the interactions between me and my computer's black screen as I entered my inputs. In a conversation with a person, when I say A, it may be viewed as A or B by the other person. However, the computer caught my interest as it only answers A because I designed it as A.

    Since I didn’t major in the related field, the small studies I did in college were not enough. I wanted to delve deeper, so I bought a book related to that major and studied it. I also joined application and game development clubs. Each time I made something I realized what I was lacking, and I took advantage of this to increase my stats. It felt like I was leveling a new character after resetting what was “me.”

    Making a Tutorial for < Lineage M >

    I joined NC when <Lineage M> was getting ready for its release. The first project I participated in was game tutorial development, though I had never made one myself.

    I know that you can ask for advice from those around you, but in the end, it’s you who has to find the answer. So, instead of worrying, I tried several things. I had to plan the design from the ground up several times. I tried putting control buttons on top of images, putting them here and there, and cutting them out. With perseverance, I was able to complete it. After the game launched, I saw people playing my tutorial on the subway and in restaurants. At that moment, I was really proud of myself.

    Balance Patch through Study and Practice

    Programmers have to be good at design in general. In college, I thought I was good at design because people around me praised me. However, I realized I was only a big fish in a small pond after I joined NC. Many programmers were already outstanding and some even wrote books or developed engines themselves.

    I read and studied more because I thought I lacked the knowledge. However, there was a limit to learning the theories alone because game technology changes fast and there are a variety of fields in which they apply. With that being said, I tried studying a new engine and a new language while trying to use them in practice.

    As I gained experience, my visions broadened, and I was confident in applying the knowledge I gained. I can now think of better ways to rewrite the code I wrote in the past. I strive to better myself because I enjoy the pleasure I get when I realize my skills have improved.

    A Developer People Want to Work With

    Communicative Programmer

    Development skills are the basics for programmers. Then you need to think what makes you someone who other people would want to work with. When you try to answer that question, you will think of someone who can communicate and express any opinion without hesitation because most things can't be solved alone.

    Good communication requires a good relationship. To create a comfortable atmosphere, I approach someone first sometimes and just chat. I try not to differentiate my personality at work from my daily personality. In fact, I talk about things like it’s not work. Whether it's design, technology, or a completely different topic, if you have a pleasant conversation, good ideas will sprout and problems get solved.

    Planning, Art, and Programming Must Mesh Together to Work

    Programmers primarily think of performance and efficiency. However, a game is not just complete when it performs, it also needs fun and aesthetics. To accomplish this, game designers, artists, and programmers work together. The charm of game development lies in the process in which these three parts, with completely different inclinations, collaborate toward the goal of making a fun game. Synergy is created when all three are systematically connected while optimizing each other's roles. While there will be discord, the collaborative work towards a single goal is fun nevertheless.

    The Joy of Work Comes from Achievements

    To work at a game company, you must like what you do. This is because it’s a place where many people who like games work together solely to create games. If you’re looking for a big salary or compensation alone, the work will not be fun and you will have no sense of accomplishment.

    I enjoy programming and that's my biggest strength. Sometimes it feels as if I'm playing a party game with my team members rather than working. Another reason is that the sense of achievement is instantaneous. It makes me very proud to see players enjoying the results we developed together. The reason why I can't leave the client team is because the rewards are instantaneous.

    Improving Others Is Also My Share

    Programming cannot be done alone. If I want to do better, the people I work with must also do better. If we don't get better together, the burden will eventually come back to me. It's good that our team has a culture where everyone wants to do well. It is natural to share new technologies when they come out and to inform each other about things we do not know.

    All the Way to the End

    Since I’ve been working with <Lineage M> from the beginning, I want to follow it to its conclusion. I’m curious to see how far this journey can go. There is still a lot to be done. Whether it's expanding to new platforms or playing multiple games simultaneously on one platform, there are plenty of possibilities left to realize. As a developer, I want to keep testing how much more complete I can make it.

    I want to break the mold that programmers only have to program. It is natural to do my job well, and I will continue to do what I want — have fun with friends, build a happy family, and pay more attention to my personal life. Whether it's a company, a team, or society, I want to be a person who can blend in and play my role well.

    * The content stated in this interview is the personal opinion of the interviewee and does not represent the official position of NCSOFT.