Welcome, fellow adventurer, to the magical realm of game development! ๐งโโ๏ธ This repository chronicles my thrilling quest to create a game engine from scratch, wielding the mighty powers of C++, mathematics, and physics. Together, we'll explore vast lands of knowledge, uncover hidden secrets, and conquer challenging obstacles on our journey to master the arcane arts of game programming. ๐
In this enchanted repository, you'll find ancient scrolls ๐(resources) and mystical artifacts ๐ฎ (projects) that will guide you through the treacherous landscape of game development. So, strap on your boots, grab your spellbook, and join me on this epic adventure to bring the fascinating worlds of physics, mathematics, and computer science to life through the spellbinding art of game creation! ๐ฎ
Are you ready to embark on this awe-inspiring journey? Let the adventure begin! ๐
-
The goal is to explore the engaging aspects of physics and mathematics by applying them to game development and real-life simulations. I hope this repository can serve as a guide and inspiration for others who are interested in game development. Alternatively, unveil to students how math and physics become more enjoyable when applied to practical scenarios.
-
To create a habit of continuous learning and improvement, I commit to making at least one meaningful contribution to the project every single day. This daily commitment will help me stay on track and maintain momentum throughout my game development journey.
-
Demonstrate mastery and practical application of each subject by completing at least one project that covers a good portion of the concepts in that subject. This ensures a deeper understanding and hands-on experience with the topics, while also providing tangible results for my learning progress.
- C++ Fundamentals
- Syntax and data types
- Control structures
- Functions and recursion
- Object-oriented programming
- Memory management
- Standard Template Library (STL)
- Data Structures and Algorithms
- Basic data structures (arrays, linked lists, stacks, queues)
- Trees and graphs
- Hash tables and dictionaries
- Sorting algorithms (quicksort, merge sort, heap sort)
- Searching algorithms (binary search, depth-first search, breadth-first search)
- Dynamic programming and greedy algorithms
- Graph algorithms (Dijkstra's, Kruskal's, Prim's)
- Advanced C++ Concepts
- Templates and metaprogramming
- Exception handling
- Lambda functions
- Multithreading and concurrency
- Modern C++ features
- Mathematics
- Linear algebra
- Geometry
- Trigonometry
- Calculus
- Numerical methods
- Probability and statistics
- Physics
- Classical mechanics
- Kinematics
- Rigid body dynamics
- Collisions and contact
- Particle systems
- Fluid dynamics
- Game Programming Concepts
- Game loops
- Event handling and input processing
- 2D and 3D rendering
- Physics and collision detection
- Audio programming
- AI and pathfinding
- Networking and multiplayer
- Game Engines and Libraries
- Unreal Engine
- Unity (for architectural understanding)
- SDL
- SFML
- Boost C++ Libraries
- Building Your Game Engine
- Engine architecture and core components
- Game loop and event handling system
- Rendering and resource management systems
- Physics, AI, and audio systems
- Optimization for performance and memory usage
- Tools for asset management, scripting, and level design
- C++ Primer by Stanley B. Lippman, Josรฉe Lajoie, and Barbara E. Moo
- cppreference.com
- Effective Modern C++ by Scott Meyers
- C++ Concurrency in Action by Anthony Williams
Here is a list of projects that I've completed during my learning journey. Each project folder contains a README with a brief description, goals, and technologies used.
- C++ Fundamentals
This folder contains utility scripts to help the journey.
This script simplifies the process of compiling and running C++ code. With just one command, it compiles your source code using the g++ compiler and then executes the compiled binary.
- Make sure you have the g++ compiler installed on your system. You can check if it's installed by running
g++ --version
in your terminal. - Ensure that the
gpprun.sh
script has execute permissions. You can set the execute permission usingchmod +x gpprun.sh
.
- Open a terminal and navigate to the directory containing the
gpprun.sh
script. - Run the script with the following command:
./gpprun.sh /path/to/your/source/file.cpp
Replace /path/to/your/source/file.cpp
with the path of C++ source file.
- The script will compile your code and, if successful, run the compiled binary.
That's it! Now you can easily compile and run your C++ code with a single command.