ParkChanghwi_Introduction

“I am a Software Engineer at Nexon Korea, to be more specific, a gameplay and engine programmer for MapleStory. Before joining Nexon Korea, I interned at NCSoft in the Vision AI Lab. I got my bachelor’s degree at Seoul National University, where I double-majored in geography and computer science. My main interests are video game development and computer graphics. I am also keen on other fields of computer science, including computer systems and GPU programming.”

Education

Seoul National University

  • B.A. in Geography(2022)
  • B.S. in Computer Science(2022)

Please refer to this post for more details about my college projects.

Career

Nexon Korea

  • Gameplay & Engine Programmer
  • August 2022 - September 2023
  • MapleStory Programming Team
    • As a gameplay and engine programmer, I engaged in implementation of core gameplay features, both on the client-side and the server-side.
    • Efficiently dealt with an enormous codebase with 20-years of legacies, using C++, C#, and MSSQL.
    • If you want to learn more about my experience, please take a look at the post.

NCSoft

  • Intern Vision AI Programmer
  • July 2021 - August 2021
  • Human Pose Estimation Team, Vision AI Lab
    • Developed an AR- and AI-based livestreaming system using Unity & Barracuda, OpenPose, and VideoPose3D.
    • Successfully developed virtual character movement pipeline including inference, handling the result from the neural network, and demonstration with arbitrary characters on the client.
    • This post depicts the internship project in detail.

Updates

  • (2024.01) FOV Mapping has been published on Unity Asset Store!
    • FOV Mapping is an advanced approach to Field of View (FOV) and Fog of War (FOW) systems for Unity. Leveraging the power of the GPU, it stands out as a high-performance solution that offers exceptionally efficient field of view system. It also provides terrain-adaptiveness and rich controllable features.
    • FOV Mapping is getting its popularity, recording over 100 downloads on Unity Asset Store!
    • Demo Video
  • (2024.03) I am currently working on a fluid simulation.
    • Check out the repository!
    • Tools used
      • C++ for the language
      • Vulkan for the graphics API
      • GLSL for the shading language
      • ImGui for the user interface
      • RenderDoc for the rendering debugger
      • Visual Studio for the IDE
    • Theoretical backgrounds
      • Smoothed-Particle Hydrodynamics (SPH) for simulating fluid
      • Marching Cubes for rendering smooth surface
      • Lighting, Smoothing, and Other Rendering Techniques
      • Compute Shader
    • Demo Videos

Projects

Indie Game Projects

  • Here are some demo reels for the project. Check them out!
  • A top-view strategy game set in Korean war.
  • Unity, C#, and several 3D modeling tools.
  • Designed, programmed, and produced art assets.
  • This category embraces introductions of the project itself and techniques applied.

Skills

Programming Languages

C++Logo

  • C++ is my primary programming language. I am a professional game programmer and use it every day.
  • I am knowledgeable of modern C++; STL, move semantics, template, and many other recent features. I can apply advanced features to design and construct games and other applications with high performance.
  • C++ is compiled into native code and supports an object-oriented programming paradigm, which makes it the most suitable language for developing real-time applications. I have a deep understanding of the philosophy of C++.


CSharpLogo

  • I use C# frequently for a personal game project along with Unity. I have been using C# for a long time; thus I have a deep understanding of its features.
  • C# features well-designed and concise functionality and keywords. I know how to utilize them to boost the software development process fully.
  • As to a few weaknesses of C#, like performance issues due to garbage collection, I am experienced with optimizing those codes.


PythonLogo

  • I use Python primarily for prototyping. I enjoy writing codes in Python since I can quickly get hands-on results.
  • I have written codes in Python for a variety of fields; computer vision, spatial statistics, and even games.

Game Engine

UnityLogo

  • I have been developing my own game with Unity for over three years.
  • Since the project is aimed at commercial success, I have encountered numerous challenges while developing each disparate part. With deep considerations about how to formulate Unity components, I was able to make a breakthrough.
  • Not only do I use functionality offered by Unity, but in order to enrich my game project, I have also been highly customizing terrain, animation system, shader, and the multiplayer API(Mirror).

Graphics API

VulkanLogo

  • Vulkan is my way of presenting graphical ideas along with GPU programming.
  • I am capable of managing various Vulkan resources to establish complicated rendering pipelines, eventually building up complicated applications upon them.
  • Compute shader along with Vulkan is my favorite way of boosting parallel computation. Take a look at my fluid simulation with Vulkan compute shader!
  • I am engaging Vulkan to develop a high-performance in-house fluid simulation tool powered by Vulkan, GLSL, and ImGUI.

Theoretical Knowledge

  • Computer Graphics - I have implemented and optimized real-time rendering systems for games. Also, I have a strong interest in researching various graphics techniques and realizing them with graphics API, shaders, and a good knowledge of 3D mathematics.
  • Computer System - Understanding how computers are organized with CPU, memory hierarchy, and other hardware components is a priceless asset of mine as a software engineer. Furthermore, my knowledge of compiler and automata theory greatly helps me with dealing with abstraction.
  • Algorithm and Data Structure - Without a careful choice of suitable algorithm, it is impossible to provide a pleasant play experience to game players. I have both theoretical and practical understandings of algorithms and data structures that ultimately decides the usability of an application.
  • Software Design - Before I type code with my fingers, I take a considerable amount of time to remind myself of significant software design principles. I am capable of building understandable and maintainable programs by choosing which design patterns to apply properly.

Others

  • 3D Modeling - I have been producing 3D models and humanoids for my own game project with Blender, ZBrush, and Substance Painter. I certainly know what the collaboration process between artists and programmers should be.