SWEngineer* coding_pelican = new_SWEngineer(
person: new_Person(
behaviour: (Behaviour*)new_PelicanLike(
name: "Gyeongtae Kim"
),
hobby: "๐ธ Photography"
"๐๐ป Running & Jogging"
"๐ฃ๏ธ Learning languages"
),
mainDomain: "Game Engine Development",
skills: (SkillList){
.languages = (Skill*)(Language[]){
C, CPlusPlus, CSharp, Python
},
.engines = (Skill*)(Engine[]){
Unity, Godot
},
.tools = (Skill*)(Tool[]){
Git, CMake, VSCode
}
},
specialSkills: "๐ข Proud owner of an epic tech neck"
"๐ฆ Cheers every time code execution speeds up by 0.01 seconds"
"๐ On a record-breaking caffeine-free streak (since 2022-09-05)"
);
FoodList_Append(
coding_pelican->person->favoriteFoods_,
new_Food("๐Pizza")
);
FoodList_Append(
coding_pelican->person->favoriteFoods_,
new_Food("๐Chicken")
);
coding_pelican
->person
->behaviour
->IFoodEatable.EatFood(
(IFoodEatable*)coding_pelican->person->behaviour,
coding_pelican->person->favoriteFoods_->foods[0][0]
);
// output:
// 'Gyeongtae Kim' swallows '๐Pizza' without chewing!
- ๐ง Email: codingpelican@gmail.com
- ๐ป GitHub: https://github.com/coding-pelican - My GitHub profile for open-source projects and contributions.
- ๐ Hashnode: Gyeongtae's Blog - Read my technical articles and tutorials on various programming topics.
- ๐ท Instagram: @dev.dasae - Follow me for behind-the-scenes glimpses of my projects and personal life.
- ๐ฌ Threads: @dev.dasae
- ๐ฆ X(Twitter): @dev_dasae
- ๐ฎ itch.io: Dev.Dasae - Check out my game development projects and releases.
๐ฎ My Journey: From a Curious Boy to a Game Engine Developer
There was a young boy with unusual hobbies: DOS game emulation and game localization. He was quite the geek, though he didn't realize it at the time.
One day, curiosity struck him. Instead of developing games within a game development environment, he wondered what it would be like to develop games in the real world.
His best friend encouraged him, "Just give it a try!" "Why not! Let's do it!" he replied. He stumbled upon a Java-based block-coding app and began his journey into game development.
That young boy, once filled with dreams, is now an engineer who develops his own game engines.
What happened in between? Keep reading to find out!
"Who needs a game engine to create a fun game? I can create fun games even without a game engine!" โ The past me
This statement isn't entirely wrong. The boy disliked dependencies and wanted to build everything from himself.
He actually made a pretty fun game, his first project titled 'We are Going'.
It was fun but full of issues, as you'd expect from a first project:
- ๐ "A text adventure game dropping to 16 FPS?"
- ๐ช๏ธ "The UI elements are flying around!"
- ๐คทโโ๏ธ "All the play story logs are gone!"
"What I cannot create, I do not understand." โ Richard Feynman
Overwhelmed by bug reports and the worst performance issues across multiple projects, he realized he needed a solid foundation and systematic approach to create stable, high-performance games that could bring his ideas to life.
- He learned half of C (it was harder and less fun than Java).
- Developed simple mini-games (a top-down shooter and a Super Hexagon clone) with Godot.
- Learned C# and Unity.
Feeling stagnant in his learning, he ventured into non-game domains, exploring various languages and frameworks to expand his knowledge.
He faced a common challenge: lack of foundational knowledge, leaving many concepts unclear.
- He delved into algorithms and data structures.
- Studied C++ and participated in informatics Olympiads and various programming competitions.
- Sought to understand computers and paradigms, grasping about memory management and diving into fundamentals of CS, English, discrete mathematics, and programming.
By connecting these dots and revisiting C, the scattered puzzle pieces finally fell into place.
True understanding. He realized that by directly working with concepts and building things himself, he could gain insights and integrate background knowledge more effectively.
He began to enjoy developing high-quality software more than just high-performance games.
Through numerous collaborations and freelance work, delivering quality softwares to clients became a source of joy, extending beyond just his own games and projects.
While my main domain remains game development, my approach has evolved. I still want to create great game software. Often, this involves using existing game engines, which led me to build my own.
Understanding the "black box" of game engines is, I believe, The path to creating great software.