Skip to content

Welcome to my journey as I dive deep into C++ game and engine development. This repository serves as a roadmap and progress tracker for the books, courses, and projects I follow as I enhance my skills and knowledge in game development.

License

Notifications You must be signed in to change notification settings

erkamuzuncayir/the-journey-to-become-cpp-game-engine-developer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 

Repository files navigation

The Journey to Become a C/C++ Game/Engine Developer

Welcome to my journey in C/C++ game and engine development. This repository serves as a personal log of my progress, learning resources, and projects.


👤 About Me

Hi, I'm Erkam, an aspiring game developer with a passion for C/C++ and game and engine development. I enjoy learning new technologies and sharing my progress with the community.


🎯 Objective

To document my journey in mastering C/C++ for game and engine development by building hands-on projects, exploring foundational concepts, and honing my skills in both high and low-level game development. This repository aims to serve as a transparent record of my learning process, inspire others who are on similar paths, and encourage feedback and collaboration within the developer community.


Logs

2025-02-13

  1. While studying The C Programming Language by Kernighan and Ritchie, I realized that the book is more of a documentation of C itself rather than a teaching guide for beginners. Although I learned some valuable things, I didn’t feel like my overall familiarity with C improved significantly. Additionally, I found the exercises quite challenging, especially in the last three chapters. Therefore, I’ve decided not to continue with the remaining chapters and instead start C Programming: A Modern Approach by K. N. King, as I’ve heard it's better suited for learning C in a more comprehensive and beginner-friendly manner. My goal is to complete this book to solidify my understanding of C before moving on to more advanced topics.

2025-01-24

  1. I decided to read Computer Systems: A Programmer's Perspective after reading and finishing The C Programming Language, because I thought I would need a relatively good knowledge of C programming to do the exercises in it, and the authors of Computer Systems: A Programmer's Perspective also recommends The C Programming Language for learning C programming.
  2. Also, while I am currently working on a project called Hex Survivor, I wanted to take the time to learn only one subject in depth. The subject I decided to learn in depth for now is computer systems and low level programming. So I decided to stop reading the 3D Math Primer for Graphics and Game Development for now and continue reading it after I finished reading Computer Systems: A Programmer's Perspective.

🔜 TODO

đź“ť Projects

  • Simple 2D C/C++ OpenGL Game

đź“š Learning Resources


đź”› In Progress

đź“ť Projects

Hex Survivor

Technologies Used: Unity, C#
Status: Ongoing
This project is a turn-based 2D game developed in Unity using C#. It aims to create a maintainable, extensible, and clean codebase while learning low-level game development using C/C++ and OpenGL. Additionally, it provides an opportunity to showcase my skills in C# and Unity, as well as to gain experience by publishing a game and observing the post-launch process.

đź“š Learning Resources

Start Date: 2025-02-13
Status: Ongoing
Repo: My Solutions to the C Programming: A Modern Approach

Chapters
  • 1. Introducing C
  • 2. C Fundamentals
  • 3. Formatted Input/Output
  • 4. Expressions
  • 5. Selection Statements
  • 6. Loops
  • 7. Basic Types
  • 8. Arrays
  • 9. Functions
  • 10. Program Organization
  • 11. Pointers
  • 12. Pointers and Arrays
  • 13. Strings
  • 14. The Preprocessor
  • 15. Writing Large Programs
  • 16. Structures, Unions, and Enumerations
  • 17. Advanced Uses of Pointers
  • 18. Declarations
  • 19. Program Design
  • 20. Low-Level Programming
  • 21. The Standard Library
  • 22. Input/Output
  • 23. Library Support for Numbers and Character Data
  • 24. Error Handling
  • 25. International Features
  • 26. Miscellaneous Library Functions
  • 27. Additional C99 Support for Mathematics

✔️ Done

đź“š Learning Resources

Start Date: 2024-10-12
End Date: 2025-01-24
Completion Time: ~150 Hours
Status: Done
Repo: My Solutions of Introduction to Computing Systems

My Takeaways from Introduction to Computing Systems: From Bits & Gates to C/C++ & Beyond
1. Understanding the Big Picture

This book excels in showing the connection between the lowest-level hardware components and high-level programming languages, bridging the gap in a way that's both engaging and thorough. However, it’s important to note that the C and C++ lessons provided in the book are not sufficient to master these languages on their own. They serve more as a foundation for understanding how these languages operate closer to the hardware.

2. Assembly Language and Low-Level Programming

Writing assembly was genuinely challenging, yet immensely rewarding. It provided a unique opportunity to see how things work at the most fundamental level, giving me a deeper understanding of how code gets executed by the CPU. Tasks such as managing memory manually, handling registers, and writing loops or conditionals in assembly helped me truly grasp concepts like bitwise operations, recursion, and iteration, and how these abstractions actually function under the hood. Seeing the advantages and disadvantages of these concepts from a low-level perspective was invaluable.

3. Memory Systems and Emergence of Complexity

The book effectively demonstrates how simple and small components, like logic gates, come together to form complex systems—this concept, often referred to as emergence, was incredibly eye-opening. It’s fascinating to see how individual bits and operations combine to create something as versatile as a programming language or even a full-fledged operating system. It reminded me of how non-living atoms form living organisms.

4. Problem-Solving and Practical Learning

The book does an excellent job of teaching fundamental programming concepts, such as recursion, iteration, and data manipulation, while also showing how and why these concepts work. By requiring readers to write them at the assembly level, it provides an appreciation for their elegance and power. Additionally, the step-by-step progression from simple circuits to complete systems effectively illustrates the incremental problem-solving approach required for tackling complex challenges.

5. Programming Perspectives

What I particularly liked is how the book reframes the way you think about programming:

  • It’s no longer just about "writing code," but understanding why certain design choices are made and how they impact the underlying hardware.
  • Although the book isn’t intended for this purpose, it made me wish it included more real-world examples of programming design trade-offs and how these decisions manifest in low-level advantages or disadvantages. Such an addition would have tied its low-level explanations more explicitly to everyday programming challenges.
6. Challenges and Growth

The steep learning curve—especially while writing in assembly—was both frustrating and rewarding. The challenge paid off by giving me a clearer understanding of the low-level operations and their connections to higher-level abstractions. Even though assembly was tough, the experience was invaluable and felt like a rite of passage for anyone interested in understanding computers at their core.

7. Future Applications

This book has laid a strong foundation for my journey in game and engine development with C/C++. Many of the concepts I learned, such as memory management and low-level programming, are directly applicable to building efficient and performant systems. Understanding how abstractions are built on top of hardware processes will help me make more informed decisions when working with tools like OpenGL or Vulkan.

In conclusion, Introduction to Computing Systems is an excellent resource for anyone who wants to dive deep into computer systems and see how they function from the ground up. While the C and C++ lessons are not enough to fully learn the languages, the perspective this book provides will forever change how you approach programming and problem-solving. I highly recommend it, especially if you’re passionate about understanding the inner workings of computers and want to become a more deliberate programmer.


🛑 Hold / Cancel

đź“š Learning Resources

The C Programming Language by Brian W. Kernighan and Dennis M. Ritchie

Start Date: 2025-01-24
Hold Date: 2025-02-13
Status: Hold
Progression: 65%
Study Time: ~50 Hours
Repo: My Solutions of The C Programming Language

Why hold?

While studying The C Programming Language by Kernighan and Ritchie, I realized that the book is more of a documentation of C itself rather than a teaching guide for beginners. Although I learned some valuable things, I didn’t feel like my overall familiarity with C improved significantly. Additionally, I found the exercises quite challenging, especially in the last three chapters.

Therefore, I’ve decided not to continue with the remaining chapters and instead start C Programming: A Modern Approach by K. N. King, as I’ve heard it's better suited for learning C in a more comprehensive and beginner-friendly manner. My goal is to complete this book to solidify my understanding of C before moving on to more advanced topics.


🤝 Contributions & Feedback

I welcome suggestions for resources, projects, or improvements to this repository. If you find any mistakes, have ideas, or want to contribute, feel free to reach out, open an issue, or submit a pull request!


đź“« Contact

You can reach me via e-mail or connect with me on LinkedIn.

About

Welcome to my journey as I dive deep into C++ game and engine development. This repository serves as a roadmap and progress tracker for the books, courses, and projects I follow as I enhance my skills and knowledge in game development.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published