diff --git a/src/data/roadmaps/game-developer/content/2d@Wq8siopWTD7sylNi0575X.md b/src/data/roadmaps/game-developer/content/2d@Wq8siopWTD7sylNi0575X.md index e69de29bb..024f8d26b 100644 --- a/src/data/roadmaps/game-developer/content/2d@Wq8siopWTD7sylNi0575X.md +++ b/src/data/roadmaps/game-developer/content/2d@Wq8siopWTD7sylNi0575X.md @@ -0,0 +1,8 @@ +# 2D + +2D Game Development involves creating games in a two-dimensional plane, utilizing flat graphics and typically making use of x and y coordinates. From classic arcade games of the ’80s and ’90s to the rich array of indie games today, 2D game development is a vibrant and diverse sector of the gaming industry. Not only are 2D games visually appealing and nostalgic, but they’re also often more accessible for developers to create due to the simpler mechanics compared to 3D game development. + +Visit the following resources to learn more: + +- [@article@2D and 3D Game Development](https://hireindiandevelopers.medium.com/2d-and-3d-game-development-a-comprehensive-guide-7d22c4fdd706) +- [@article@How to Make a 2D Game](https://gamemaker.io/en/blog/how-to-make-a-2d-game) diff --git a/src/data/roadmaps/game-developer/content/aabb@aTeYGd4JlPr5txNPyBezn.md b/src/data/roadmaps/game-developer/content/aabb@aTeYGd4JlPr5txNPyBezn.md index e947eec6d..3def2f71d 100644 --- a/src/data/roadmaps/game-developer/content/aabb@aTeYGd4JlPr5txNPyBezn.md +++ b/src/data/roadmaps/game-developer/content/aabb@aTeYGd4JlPr5txNPyBezn.md @@ -1,3 +1,7 @@ # AABB -`AABB`, short for Axis-Aligned Bounding Box, is a commonly used form of bounding volume in game development. It is a box that directly aligns with the axes of the coordinate system and encapsulates a game object. The sides of an AABB are aligned with the axes, which is helpful when carrying out certain calculations, as non-axis-aligned boxes would require more complex math. AABBs are primarily used for broad-phase collision detection, which means checking whether two objects might be in the process of colliding. Although AABBs are relatively conservative and can have more bounding volume than oriented bounding boxes (OBBs), they are simpler and faster to use in collision detection. \ No newline at end of file +`AABB`, short for Axis-Aligned Bounding Box, is a commonly used form of bounding volume in game development. It is a box that directly aligns with the axes of the coordinate system and encapsulates a game object. The sides of an AABB are aligned with the axes, which is helpful when carrying out certain calculations, as non-axis-aligned boxes would require more complex math. AABBs are primarily used for broad-phase collision detection, which means checking whether two objects might be in the process of colliding. Although AABBs are relatively conservative and can have more bounding volume than oriented bounding boxes (OBBs), they are simpler and faster to use in collision detection. + +Visit the following resources to learn more: + +- [@article@Axis-Aligned Bounding Box](https://gdbooks.gitbooks.io/3dcollisions/content/Chapter1/aabb.html) diff --git a/src/data/roadmaps/game-developer/content/ab-pruning@KYCi4d475zZfNwlj6HZVD.md b/src/data/roadmaps/game-developer/content/ab-pruning@KYCi4d475zZfNwlj6HZVD.md index 8a4daa01f..7d1c5f1de 100644 --- a/src/data/roadmaps/game-developer/content/ab-pruning@KYCi4d475zZfNwlj6HZVD.md +++ b/src/data/roadmaps/game-developer/content/ab-pruning@KYCi4d475zZfNwlj6HZVD.md @@ -1,3 +1,8 @@ # AB Pruning -`Alpha-Beta pruning` is an optimization technique for the minimax algorithm used in artificial intelligence (AI) programming, such as game development. It cuts off branches in the game tree that don't need to be searched because there's already a better move available. It uses two parameters, alpha and beta, which represent the minimum score that the maximizing player is assured of and the maximum score that the minimizing player is assured of, respectively. During the traversal of the game tree, branches of the tree that cannot possibly influence the final decision are not explored. This process 'prunes' the minimax tree, saving computational time and resources. \ No newline at end of file +`Alpha-Beta pruning` is an optimization technique for the minimax algorithm used in artificial intelligence (AI) programming, such as game development. It cuts off branches in the game tree that don't need to be searched because there's already a better move available. It uses two parameters, alpha and beta, which represent the minimum score that the maximizing player is assured of and the maximum score that the minimizing player is assured of, respectively. During the traversal of the game tree, branches of the tree that cannot possibly influence the final decision are not explored. This process 'prunes' the minimax tree, saving computational time and resources. + +Visit the following resources to learn more: + +- [@article@AB Pruning](https://en.wikipedia.org/wiki/Alpha-beta_pruning) +- [@article@Alpha-Beta Pruning: A Deep Dive into its History](https://dev.to/vedantasati03/alpha-beta-pruning-a-deep-dive-into-its-history-implementation-and-functionality-4ojf) diff --git a/src/data/roadmaps/game-developer/content/acceleration@ejZMnxZ0QrN-jBqo9Vrj8.md b/src/data/roadmaps/game-developer/content/acceleration@ejZMnxZ0QrN-jBqo9Vrj8.md index 5c96eea42..ebc1caaad 100644 --- a/src/data/roadmaps/game-developer/content/acceleration@ejZMnxZ0QrN-jBqo9Vrj8.md +++ b/src/data/roadmaps/game-developer/content/acceleration@ejZMnxZ0QrN-jBqo9Vrj8.md @@ -1,3 +1,7 @@ # Acceleration -**Acceleration** refers to the rate of change in velocity per unit time. This physical concept is translated into game dynamics where it impacts the movement and speed of game characters or objects. For example, when a character starts moving, there is usually a slight delay before they reach their top speed, which then continues as long as the move button is held down. This is caused by acceleration. Conversely, when the button is released, the character doesn't stop instantly but slows down gradually - this is due to deceleration, which is negative acceleration. By mastering acceleration and deceleration, game developers can create more realistic and interesting movements for their characters. \ No newline at end of file +**Acceleration** refers to the rate of change in velocity per unit time. This physical concept is translated into game dynamics where it impacts the movement and speed of game characters or objects. For example, when a character starts moving, there is usually a slight delay before they reach their top speed, which then continues as long as the move button is held down. This is caused by acceleration. Conversely, when the button is released, the character doesn't stop instantly but slows down gradually - this is due to deceleration, which is negative acceleration. By mastering acceleration and deceleration, game developers can create more realistic and interesting movements for their characters. + +Visit the following resources to learn more: + +- [@article@Simple Acceleration in Games](http://earok.net/sections/articles/game-dev/theory/simplified-acceleration-games) diff --git a/src/data/roadmaps/game-developer/content/advanced-rendering@CDYszS1U4v95GozB_drbt.md b/src/data/roadmaps/game-developer/content/advanced-rendering@CDYszS1U4v95GozB_drbt.md index e7050a942..e42cfaf34 100644 --- a/src/data/roadmaps/game-developer/content/advanced-rendering@CDYszS1U4v95GozB_drbt.md +++ b/src/data/roadmaps/game-developer/content/advanced-rendering@CDYszS1U4v95GozB_drbt.md @@ -1,3 +1,8 @@ # Advanced Rendering -**Advanced rendering** is a sophisticated technique used in game development that involves translating a 3D model or scene into a 2D image or animation. Advanced rendering techniques can involve various complex methods such as physically-based rendering, ray tracing, global illumination, subsurface scattering, caustics, and volumetric rendering. The use of advanced rendering can result in highly realistic graphics, as it uses complex calculations to depict how light behaves in the real world. Advanced rendering often requires powerful hardware resources and specialized software tools in order to achieve the desired images and animations. \ No newline at end of file +**Advanced rendering** is a sophisticated technique used in game development that involves translating a 3D model or scene into a 2D image or animation. Advanced rendering techniques can involve various complex methods such as physically-based rendering, ray tracing, global illumination, subsurface scattering, caustics, and volumetric rendering. The use of advanced rendering can result in highly realistic graphics, as it uses complex calculations to depict how light behaves in the real world. Advanced rendering often requires powerful hardware resources and specialized software tools in order to achieve the desired images and animations. + +Visit the following resources to learn more: + +- [@article@Advanced Rendering](https://www.advances.realtimerendering.com/) +- [@article@Advances in Real Time Rendering](https://www.advances.realtimerendering.com/s2024/index.html) diff --git a/src/data/roadmaps/game-developer/content/affine-space@r5TcXQsU9s4NlAQIPvZ3U.md b/src/data/roadmaps/game-developer/content/affine-space@r5TcXQsU9s4NlAQIPvZ3U.md index 70bb62910..d6d8e8429 100644 --- a/src/data/roadmaps/game-developer/content/affine-space@r5TcXQsU9s4NlAQIPvZ3U.md +++ b/src/data/roadmaps/game-developer/content/affine-space@r5TcXQsU9s4NlAQIPvZ3U.md @@ -1,3 +1,8 @@ # Affine Space -In the context of game mathematics, an **Affine Space** is a fundamental concept you should understand. It is a geometric structure with properties related to both geometry and algebra. The significant aspect of an affine space is that it allows you to work more comfortably with points and vectors. While a vector space on its own focuses on vectors which have both magnitude and direction, it does not involve points. An affine space makes it easy to add vectors to points or subtract points from each other to get vectors. This concept proves extremely useful in the field of game development, particularly when dealing with graphical models, animations, and motion control. \ No newline at end of file +In the context of game mathematics, an **Affine Space** is a fundamental concept you should understand. It is a geometric structure with properties related to both geometry and algebra. The significant aspect of an affine space is that it allows you to work more comfortably with points and vectors. While a vector space on its own focuses on vectors which have both magnitude and direction, it does not involve points. An affine space makes it easy to add vectors to points or subtract points from each other to get vectors. This concept proves extremely useful in the field of game development, particularly when dealing with graphical models, animations, and motion control. + +Visit the following resources to learn more: + +- [@article@Affine Space](https://en.wikipedia.org/wiki/Affine_space) +- [@article@Understanding Affine Space](https://brilliant.org/wiki/affine-spaces/) diff --git a/src/data/roadmaps/game-developer/content/affine-transformation@SkCreb6g4i-OFtJWhRYqO.md b/src/data/roadmaps/game-developer/content/affine-transformation@SkCreb6g4i-OFtJWhRYqO.md index ff4a278fb..2d542f701 100644 --- a/src/data/roadmaps/game-developer/content/affine-transformation@SkCreb6g4i-OFtJWhRYqO.md +++ b/src/data/roadmaps/game-developer/content/affine-transformation@SkCreb6g4i-OFtJWhRYqO.md @@ -1,3 +1,8 @@ # Affine Transformation -An **affine transformation**, in the context of game mathematics, is a function between affine spaces which preserves points, straight lines and planes. Also, sets of parallel lines remain parallel after an affine transformation. In video games, it's typically used for manipulating an object's position in 3D space. This operation allows game developers to perform multiple transformations such as translation (moving an object from one place to another), scaling (changing the size of an object), and rotation (spinning the object around a point). An important feature of affine transformation is that it preserves points uniqueness; if two points are distinct to start with, they remain distinct after transformation. It's important to note that these transformations are applied relative to an object's own coordinate system, not the world coordinate system. \ No newline at end of file +An **affine transformation**, in the context of game mathematics, is a function between affine spaces which preserves points, straight lines and planes. Also, sets of parallel lines remain parallel after an affine transformation. In video games, it's typically used for manipulating an object's position in 3D space. This operation allows game developers to perform multiple transformations such as translation (moving an object from one place to another), scaling (changing the size of an object), and rotation (spinning the object around a point). An important feature of affine transformation is that it preserves points uniqueness; if two points are distinct to start with, they remain distinct after transformation. It's important to note that these transformations are applied relative to an object's own coordinate system, not the world coordinate system. + +Visit the following resources to learn more: + +- [@article@Affine Transformation](https://www.gamedevs.org/uploads/affine-transformations.pdf) +- [@article@Understanding Affine Transformations](https://code.tutsplus.com/understanding-affine-transformations-with-matrix-mathematics--active-10884t) diff --git a/src/data/roadmaps/game-developer/content/angular-velocity@Y7HYY5eq7OG42V9yQz0Q1.md b/src/data/roadmaps/game-developer/content/angular-velocity@Y7HYY5eq7OG42V9yQz0Q1.md index de2e2008e..12a2d1d05 100644 --- a/src/data/roadmaps/game-developer/content/angular-velocity@Y7HYY5eq7OG42V9yQz0Q1.md +++ b/src/data/roadmaps/game-developer/content/angular-velocity@Y7HYY5eq7OG42V9yQz0Q1.md @@ -1,3 +1,8 @@ # Angular Velocity -Angular velocity, denoted by the symbol 'ω', is a measure of the rate of change of an angle per unit of time. In simpler terms, it corresponds to how quickly an object moves around a circle or rotates around a central point. Angular velocity is typically measured in radians per second (rad/s). If you think of an object moving in a circular path, the angular velocity would be the speed at which the angle changes as the object travels along the circumference of the object. Angular velocity is a vector quantity, implying it has both magnitude and direction. The direction of the angular velocity vector is perpendicular to the plane of rotation, following the right-hand rule. It plays a crucial role in game development, especially in physics simulation and character control. \ No newline at end of file +Angular velocity, denoted by the symbol 'ω', is a measure of the rate of change of an angle per unit of time. In simpler terms, it corresponds to how quickly an object moves around a circle or rotates around a central point. Angular velocity is typically measured in radians per second (rad/s). If you think of an object moving in a circular path, the angular velocity would be the speed at which the angle changes as the object travels along the circumference of the object. Angular velocity is a vector quantity, implying it has both magnitude and direction. The direction of the angular velocity vector is perpendicular to the plane of rotation, following the right-hand rule. It plays a crucial role in game development, especially in physics simulation and character control. + +Visit the following resources to learn more: + +- [@article@Angular Velocity](https://allenchou.net/2013/12/game-physics-motion-dynamics-fundamentals/) +- [@article@Understanding Angular Velocity](https://math.libretexts.org/Bookshelves/Precalculus/Book%3A_Trigonometry_(Sundstrom_and_Schlicker)/01%3A_The_Trigonometric_Functions/1.04%3A_Velocity_and_Angular_Velocity) diff --git a/src/data/roadmaps/game-developer/content/artificial-neural-network@AoH2r4EOHyZd8YaV24rBk.md b/src/data/roadmaps/game-developer/content/artificial-neural-network@AoH2r4EOHyZd8YaV24rBk.md index 302814afd..2ad2ec3c0 100644 --- a/src/data/roadmaps/game-developer/content/artificial-neural-network@AoH2r4EOHyZd8YaV24rBk.md +++ b/src/data/roadmaps/game-developer/content/artificial-neural-network@AoH2r4EOHyZd8YaV24rBk.md @@ -1,3 +1,9 @@ # Artificial Neutral Network -Artificial Neural Networks (ANN) are a branch of machine learning that draw inspiration from biological neural networks. ANNs are capable of 'learning' from observational data, thereby enhancing game development in numerous ways. They consist of interconnected layers of nodes, or artificial neurons, that process information through their interconnected network. Each node's connection has numerical weight that gets adjusted during learning, which helps in optimizing problem solving. ANNs are utilized in various aspects of game development, such as improving AI behavior, procedural content generation, and game testing. They can also be used for image recognition tasks, such as identifying objects or actions in a game environment. \ No newline at end of file +Artificial Neural Networks (ANN) are a branch of machine learning that draw inspiration from biological neural networks. ANNs are capable of 'learning' from observational data, thereby enhancing game development in numerous ways. They consist of interconnected layers of nodes, or artificial neurons, that process information through their interconnected network. Each node's connection has numerical weight that gets adjusted during learning, which helps in optimizing problem solving. ANNs are utilized in various aspects of game development, such as improving AI behavior, procedural content generation, and game testing. They can also be used for image recognition tasks, such as identifying objects or actions in a game environment. + +Visit the following resources to learn more: + +- [@article@Artificial Neural Networks (ANN)](https://www.geeksforgeeks.org/artificial-neural-networks-and-its-applications/) +- [@article@What is ANN?](https://www.coursera.org/articles/artificial-neural-network) +- [@article@What is Neural Network?](https://www.ibm.com/topics/neural-networks) diff --git a/src/data/roadmaps/game-developer/content/behavior-tree@ztoW8fBY73Es624A_tjd7.md b/src/data/roadmaps/game-developer/content/behavior-tree@ztoW8fBY73Es624A_tjd7.md index 856e11032..ee0988d9f 100644 --- a/src/data/roadmaps/game-developer/content/behavior-tree@ztoW8fBY73Es624A_tjd7.md +++ b/src/data/roadmaps/game-developer/content/behavior-tree@ztoW8fBY73Es624A_tjd7.md @@ -4,4 +4,5 @@ The **Behavior Tree** is a decision-making system used in game development, prim Visit the following resources to learn more: -- [@video@Unreal Engine 5 Tutorial - AI Part 2: Behavior Tree](https://www.youtube.com/watch?v=hbHqv9ov8IM&list=PL4G2bSPE_8uklDwraUCMKHRk2ZiW29R6e&index=3&t=16s) \ No newline at end of file +- [@video@Unreal Engine 5 Tutorial - AI Part 2: Behavior Tree](https://www.youtube.com/watch?v=hbHqv9ov8IM&list=PL4G2bSPE_8uklDwraUCMKHRk2ZiW29R6e&index=3&t=16s) +- [@article@Open Behavior Tree](https://sterberino.github.io/open-behavior-trees-documentation/index.html) diff --git a/src/data/roadmaps/game-developer/content/bezier@DUEEm9sAaZqSI-W-PFZ8f.md b/src/data/roadmaps/game-developer/content/bezier@DUEEm9sAaZqSI-W-PFZ8f.md index 6dd255c13..3220cd01b 100644 --- a/src/data/roadmaps/game-developer/content/bezier@DUEEm9sAaZqSI-W-PFZ8f.md +++ b/src/data/roadmaps/game-developer/content/bezier@DUEEm9sAaZqSI-W-PFZ8f.md @@ -4,4 +4,5 @@ Learn more from the following resources: +- [@article@Bezier Curves for Your Games](http://devmag.org.za/2011/04/05/bzier-curves-a-tutorial/) - [@video@Bezier Curves Explained](https://www.youtube.com/watch?v=pnYccz1Ha34) diff --git a/src/data/roadmaps/game-developer/content/board-game@eoK70YRCz73GmzbNhh5kg.md b/src/data/roadmaps/game-developer/content/board-game@eoK70YRCz73GmzbNhh5kg.md index e86eb0fd7..f340e1896 100644 --- a/src/data/roadmaps/game-developer/content/board-game@eoK70YRCz73GmzbNhh5kg.md +++ b/src/data/roadmaps/game-developer/content/board-game@eoK70YRCz73GmzbNhh5kg.md @@ -1,3 +1,7 @@ # Board Game -**Board Games** represent a type of tabletop game that involves counters or pieces moved or placed on a pre-marked surface or "board", according to a set of rules. Some games are based on pure strategy, but many contain an element of chance, and others are purely chance, with no element of skill. Games usually have a goal that a player aims to achieve. Early board games represented a battle between two armies, and most modern board games are still based on defeating opponents in terms of counters, winning position, or accruement of points. With the digitalization of board games, developers use various **Game APIs** to create engaging and interactive board game experiences. An API defines a set of rules and protocols for building and interacting with different software applications. Game APIs allow developers to integrate with game-specific features like game mechanics, player statistics, achievements, and more. \ No newline at end of file +**Board Games** represent a type of tabletop game that involves counters or pieces moved or placed on a pre-marked surface or "board", according to a set of rules. Some games are based on pure strategy, but many contain an element of chance, and others are purely chance, with no element of skill. Games usually have a goal that a player aims to achieve. Early board games represented a battle between two armies, and most modern board games are still based on defeating opponents in terms of counters, winning position, or accruement of points. With the digitalization of board games, developers use various **Game APIs** to create engaging and interactive board game experiences. An API defines a set of rules and protocols for building and interacting with different software applications. Game APIs allow developers to integrate with game-specific features like game mechanics, player statistics, achievements, and more. + +Visit the following resources to learn more: + +- [@article@What is a Board Game?](https://code.tutsplus.com/how-to-learn-board-game-design-and-development--gamedev-11607a) diff --git a/src/data/roadmaps/game-developer/content/bounding-volume@PLR_4yoRifoTzkOR4c7ym.md b/src/data/roadmaps/game-developer/content/bounding-volume@PLR_4yoRifoTzkOR4c7ym.md index 626f6c567..7fa711722 100644 --- a/src/data/roadmaps/game-developer/content/bounding-volume@PLR_4yoRifoTzkOR4c7ym.md +++ b/src/data/roadmaps/game-developer/content/bounding-volume@PLR_4yoRifoTzkOR4c7ym.md @@ -1,3 +1,8 @@ # Bounding Volume -`Bounding Volume` is a simple shape that fully encompasses a more complex game model. It is less expensive to check for the intersection of bounding volumes when compared to checking for intersection of the actual models. Some commonly used types of bounding volume in game development include Axis-Aligned Bounding Boxes (AABBs), Bounding Spheres, and Oriented Bounding Boxes (OBBs). AABBs and Bounding Spheres are simple to implement and work well with static objects, while OBBs are slightly more complex and are often used with dynamic objects that need to rotate. \ No newline at end of file +`Bounding Volume` is a simple shape that fully encompasses a more complex game model. It is less expensive to check for the intersection of bounding volumes when compared to checking for intersection of the actual models. Some commonly used types of bounding volume in game development include Axis-Aligned Bounding Boxes (AABBs), Bounding Spheres, and Oriented Bounding Boxes (OBBs). AABBs and Bounding Spheres are simple to implement and work well with static objects, while OBBs are slightly more complex and are often used with dynamic objects that need to rotate. + +Visit the following resources to learn more: + +- [@article@Collision Detection in 3D Games](https://developer.mozilla.org/en-US/docs/Games/Techniques/3D_collision_detection) +- [@article@Visualizing Bounding Volume](https://www.haroldserrano.com/blog/visualizing-the-boundary-volume-hierarchy-collision-algorithm) diff --git a/src/data/roadmaps/game-developer/content/broad-phase@AKd2UpITqBZV7cZszSRps.md b/src/data/roadmaps/game-developer/content/broad-phase@AKd2UpITqBZV7cZszSRps.md index fed69797e..39afd78b6 100644 --- a/src/data/roadmaps/game-developer/content/broad-phase@AKd2UpITqBZV7cZszSRps.md +++ b/src/data/roadmaps/game-developer/content/broad-phase@AKd2UpITqBZV7cZszSRps.md @@ -1,3 +1,7 @@ # Broad Phase -**Broad Phase Collision Detection** is the first step in the collision detection process. Its primary function is to identify which pairs of objects might potentially collide. Rather than examining the entire body of every object for possible collision, it wraps up each one in a simpler shape like a bounding box or sphere, aiming to reduce the number of calculations. The output of this phase is a list of 'candidate pairs' which are passed onto the next phase, often referred to as the narrow phase, for in-depth overlap checks. \ No newline at end of file +**Broad Phase Collision Detection** is the first step in the collision detection process. Its primary function is to identify which pairs of objects might potentially collide. Rather than examining the entire body of every object for possible collision, it wraps up each one in a simpler shape like a bounding box or sphere, aiming to reduce the number of calculations. The output of this phase is a list of 'candidate pairs' which are passed onto the next phase, often referred to as the narrow phase, for in-depth overlap checks. + +Visit the following resources to learn more: + +- [@article@Broad Phase Collision Detection](http://buildnewgames.com/broad-phase-collision-detection/) diff --git a/src/data/roadmaps/game-developer/content/bump@r4UkMd5QURbvJ3Jlr_H9H.md b/src/data/roadmaps/game-developer/content/bump@r4UkMd5QURbvJ3Jlr_H9H.md index 9cc9ddefd..f95bb0ec8 100644 --- a/src/data/roadmaps/game-developer/content/bump@r4UkMd5QURbvJ3Jlr_H9H.md +++ b/src/data/roadmaps/game-developer/content/bump@r4UkMd5QURbvJ3Jlr_H9H.md @@ -1,10 +1,9 @@ # Bump -`Bump` is very similar to texture. It is, as a matter of fact, a type of texture itself. If you take the texture of a bricked wall, it will becoming increasingly obvious that the amount of detail present inside the wall, if geometrically processed would be incredibly demanding and wasteful. In order to combat this ineffeciency, the `bump` maps were created. Traditionally, a flat texture would just be an image of something called a `color map`, that is to say, where does each individual color of the pixel should be to represent a texture. When you take the picture of your floor, wall, or any object, that image in essence is the color map. The bump map is different as it informs the texture about it's `normal` values. So, if you take a flat 2D mesh and apply a bump map on it, it will render the same 2D mesh with all the normal values baked into the flat 2D mesh, creating a graphically effect mimicking 3-dimensionality. - -There is also something known as a normal map, and displacement maps. +`Bump` is very similar to texture. It is, as a matter of fact, a type of texture itself. If you take the texture of a bricked wall, it will becoming increasingly obvious that the amount of detail present inside the wall, if geometrically processed would be incredibly demanding and wasteful. In order to combat this ineffeciency, the `bump` maps were created. Traditionally, a flat texture would just be an image of something called a `color map`, that is to say, where does each individual color of the pixel should be to represent a texture. When you take the picture of your floor, wall, or any object, that image in essence is the color map. The bump map is different as it informs the texture about it's `normal` values. So, if you take a flat 2D mesh and apply a bump map on it, it will render the same 2D mesh with all the normal values baked into the flat 2D mesh, creating a graphically effect mimicking 3-dimensionality. Learn more from the following resources: +- [@article@Bump Maps](https://developer.valvesoftware.com/wiki/Bump_map) - [@video@Normals, Normal maps and Bump maps](https://www.youtube.com/watch?v=l5PYyzsZED8) - [@video@Bump, normal and displacement](https://www.youtube.com/watch?v=43Ilra6fNGc) diff --git a/src/data/roadmaps/game-developer/content/buoyancy@WzcmdW_fKHv3gwdBnvI0_.md b/src/data/roadmaps/game-developer/content/buoyancy@WzcmdW_fKHv3gwdBnvI0_.md index 1100a4a07..9debe6715 100644 --- a/src/data/roadmaps/game-developer/content/buoyancy@WzcmdW_fKHv3gwdBnvI0_.md +++ b/src/data/roadmaps/game-developer/content/buoyancy@WzcmdW_fKHv3gwdBnvI0_.md @@ -1,3 +1,7 @@ # Buoyancy -**Buoyancy** refers to a specific interaction in physics where an object submerged in fluid (such as a game character in water) experiences an upward force that counteracts the force of gravity. This makes the object either float or appear lighter. In game development, implementing buoyancy can enhance realism particularly in games that involve water-based activities or environments. Buoyancy can be manipulated through adjustments in density and volume to create various effects - from making heavy objects float to sinking light ones. Calculating it typically requires approximating the object to a sphere or another simple geometric shape, and using this in Archimedes' Principle. This principle states that buoyant force equals the weight of the fluid that the object displaces. In the realm of video games, programming buoyancy can involve complex physics equations and careful testing to achieve a balance between realism and playability. \ No newline at end of file +**Buoyancy** refers to a specific interaction in physics where an object submerged in fluid (such as a game character in water) experiences an upward force that counteracts the force of gravity. This makes the object either float or appear lighter. In game development, implementing buoyancy can enhance realism particularly in games that involve water-based activities or environments. Buoyancy can be manipulated through adjustments in density and volume to create various effects - from making heavy objects float to sinking light ones. Calculating it typically requires approximating the object to a sphere or another simple geometric shape, and using this in Archimedes' Principle. This principle states that buoyant force equals the weight of the fluid that the object displaces. In the realm of video games, programming buoyancy can involve complex physics equations and careful testing to achieve a balance between realism and playability. + +Learn more from the following resources: + +- [@article@Buoyancy in Game Development](https://www.gamedeveloper.com/programming/water-interaction-model-for-boats-in-video-games-part-2) diff --git a/src/data/roadmaps/game-developer/content/bvh@FCc5xwb_G3VsDRXOcg3hV.md b/src/data/roadmaps/game-developer/content/bvh@FCc5xwb_G3VsDRXOcg3hV.md index 99bc58941..575a0a229 100644 --- a/src/data/roadmaps/game-developer/content/bvh@FCc5xwb_G3VsDRXOcg3hV.md +++ b/src/data/roadmaps/game-developer/content/bvh@FCc5xwb_G3VsDRXOcg3hV.md @@ -1,3 +1,7 @@ # BVH -BVH, or Bounding Volume Hierarchy, is an algorithm used in 3D computer graphics to speed up the rendering process. It organizes the geometry in a hierarchical structure where each node in the tree represents a bounding volume (a volume enclosing or containing one or more geometric objects). The root node of the BVH contains all other nodes or geometric objects, its child nodes represent a partition of the space, and the leaf nodes are often individual geometric objects. The main objective of using BVH is to quickly exclude large portions of the scene from the rendering process, to reduce the computational load of evaluating every single object in the scene individually. \ No newline at end of file +BVH, or Bounding Volume Hierarchy, is an algorithm used in 3D computer graphics to speed up the rendering process. It organizes the geometry in a hierarchical structure where each node in the tree represents a bounding volume (a volume enclosing or containing one or more geometric objects). The root node of the BVH contains all other nodes or geometric objects, its child nodes represent a partition of the space, and the leaf nodes are often individual geometric objects. The main objective of using BVH is to quickly exclude large portions of the scene from the rendering process, to reduce the computational load of evaluating every single object in the scene individually. + +Visit the following resources to learn more: + +- [@opensource@UnityBoundingVolumeHeirachy](https://github.com/rossborchers/UnityBoundingVolumeHeirachy) diff --git a/src/data/roadmaps/game-developer/content/c@Ph3ZqmSnwwzUBUC-6dgf-.md b/src/data/roadmaps/game-developer/content/c@Ph3ZqmSnwwzUBUC-6dgf-.md index 08c14a3c4..08284243c 100644 --- a/src/data/roadmaps/game-developer/content/c@Ph3ZqmSnwwzUBUC-6dgf-.md +++ b/src/data/roadmaps/game-developer/content/c@Ph3ZqmSnwwzUBUC-6dgf-.md @@ -1,3 +1,8 @@ -# C# +# C Sharp -**CSharp (C#)** is a modern, object-oriented programming language developed and maintained by Microsoft. It's primarily used for developing desktop applications and, more prominently, for Windows applications within the Microsoft.Net framework. However, the language is versatile and has a wide range of uses in web services, websites, enterprise software, and even mobile app development. C# is known for its simplicity, type-safety, and support for component-oriented software development. It's also been adopted by Unity, a widely used game engine, thus making it one of the preferred languages for game development. \ No newline at end of file +**CSharp (C#)** is a modern, object-oriented programming language developed and maintained by Microsoft. It's primarily used for developing desktop applications and, more prominently, for Windows applications within the Microsoft.Net framework. However, the language is versatile and has a wide range of uses in web services, websites, enterprise software, and even mobile app development. C# is known for its simplicity, type-safety, and support for component-oriented software development. It's also been adopted by Unity, a widely used game engine, thus making it one of the preferred languages for game development. + +Visit the following resources to learn more: + +- [@official@Learn C#](https://learn.microsoft.com/en-us/dotnet/csharp/) +- [@article@C Sharp Programming Language](https://en.wikipedia.org/wiki/C_Sharp_(programming_language)) diff --git a/src/data/roadmaps/game-developer/content/cascaded@Lu38SfZ38y89BffLRMmGk.md b/src/data/roadmaps/game-developer/content/cascaded@Lu38SfZ38y89BffLRMmGk.md index e69de29bb..e44051476 100644 --- a/src/data/roadmaps/game-developer/content/cascaded@Lu38SfZ38y89BffLRMmGk.md +++ b/src/data/roadmaps/game-developer/content/cascaded@Lu38SfZ38y89BffLRMmGk.md @@ -0,0 +1,7 @@ +# Cascaded + +Cascaded usually refers to cascaded shadow maps, a technique for rendering realistic shadows over a large area. + +Visit the following resources to learn more: + +- [@article@Cascading Shadows](https://www.gamedev.net/forums/topic/632574-cascading-shadow-maps-best-approach-to-learn/4988720/) diff --git a/src/data/roadmaps/game-developer/content/catmull-rom@N9GoA3YvOaKwYjljj6NZv.md b/src/data/roadmaps/game-developer/content/catmull-rom@N9GoA3YvOaKwYjljj6NZv.md index e35ba43f8..a8275d237 100644 --- a/src/data/roadmaps/game-developer/content/catmull-rom@N9GoA3YvOaKwYjljj6NZv.md +++ b/src/data/roadmaps/game-developer/content/catmull-rom@N9GoA3YvOaKwYjljj6NZv.md @@ -1,3 +1,8 @@ # Catmull-Rom -The **Catmull-Rom** spline is a form of interpolation used in 2D and 3D graphics. Named after Edwin Catmull and Raphael Rom, it offers a simple way to smoothly move objects along a set of points or, in terms of graphics, to smoothly draw a curve connecting several points. It's a cubic interpolating spline, meaning it uses the cubic polynomial to compute coordinates. This makes Catmull-Rom ideal for creating smooth and natural curves in graphics and animation. It also has a feature called C1 continuity, ensuring the curve doesn't have any abrupt changes in direction. However, if not managed properly, it can create loops between points. \ No newline at end of file +The **Catmull-Rom** spline is a form of interpolation used in 2D and 3D graphics. Named after Edwin Catmull and Raphael Rom, it offers a simple way to smoothly move objects along a set of points or, in terms of graphics, to smoothly draw a curve connecting several points. It's a cubic interpolating spline, meaning it uses the cubic polynomial to compute coordinates. This makes Catmull-Rom ideal for creating smooth and natural curves in graphics and animation. It also has a feature called C1 continuity, ensuring the curve doesn't have any abrupt changes in direction. However, if not managed properly, it can create loops between points. + +Visit the following resources to learn more: + +- [@article@Catmull Rom](https://gamedev.net/forums/topic/535895-catmull-rom-in-shmups/) +- [@article@Catmull Rom Spline - Game Development](https://gamedev.stackexchange.com/questions/47354/catmull-rom-spline-constant-speed) diff --git a/src/data/roadmaps/game-developer/content/cc@jsq0UXnIIC0Z_nbK2w48f.md b/src/data/roadmaps/game-developer/content/cc@jsq0UXnIIC0Z_nbK2w48f.md index c6e597900..895b883e3 100644 --- a/src/data/roadmaps/game-developer/content/cc@jsq0UXnIIC0Z_nbK2w48f.md +++ b/src/data/roadmaps/game-developer/content/cc@jsq0UXnIIC0Z_nbK2w48f.md @@ -2,6 +2,9 @@ **C** and **C++ (commonly known as CPP)** are two of the most foundational high-level programming languages in computer science. **C** was developed in the 1970s and it is a procedural language, meaning it follows a step-by-step approach. Its fundamental principles include structured programming and lexical variable scope. -On the other hand, **C++** follows the paradigm of both procedural and object-oriented programming. It was developed as an extension to C to add the concept of "classes" - a core feature of object-oriented programming. C++ enhances C by introducing new features like function overloading, exception handling, and templates. +On the other hand, **C++** follows the paradigm of both procedural and object-oriented programming. It was developed as an extension to C to add the concept of "classes" - a core feature of object-oriented programming. C++ enhances C by introducing new features like function overloading, exception handling, and templates. -Both of these languages heavily influence modern game development, where they often serve as the backend for major game engines like Unreal. Game developers use these languages for tasks related to rendering graphics, compiling game logic, and optimizing performance. \ No newline at end of file +Visit the following resources to learn more: + +- [@article@The C Programming Language](https://www.iso.org/standard/74528.html) +- [@article@C++ Programming Language](https://en.wikipedia.org/wiki/C%2B%2B) diff --git a/src/data/roadmaps/game-developer/content/ccd@1yK8TH4Pn7Ag8VQoug54i.md b/src/data/roadmaps/game-developer/content/ccd@1yK8TH4Pn7Ag8VQoug54i.md index a88c39138..fdf0cf85d 100644 --- a/src/data/roadmaps/game-developer/content/ccd@1yK8TH4Pn7Ag8VQoug54i.md +++ b/src/data/roadmaps/game-developer/content/ccd@1yK8TH4Pn7Ag8VQoug54i.md @@ -1,3 +1,7 @@ # CCD -**CCD (Continuous Collision Detection)** is a sophisticated technique used in detecting collisions within games, more advanced than the traditional discrete collision. Rather than checking for collisions at designated time frames, CCD checks for any possible collisions that may happen during the entire time period or motion path of the moving object. This can prevent instances of "tunneling", where an object moves so fast that it passes through walls or obstacles undetected by discrete collision detection due to being at different points in one frame to another. Although more computationally heavy than discrete detection, CCD offers an increased accuracy in collision detection, making it vital in games where precise movements are needed. \ No newline at end of file +**CCD (Continuous Collision Detection)** is a sophisticated technique used in detecting collisions within games, more advanced than the traditional discrete collision. Rather than checking for collisions at designated time frames, CCD checks for any possible collisions that may happen during the entire time period or motion path of the moving object. This can prevent instances of "tunneling", where an object moves so fast that it passes through walls or obstacles undetected by discrete collision detection due to being at different points in one frame to another. Although more computationally heavy than discrete detection, CCD offers an increased accuracy in collision detection, making it vital in games where precise movements are needed. + +Visit the following resources to learn more: + +- [@article@Continuous Collision Detection](https://docs.unity3d.com/Manual/ContinuousCollisionDetection.html) diff --git a/src/data/roadmaps/game-developer/content/center-of-mass@HWtU4q-YPXxSi64t43VNF.md b/src/data/roadmaps/game-developer/content/center-of-mass@HWtU4q-YPXxSi64t43VNF.md index a451035cf..e3284fdb9 100644 --- a/src/data/roadmaps/game-developer/content/center-of-mass@HWtU4q-YPXxSi64t43VNF.md +++ b/src/data/roadmaps/game-developer/content/center-of-mass@HWtU4q-YPXxSi64t43VNF.md @@ -1,3 +1,7 @@ # Center of Mass -The **center of mass** is a position defined relative to an object or system of objects. Typically denoted by the symbol \(COM\), it refers to the average position of all the parts of the system, weighted according to their masses. For instance, if you have a uniformly dense object, the center of mass would be in the geometric center of that object. In gaming, the center of mass of an object can have a significant impact on how the object behaves when forces are applied to it. This includes how the object moves in response to these forces, and can affect the realism of the physics simulations in a game. \ No newline at end of file +The **center of mass** is a position defined relative to an object or system of objects. Typically denoted by the symbol \(COM\), it refers to the average position of all the parts of the system, weighted according to their masses. For instance, if you have a uniformly dense object, the center of mass would be in the geometric center of that object. In gaming, the center of mass of an object can have a significant impact on how the object behaves when forces are applied to it. This includes how the object moves in response to these forces, and can affect the realism of the physics simulations in a game. + +Visit the following resources to learn more: + +- [@article@Center of Mass](https://medium.com/@brazmogu/physics-for-game-dev-a-platformer-physics-cheatsheet-f34b09064558) diff --git a/src/data/roadmaps/game-developer/content/client-side-development@rQArtuVKGVgLn_fw9yO3b.md b/src/data/roadmaps/game-developer/content/client-side-development@rQArtuVKGVgLn_fw9yO3b.md index f37d92671..22e104536 100644 --- a/src/data/roadmaps/game-developer/content/client-side-development@rQArtuVKGVgLn_fw9yO3b.md +++ b/src/data/roadmaps/game-developer/content/client-side-development@rQArtuVKGVgLn_fw9yO3b.md @@ -1,3 +1,7 @@ # Client Side -In game development, the term "Client Side" refers to all the operations and activities that occur on the player's machine, which could be a console, computer, or even a phone. The client side is responsible for rendering graphics, handling input from the user and sometimes processing game logic. This is in contrast to the server-side operations, which involve handling multiplayer connections and synchronizing game states among multiple clients. On the client side, developers need to ensure performance optimization, smooth UI/UX, quick load times, and security to provide an engaging, lag-free gaming experience. Security is also crucial to prevent cheating in multiplayer games, which can be tackled through measures like Data obfuscation and encryption. \ No newline at end of file +In game development, the term "Client Side" refers to all the operations and activities that occur on the player's machine, which could be a console, computer, or even a phone. The client side is responsible for rendering graphics, handling input from the user and sometimes processing game logic. This is in contrast to the server-side operations, which involve handling multiplayer connections and synchronizing game states among multiple clients. On the client side, developers need to ensure performance optimization, smooth UI/UX, quick load times, and security to provide an engaging, lag-free gaming experience. Security is also crucial to prevent cheating in multiplayer games, which can be tackled through measures like Data obfuscation and encryption. + +Visit the following resources to learn more: + +- [@article@Client Side Architecture](https://gabrielgambetta.com/client-server-game-architecture.html) diff --git a/src/data/roadmaps/game-developer/content/clipping@xP_VDMu1z9jiVnZaBFKJQ.md b/src/data/roadmaps/game-developer/content/clipping@xP_VDMu1z9jiVnZaBFKJQ.md index 56c2f6536..53873919c 100644 --- a/src/data/roadmaps/game-developer/content/clipping@xP_VDMu1z9jiVnZaBFKJQ.md +++ b/src/data/roadmaps/game-developer/content/clipping@xP_VDMu1z9jiVnZaBFKJQ.md @@ -1,3 +1,7 @@ # Clipping -`Clipping` is a fundamental technique in computer graphics primarily used for efficiently rendering a three-dimensional scene. This process involves eliminating certain parts of objects in the scene that are out-of-view or obstructed by other objects. Clipping can occur in various ways, one of the most common methods being `View-frustum culling` where objects completely outside of the camera view are discarded. The aim of clipping is to optimize the graphic rendering pipeline by reducing the number of polygons that the graphic hardware needs to process. Consequently, this helps in improving the speed and overall performance of the rendering process. \ No newline at end of file +`Clipping` is a fundamental technique in computer graphics primarily used for efficiently rendering a three-dimensional scene. This process involves eliminating certain parts of objects in the scene that are out-of-view or obstructed by other objects. Clipping can occur in various ways, one of the most common methods being `View-frustum culling` where objects completely outside of the camera view are discarded. The aim of clipping is to optimize the graphic rendering pipeline by reducing the number of polygons that the graphic hardware needs to process. Consequently, this helps in improving the speed and overall performance of the rendering process. + +Visit the following resources to learn more: + +- [@article@Clipping in Games](https://www.haroldserrano.com/blog/what-is-clipping-in-opengl) diff --git a/src/data/roadmaps/game-developer/content/collision-detection@AdOfOJtLtNgDwuABb6orE.md b/src/data/roadmaps/game-developer/content/collision-detection@AdOfOJtLtNgDwuABb6orE.md index 8ae74b6e6..838522bb1 100644 --- a/src/data/roadmaps/game-developer/content/collision-detection@AdOfOJtLtNgDwuABb6orE.md +++ b/src/data/roadmaps/game-developer/content/collision-detection@AdOfOJtLtNgDwuABb6orE.md @@ -1,3 +1,7 @@ # Collision Detection -**Collision Detection** is a critical aspect in game physics that handles the computer’s ability to calculate and respond when two or more objects come into contact in a game environment. This is vital to ensure objects interact realistically, don't pass through each other, and impact the game world in intended ways. Techniques for collision detection can vary based on the complexity required by the game. Simple methods may involve bounding boxes or spheres that encapsulate objects. When these spheres or boxes overlap, a collision is assumed. More complex methods consider the object's shape and volume for precise detection. Several libraries and game engines offer built-in support for collision detection, making it easier for developers to implement in their games. \ No newline at end of file +**Collision Detection** is a critical aspect in game physics that handles the computer’s ability to calculate and respond when two or more objects come into contact in a game environment. This is vital to ensure objects interact realistically, don't pass through each other, and impact the game world in intended ways. Techniques for collision detection can vary based on the complexity required by the game. Simple methods may involve bounding boxes or spheres that encapsulate objects. When these spheres or boxes overlap, a collision is assumed. More complex methods consider the object's shape and volume for precise detection. Several libraries and game engines offer built-in support for collision detection, making it easier for developers to implement in their games. + +Visit the following resources to learn more: + +- [@article@Collision Detection in Games](https://developer.mozilla.org/en-US/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Collision_detection) diff --git a/src/data/roadmaps/game-developer/content/color@WK6fLWJq9Vh2ySVrSqd-U.md b/src/data/roadmaps/game-developer/content/color@WK6fLWJq9Vh2ySVrSqd-U.md index 330a8a390..c76183051 100644 --- a/src/data/roadmaps/game-developer/content/color@WK6fLWJq9Vh2ySVrSqd-U.md +++ b/src/data/roadmaps/game-developer/content/color@WK6fLWJq9Vh2ySVrSqd-U.md @@ -4,4 +4,4 @@ In the realm of computer graphics, color plays an integral role. It can be defin Learn more from the following resources: -- [@video@Pixar in a Box - Color](https://www.khanacademy.org/computing/pixar/animate/ball/v/intro-animation) \ No newline at end of file +- [@video@Pixar in a Box - Color](https://www.khanacademy.org/computing/pixar/animate/ball/v/intro-animation) diff --git a/src/data/roadmaps/game-developer/content/computer-animation@1RdyzTI_TXqmct2bIbNh9.md b/src/data/roadmaps/game-developer/content/computer-animation@1RdyzTI_TXqmct2bIbNh9.md index af79a6424..70c2ae3bb 100644 --- a/src/data/roadmaps/game-developer/content/computer-animation@1RdyzTI_TXqmct2bIbNh9.md +++ b/src/data/roadmaps/game-developer/content/computer-animation@1RdyzTI_TXqmct2bIbNh9.md @@ -1,5 +1,8 @@ # Computer Animation -## Computer Animation +Computer animation refers to the art of creating moving images via the use of computers. Increasingly, it's becoming a critical component in the game development industry. Essentially, it's divided into two categories, 2D animation and 3D animation. 2D animation, also referred to as vector animation, involves creation of images in a two-dimensional environment, including morphing, twining, and onion skinning. On the other hand, 3D animation, also known as CGI, involves moving objects and characters in a three-dimensional space. The animation process typically involves the creation of a mathematical representation of a three-dimensional object. This object is then manipulated within a virtual space by an animator to create the final animation. Software like Unity, Maya, and Blender are commonly used for computer animation in game development. -Computer animation refers to the art of creating moving images via the use of computers. Increasingly, it's becoming a critical component in the game development industry. Essentially, it's divided into two categories, 2D animation and 3D animation. 2D animation, also referred to as vector animation, involves creation of images in a two-dimensional environment, including morphing, twining, and onion skinning. On the other hand, 3D animation, also known as CGI, involves moving objects and characters in a three-dimensional space. The animation process typically involves the creation of a mathematical representation of a three-dimensional object. This object is then manipulated within a virtual space by an animator to create the final animation. Software like Unity, Maya, and Blender are commonly used for computer animation in game development. \ No newline at end of file +Visit the following resources to learn more: + +- [@article@Computer Animation](https://www.adobe.com/uk/creativecloud/animation/discover/computer-animation.html) +- [@article@What is Computer Animation?](https://unity.com/topics/what-is-computer-animation) diff --git a/src/data/roadmaps/game-developer/content/computer-graphics@lIb5MeDoqVj6HycveOgTS.md b/src/data/roadmaps/game-developer/content/computer-graphics@lIb5MeDoqVj6HycveOgTS.md index 346bb0e02..879aaf7b2 100644 --- a/src/data/roadmaps/game-developer/content/computer-graphics@lIb5MeDoqVj6HycveOgTS.md +++ b/src/data/roadmaps/game-developer/content/computer-graphics@lIb5MeDoqVj6HycveOgTS.md @@ -4,4 +4,6 @@ Computer Graphics is a subfield of computer science that studies methods for dig Visit the following resources to learn more: -- [@video@How do Video Game Graphics Work?](https://www.youtube.com/watch?v=C8YtdC8mxTU) \ No newline at end of file +- [@article@What is Computer Graphics?](https://www.geeksforgeeks.org/introduction-to-computer-graphics/) +- [@article@Introduction to Computer Graphics](https://open.umn.edu/opentextbooks/textbooks/420) +- [@video@How do Video Game Graphics Work?](https://www.youtube.com/watch?v=C8YtdC8mxTU) diff --git a/src/data/roadmaps/game-developer/content/concave@jslk7Gy58VspO1uXGDgBp.md b/src/data/roadmaps/game-developer/content/concave@jslk7Gy58VspO1uXGDgBp.md index 430fac1af..15a0aff84 100644 --- a/src/data/roadmaps/game-developer/content/concave@jslk7Gy58VspO1uXGDgBp.md +++ b/src/data/roadmaps/game-developer/content/concave@jslk7Gy58VspO1uXGDgBp.md @@ -1,3 +1,7 @@ # Concave -In game development, a shape is said to be "concave" if it has an interior angle greater than 180 degrees. In simpler terms, if the shape has a portion "inwards curved" or a "cave-like" indentation, it's concave. Unlike convex shapes, a straight line drawn within a concave shape may not entirely lie within the boundaries of the shape. Concave shapes add complexity in game physics, especially in collision detection, as there are more points and angles to consider compared to convex shapes. These shapes are commonly seen in game elements like terrains, mazes, game level boundaries and gaming characters. Let's remember that the practical application of concave shapes largely depends on the gameplay requirements and the level of realism needed in the game. \ No newline at end of file +In game development, a shape is said to be "concave" if it has an interior angle greater than 180 degrees. In simpler terms, if the shape has a portion "inwards curved" or a "cave-like" indentation, it's concave. Unlike convex shapes, a straight line drawn within a concave shape may not entirely lie within the boundaries of the shape. Concave shapes add complexity in game physics, especially in collision detection, as there are more points and angles to consider compared to convex shapes. These shapes are commonly seen in game elements like terrains, mazes, game level boundaries and gaming characters. Let's remember that the practical application of concave shapes largely depends on the gameplay requirements and the level of realism needed in the game. + +Visit the following resources to learn more: + +- [@article@What is Concave Shape?](https://dev.to/fkkarakurt/geometry-and-primitives-in-game-development-1og) diff --git a/src/data/roadmaps/game-developer/content/conservation-of-energy@H3hkafXO9zqEnWuwHa38P.md b/src/data/roadmaps/game-developer/content/conservation-of-energy@H3hkafXO9zqEnWuwHa38P.md index 34adb03af..bace2d4ec 100644 --- a/src/data/roadmaps/game-developer/content/conservation-of-energy@H3hkafXO9zqEnWuwHa38P.md +++ b/src/data/roadmaps/game-developer/content/conservation-of-energy@H3hkafXO9zqEnWuwHa38P.md @@ -1,3 +1,7 @@ # Conservation of Energy -In the realm of physically-based rendering, **translucency** and **transparency** act as key aspects in creating visually authentic and compelling images. Transparency refers to the property of an object that allows light to pass through it unhindered, hence making the object clear or invisible. This is commonly seen in materials such as glass, clear plastic, and water. On the other hand, translucency describes how light interacts with a semi-transparent object. Instead of passing directly through, light enters the object, travels within for some distance and then exits at a different location. Common examples of such surfaces include human skin, marble, milk, or wax, which exhibit a soft, diffused lighting effect when light rays pass through them. The technique to achieve this effect in graphics involves subsurface scattering, where incoming light is scattered beneath the object's surface, illuminated it in a way that showcases the material's internal structure. \ No newline at end of file +In the realm of physically-based rendering, **translucency** and **transparency** act as key aspects in creating visually authentic and compelling images. Transparency refers to the property of an object that allows light to pass through it unhindered, hence making the object clear or invisible. This is commonly seen in materials such as glass, clear plastic, and water. On the other hand, translucency describes how light interacts with a semi-transparent object. Instead of passing directly through, light enters the object, travels within for some distance and then exits at a different location. Common examples of such surfaces include human skin, marble, milk, or wax, which exhibit a soft, diffused lighting effect when light rays pass through them. The technique to achieve this effect in graphics involves subsurface scattering, where incoming light is scattered beneath the object's surface, illuminated it in a way that showcases the material's internal structure. + +Visit the following resources to learn more: + +- [@article@What is Concave Shape?](https://dev.to/fkkarakurt/geometry-and-primitives-in-game-development-1og) diff --git a/src/data/roadmaps/game-developer/content/convex-decomposition@bgP9NpD0DJGqN4VCt65xP.md b/src/data/roadmaps/game-developer/content/convex-decomposition@bgP9NpD0DJGqN4VCt65xP.md index 1afd98668..e48e6a746 100644 --- a/src/data/roadmaps/game-developer/content/convex-decomposition@bgP9NpD0DJGqN4VCt65xP.md +++ b/src/data/roadmaps/game-developer/content/convex-decomposition@bgP9NpD0DJGqN4VCt65xP.md @@ -1,3 +1,7 @@ # Convex Decomposition -`Convex Decomposition` represents a process within game development that involves breaking down complex, concave shapes into simpler, convex shapes. This technique considerably simplifies the computation involved in collision detection, a critical aspect of any game development project that involves physical simulations. In concrete terms, a concave shape has one or more parts that 'cave in' or have recesses, while a convex shape has no such depressions - in simplistic terms, it 'bulges out' with no interior angles exceeding 180 degrees. So, Convex decomposition is essentially a process of breaking down a shape with 'caves' or 'recesses' into simpler shapes that only 'bulge out'. \ No newline at end of file +`Convex Decomposition` represents a process within game development that involves breaking down complex, concave shapes into simpler, convex shapes. This technique considerably simplifies the computation involved in collision detection, a critical aspect of any game development project that involves physical simulations. In concrete terms, a concave shape has one or more parts that 'cave in' or have recesses, while a convex shape has no such depressions - in simplistic terms, it 'bulges out' with no interior angles exceeding 180 degrees. So, Convex decomposition is essentially a process of breaking down a shape with 'caves' or 'recesses' into simpler shapes that only 'bulge out'. + +Visit the following resources to learn more: + +- [@article@Convex Decomposition for 3D](https://colin97.github.io/CoACD/) diff --git a/src/data/roadmaps/game-developer/content/convex-hull@jixffcPBELkhoG0e7Te8g.md b/src/data/roadmaps/game-developer/content/convex-hull@jixffcPBELkhoG0e7Te8g.md index eed73599e..ac3abb372 100644 --- a/src/data/roadmaps/game-developer/content/convex-hull@jixffcPBELkhoG0e7Te8g.md +++ b/src/data/roadmaps/game-developer/content/convex-hull@jixffcPBELkhoG0e7Te8g.md @@ -1,3 +1,7 @@ # Convex Hull -The **Convex Hull** is a foundational concept used in various areas of game development, particularly in the creation of physics engines and collision detection. Essentially, it is the smallest convex polygon that can enclose a set of points in a two-dimensional space, or the smallest convex polyhedron for a set of points in a three-dimensional space. It can be thought of as the shape that a rubber band would take if it was stretched around the points and then released. In computational geometry, various algorithms like Graham's Scan and QuickHull have been developed to compute Convex Hulls rapidly. Using Convex Hulls in game engines can drastically improve the performance of collision detection routines as fewer points need to be checked for overlap, which in turn helps in creating smoother gameplay. \ No newline at end of file +The **Convex Hull** is a foundational concept used in various areas of game development, particularly in the creation of physics engines and collision detection. Essentially, it is the smallest convex polygon that can enclose a set of points in a two-dimensional space, or the smallest convex polyhedron for a set of points in a three-dimensional space. It can be thought of as the shape that a rubber band would take if it was stretched around the points and then released. In computational geometry, various algorithms like Graham's Scan and QuickHull have been developed to compute Convex Hulls rapidly. Using Convex Hulls in game engines can drastically improve the performance of collision detection routines as fewer points need to be checked for overlap, which in turn helps in creating smoother gameplay. + +Visit the following resources to learn more: + +- [@article@Convex Decomposition for 3D](https://colin97.github.io/CoACD/) diff --git a/src/data/roadmaps/game-developer/content/convex@pG_V12qhS4HevoP_KHTvh.md b/src/data/roadmaps/game-developer/content/convex@pG_V12qhS4HevoP_KHTvh.md index 685d734f1..717384866 100644 --- a/src/data/roadmaps/game-developer/content/convex@pG_V12qhS4HevoP_KHTvh.md +++ b/src/data/roadmaps/game-developer/content/convex@pG_V12qhS4HevoP_KHTvh.md @@ -1,3 +1,7 @@ # Convex -The term "convex" in game development relates primarily to shapes and collision detection within the gaming environment. A shape is convex if all line segments between any two points in the shape lie entirely within the shape. This is an essential concept when programming collision detection and physics engines in games since the mathematical calculations can be more straightforward and efficient when the objects are convex. In addition to this, many rendering algorithms also operate optimally on convex objects, thereby helping improve the game’s graphical performance. \ No newline at end of file +The term "convex" in game development relates primarily to shapes and collision detection within the gaming environment. A shape is convex if all line segments between any two points in the shape lie entirely within the shape. This is an essential concept when programming collision detection and physics engines in games since the mathematical calculations can be more straightforward and efficient when the objects are convex. In addition to this, many rendering algorithms also operate optimally on convex objects, thereby helping improve the game’s graphical performance. + +Visit the following resources to learn more: + +- [@article@Convex in Game Development](https://dev.to/fkkarakurt/geometry-and-primitives-in-game-development-1og) diff --git a/src/data/roadmaps/game-developer/content/convexity@YLusnwCba7BIdKOYUoY6F.md b/src/data/roadmaps/game-developer/content/convexity@YLusnwCba7BIdKOYUoY6F.md index 7dd2ec152..fb5920c85 100644 --- a/src/data/roadmaps/game-developer/content/convexity@YLusnwCba7BIdKOYUoY6F.md +++ b/src/data/roadmaps/game-developer/content/convexity@YLusnwCba7BIdKOYUoY6F.md @@ -1,3 +1,7 @@ # Convexity -Convexity is a significant concept used in game development, particularly in the narrow phase of collision detection. A shape is considered convex if, for every pair of points inside the shape, the complete line segment between them is also inside the shape. Essentially, a convex shape has no angles pointing inwards. Convex shapes can be of great benefit in game development because they're simpler to handle computationally. For instance, in collision detection algorithms such as separating axis theorem (SAT) and Gilbert–Johnson–Keerthi (GJK), the input shapes are often convex. Non-convex shapes or concave shapes usually require more complex methods for collision detection, often involving partitioning the shape into smaller convex parts. \ No newline at end of file +Convexity is a significant concept used in game development, particularly in the narrow phase of collision detection. A shape is considered convex if, for every pair of points inside the shape, the complete line segment between them is also inside the shape. Essentially, a convex shape has no angles pointing inwards. Convex shapes can be of great benefit in game development because they're simpler to handle computationally. For instance, in collision detection algorithms such as separating axis theorem (SAT) and Gilbert–Johnson–Keerthi (GJK), the input shapes are often convex. Non-convex shapes or concave shapes usually require more complex methods for collision detection, often involving partitioning the shape into smaller convex parts. + +Visit the following resources to learn more: + +- [@article@Convexity in Game Development](https://www.gamedeveloper.com/game-platforms/understanding-convexity-in-ltv-modelling) diff --git a/src/data/roadmaps/game-developer/content/cube@cv1-AwewuqJsZDBI3h84G.md b/src/data/roadmaps/game-developer/content/cube@cv1-AwewuqJsZDBI3h84G.md index e69de29bb..2c092c1e3 100644 --- a/src/data/roadmaps/game-developer/content/cube@cv1-AwewuqJsZDBI3h84G.md +++ b/src/data/roadmaps/game-developer/content/cube@cv1-AwewuqJsZDBI3h84G.md @@ -0,0 +1,7 @@ +# Cube + +In computer graphics, "cube" in the context of shadows often refers to using a cube-shaped object to visualize the concept of a "shadow volume." Imagine a light source shining on a cube. The silhouette of the cube from the light's perspective, extended infinitely outwards, forms a volume. Any object inside this "shadow volume" is considered to be in shadow. While helpful for understanding, shadow volumes themselves are not always shaped like cubes - their complexity depends on the object casting the shadow. + +Visit the following resources to learn more: + +- [@article@Draw a Cube](https://dev-tut.com/2022/unity-draw-a-debug-cube/) diff --git a/src/data/roadmaps/game-developer/content/culling@1gdDeUPBRco10LpOxug4k.md b/src/data/roadmaps/game-developer/content/culling@1gdDeUPBRco10LpOxug4k.md index eeb9f1f5e..f94dc1bd6 100644 --- a/src/data/roadmaps/game-developer/content/culling@1gdDeUPBRco10LpOxug4k.md +++ b/src/data/roadmaps/game-developer/content/culling@1gdDeUPBRco10LpOxug4k.md @@ -1,3 +1,8 @@ # Culling -**Culling** is a performance optimization strategy employed in game development to improve efficiency and speed. *Culling* helps in reducing the rendering workload by eliminating the elements that are not visible to the player or are outside the viewport of the game. There are several types of culling, two main being; **frustum culling** and **occlusion culling**. Frustum culling involves eliminating objects that are outside of the camera's field of view. On the other hand, Occlusion culling discards objects that are hidden or blocked by other objects. Culling ensures that only the elements that are necessary or add value to the player's experience are processed. \ No newline at end of file +**Culling** is a performance optimization strategy employed in game development to improve efficiency and speed. Culling helps in reducing the rendering workload by eliminating the elements that are not visible to the player or are outside the viewport of the game. There are several types of culling, two main being; **frustum culling** and **occlusion culling**. Frustum culling involves eliminating objects that are outside of the camera's field of view. On the other hand, Occlusion culling discards objects that are hidden or blocked by other objects. Culling ensures that only the elements that are necessary or add value to the player's experience are processed. + +Visit the following resources to learn more: + +- [@article@Culling in Game Development](https://medium.com/@niitwork0921/what-is-culling-in-game-design-a97c0b6344dd) +- [@article@Object Culling in Unreal Engine](https://gamedevinsider.com/object-culling-in-unreal-engine/) diff --git a/src/data/roadmaps/game-developer/content/curve@YTkOF_33oL1ZkA-loc_DP.md b/src/data/roadmaps/game-developer/content/curve@YTkOF_33oL1ZkA-loc_DP.md index f050d88ad..a73b889e3 100644 --- a/src/data/roadmaps/game-developer/content/curve@YTkOF_33oL1ZkA-loc_DP.md +++ b/src/data/roadmaps/game-developer/content/curve@YTkOF_33oL1ZkA-loc_DP.md @@ -1,8 +1,8 @@ -## Curve +# Curve A `curve` in game development is a mathematical tool for creating smooth lines or paths, used in areas like animation, 3D modeling, UI design, and level layouts. Curves simplify complex shapes and movements, enabling more natural results compared to linear approaches. They're key for `lifelike animations`, organic shapes, `realistic physics`, and smooth camera movements, essential for polished, fluid game design. Learn more from the following resources: -- [@article@Curves wikipedia](https://en.wikipedia.org/wiki/Curve) -- [@article@Curves basics](https://byjus.com/maths/curve/) +- [@article@Curves](https://en.wikipedia.org/wiki/Curve) +- [@article@Basics of Curves](https://byjus.com/maths/curve/) diff --git a/src/data/roadmaps/game-developer/content/dbvt@XHFV4d6Ab4kWQ3-XcZTyT.md b/src/data/roadmaps/game-developer/content/dbvt@XHFV4d6Ab4kWQ3-XcZTyT.md index ecc1d075b..6171d5f4e 100644 --- a/src/data/roadmaps/game-developer/content/dbvt@XHFV4d6Ab4kWQ3-XcZTyT.md +++ b/src/data/roadmaps/game-developer/content/dbvt@XHFV4d6Ab4kWQ3-XcZTyT.md @@ -1,3 +1,8 @@ # DBVT -`DBVT` or `Dynamic Bounding Volume Tree` is an acceleration data structure that's primarily used in physics simulations like collision detection. It's a type of BVH (`Bounding Volume Hierarchy`), but the unique aspect of a DBVT is its handling of dynamic objects. As the name suggests, it's specifically designed to efficiently handle changing scenarios, such as objects moving or environments evolving, better than a typical BVH. Unlike a static BVH, a DBVT dynamically updates the tree as objects move, maintaining efficiency of collision queries. It primarily does this through tree rotations and refitting bounding volumes rather than fully rebuilding the tree. This makes DBVT a highly appealing option for scenarios with considerable dynamics. \ No newline at end of file +`DBVT` or `Dynamic Bounding Volume Tree` is an acceleration data structure that's primarily used in physics simulations like collision detection. It's a type of BVH (`Bounding Volume Hierarchy`), but the unique aspect of a DBVT is its handling of dynamic objects. As the name suggests, it's specifically designed to efficiently handle changing scenarios, such as objects moving or environments evolving, better than a typical BVH. Unlike a static BVH, a DBVT dynamically updates the tree as objects move, maintaining efficiency of collision queries. It primarily does this through tree rotations and refitting bounding volumes rather than fully rebuilding the tree. This makes DBVT a highly appealing option for scenarios with considerable dynamics. + +Learn more from the following resources: + +- [@article@DBVT](https://sopiro.github.io/DynamicBVH/) +- [@article@Dynamic Bounding Volume Hierarchies](https://box2d.org/files/ErinCatto_DynamicBVH_Full.pdf) diff --git a/src/data/roadmaps/game-developer/content/decision-learning@ul5XnVwQCwr4ZaL4kBNpd.md b/src/data/roadmaps/game-developer/content/decision-learning@ul5XnVwQCwr4ZaL4kBNpd.md index ed0072778..98dfa7c2e 100644 --- a/src/data/roadmaps/game-developer/content/decision-learning@ul5XnVwQCwr4ZaL4kBNpd.md +++ b/src/data/roadmaps/game-developer/content/decision-learning@ul5XnVwQCwr4ZaL4kBNpd.md @@ -1,3 +1,7 @@ # Decision Learning -In the realm of game development, **Decision Learning** refers to information systems that recognize and analyze patterns to help in making decisions. It’s particularly used in AI game development where decision-making algorithms or artificial intelligence are programmed to learn from and make decisions based on past experiences or an established decision tree. These decisions can be about game behaviors, player interactions, environment changes and so on. Various methods such as reinforcement learning, Bayesian methods, Decision trees, Neural networks are used to facilitate decision learning in game development. \ No newline at end of file +In the realm of game development, **Decision Learning** refers to information systems that recognize and analyze patterns to help in making decisions. It’s particularly used in AI game development where decision-making algorithms or artificial intelligence are programmed to learn from and make decisions based on past experiences or an established decision tree. These decisions can be about game behaviors, player interactions, environment changes and so on. Various methods such as reinforcement learning, Bayesian methods, Decision trees, Neural networks are used to facilitate decision learning in game development. + +Visit the following resources to learn more: + +- [@article@Decision Learning in Game Development](https://medium.com/@alidrsn/game-development-with-ai-strategy-tools-and-examples-7ae77257c062) diff --git a/src/data/roadmaps/game-developer/content/decision-making@Ky-95ipdgyPZGAIdqwMCk.md b/src/data/roadmaps/game-developer/content/decision-making@Ky-95ipdgyPZGAIdqwMCk.md index 854760a87..a06ef0ff2 100644 --- a/src/data/roadmaps/game-developer/content/decision-making@Ky-95ipdgyPZGAIdqwMCk.md +++ b/src/data/roadmaps/game-developer/content/decision-making@Ky-95ipdgyPZGAIdqwMCk.md @@ -1,3 +1,7 @@ # Decision Making -In game development, decision making often refers to the logic or processes that determine the behavior of non-playable characters or game environments. Three main types of decision making are used: deterministic, stochastic, and strategic. Deterministic decision making is based on predefined rules. With stochastic decision making, outcomes are probability-based, providing an element of randomness. Strategic decision making involves planning a sequence of actions to achieve a specified goal. Decisions can also be guided using various API tools such as **pathfinding algorithms** (which determine the shortest path between two points) or **decision trees** (which facilitate the selection of an action based on certain conditions). The choice of decision-making method depends largely on the desired complexity and behavior of your game elements. \ No newline at end of file +In game development, decision making often refers to the logic or processes that determine the behavior of non-playable characters or game environments. Three main types of decision making are used: deterministic, stochastic, and strategic. Deterministic decision making is based on predefined rules. With stochastic decision making, outcomes are probability-based, providing an element of randomness. Strategic decision making involves planning a sequence of actions to achieve a specified goal. Decisions can also be guided using various API tools such as **pathfinding algorithms** (which determine the shortest path between two points) or **decision trees** (which facilitate the selection of an action based on certain conditions). The choice of decision-making method depends largely on the desired complexity and behavior of your game elements. + +Visit the following resources to learn more: + +- [@article@Decision Making in Game Development](https://www.cgspectrum.com/blog/game-design-decision-making-troy-dunniway) diff --git a/src/data/roadmaps/game-developer/content/decision-tree-learning@sz1047M8_kScjth84yPwU.md b/src/data/roadmaps/game-developer/content/decision-tree-learning@sz1047M8_kScjth84yPwU.md index cfedff5a7..8b18584ae 100644 --- a/src/data/roadmaps/game-developer/content/decision-tree-learning@sz1047M8_kScjth84yPwU.md +++ b/src/data/roadmaps/game-developer/content/decision-tree-learning@sz1047M8_kScjth84yPwU.md @@ -4,4 +4,6 @@ Visit the following resources to learn more: -- [@video@Decision trees - A friendly introduction](https://www.youtube.com/watch?v=HkyWAhr9v8g) \ No newline at end of file +- [@article@Game Strategy - Real Time Decision Tree](https://medium.com/@aleena.sebastian/game-strategy-optimization-using-decision-trees-d4067008eed1) +- [@article@Real Time Decision Tree](https://www.codewithc.com/real-time-decision-trees-in-pygame-ai/) +- [@video@Decision Trees - A Friendly Introduction](https://www.youtube.com/watch?v=HkyWAhr9v8g) diff --git a/src/data/roadmaps/game-developer/content/decision-tree@rwGivalwv2ozdSlVMSc4U.md b/src/data/roadmaps/game-developer/content/decision-tree@rwGivalwv2ozdSlVMSc4U.md index 8360df462..c51689b30 100644 --- a/src/data/roadmaps/game-developer/content/decision-tree@rwGivalwv2ozdSlVMSc4U.md +++ b/src/data/roadmaps/game-developer/content/decision-tree@rwGivalwv2ozdSlVMSc4U.md @@ -1,3 +1,8 @@ # Decision Tree -A **Decision Tree** is a graphical representation used in game development which helps to visualize the possible outcomes or paths a game could take depending on certain choices made by a gamer. Each branch of the tree represents a possible decision, outcome, or reaction and each node on the tree represents a game situation or event. Decision Trees help game developers in making strategic designs, create complex enemy AI, and overall assists in predicting the interaction or course of the game. It allows game developers to layout the decision points, possible choices and their outcomes, thus making it easier to trace the direction in which the game progresses. \ No newline at end of file +A **Decision Tree** is a graphical representation used in game development which helps to visualize the possible outcomes or paths a game could take depending on certain choices made by a gamer. Each branch of the tree represents a possible decision, outcome, or reaction and each node on the tree represents a game situation or event. Decision Trees help game developers in making strategic designs, create complex enemy AI, and overall assists in predicting the interaction or course of the game. It allows game developers to layout the decision points, possible choices and their outcomes, thus making it easier to trace the direction in which the game progresses. + +Visit the following resources to learn more: + +- [@articleDecision Tree](https://www.gamedeveloper.com/programming/behavior-trees-for-ai-how-they-work) +- [@video@What is a Decision Tree?](https://www.youtube.com/watch?v=bmP4ppe_-cw) diff --git a/src/data/roadmaps/game-developer/content/deep-learning@ltkEyfuDxExs7knqs79ya.md b/src/data/roadmaps/game-developer/content/deep-learning@ltkEyfuDxExs7knqs79ya.md index 1e1b12eb5..693a4a976 100644 --- a/src/data/roadmaps/game-developer/content/deep-learning@ltkEyfuDxExs7knqs79ya.md +++ b/src/data/roadmaps/game-developer/content/deep-learning@ltkEyfuDxExs7knqs79ya.md @@ -4,4 +4,7 @@ Deep Learning is a sub-field of machine learning, inspired by the structure and Visit the following resources to learn more: -- [@video@But what is a neural network? | Chapter 1, Deep learning](https://www.youtube.com/watch?v=aircAruvnKk) \ No newline at end of file +- [@article@Deep Learning](https://en.wikipedia.org/wiki/Deep_learning) +- [@article@Deep Learning Book](https://www.deeplearningbook.org/) +- [@article@Introduction to Deep Learning](https://www.ibm.com/topics/deep-learning) +- [@video@What is a Neural Network?](https://www.youtube.com/watch?v=aircAruvnKk) diff --git a/src/data/roadmaps/game-developer/content/diffuse@0g1z5G2dsF4PTIfFAG984.md b/src/data/roadmaps/game-developer/content/diffuse@0g1z5G2dsF4PTIfFAG984.md index e69de29bb..8af7f6eac 100644 --- a/src/data/roadmaps/game-developer/content/diffuse@0g1z5G2dsF4PTIfFAG984.md +++ b/src/data/roadmaps/game-developer/content/diffuse@0g1z5G2dsF4PTIfFAG984.md @@ -0,0 +1,8 @@ +# Diffuse + +In the world of 3D rendering and game development, "diffuse" refers to diffuse lighting or diffuse reflection. It's a key concept in making objects look three-dimensional and realistically lit. + +Visit the following resources to learn more: + +- [@article@Difference Between Albedo and Diffuse Map](https://www.a23d.co/blog/difference-between-albedo-and-diffuse-map/) +- [@article@Complete Guide to Learn Texture Styles](https://cgobsession.com/complete-guide-to-texture-map-types/) diff --git a/src/data/roadmaps/game-developer/content/directional@foD8K7V0yIxgeXwl687Bv.md b/src/data/roadmaps/game-developer/content/directional@foD8K7V0yIxgeXwl687Bv.md index e69de29bb..77acbba6a 100644 --- a/src/data/roadmaps/game-developer/content/directional@foD8K7V0yIxgeXwl687Bv.md +++ b/src/data/roadmaps/game-developer/content/directional@foD8K7V0yIxgeXwl687Bv.md @@ -0,0 +1,7 @@ +# Directional + +Directional light simulates a distant light source like the sun. It has only a direction, not a specific position, meaning its light rays are parallel and cast consistent shadows regardless of object location within the scene. This makes it ideal for simulating sunlight or moonlight, providing realistic outdoor lighting while being relatively performant for rendering. + +Visit the following resources to learn more: + +- [@article@Directional Light](https://www.a23d.co/blog/difference-between-albedo-and-diffuse-map/) diff --git a/src/data/roadmaps/game-developer/content/directx-ray-tracing@qoIkw9o8iMx7MzUyVYoR2.md b/src/data/roadmaps/game-developer/content/directx-ray-tracing@qoIkw9o8iMx7MzUyVYoR2.md index 12cefafc5..d491e8e26 100644 --- a/src/data/roadmaps/game-developer/content/directx-ray-tracing@qoIkw9o8iMx7MzUyVYoR2.md +++ b/src/data/roadmaps/game-developer/content/directx-ray-tracing@qoIkw9o8iMx7MzUyVYoR2.md @@ -1,3 +1,9 @@ # DirectX Ray Tracing -DirectX Ray Tracing (DXR) is an advanced Windows API introduced with DirectX 12. It delivers real-time, cinema-quality rendering to contend development in gaming and professional visualization. It provides highly efficient and straightforward access to RT Core hardware. DXR adds four new concepts to DirectX 12: The acceleration structure, The Raytracing pipeline state object, Shader tables, and the Command list method (DispatchRays). It represents a significant step forward by Microsoft in embracing Ray Tracing as a new standard in real-time rendering pipelines. For developers, DirectX Ray tracing is straightforward to integrate into existing engines given its easy compatibility with existing DirectX 12 programming models. However, to truly maximize DXR's potential, a deep understanding of both graphics workloads and tracing algorithms is necessary. \ No newline at end of file +DirectX Ray Tracing (DXR) is an advanced Windows API introduced with DirectX 12. It delivers real-time, cinema-quality rendering to contend development in gaming and professional visualization. It provides highly efficient and straightforward access to RT Core hardware. DXR adds four new concepts to DirectX 12: The acceleration structure, The Ray tracing pipeline state object, Shader tables, and the Command list method (DispatchRays). It represents a significant step forward by Microsoft in embracing Ray Tracing as a new standard in real-time rendering pipelines. For developers, DirectX Ray tracing is straightforward to integrate into existing engines given its easy compatibility with existing DirectX 12 programming models. However, to truly maximize DXR's potential, a deep understanding of both graphics workloads and tracing algorithms is necessary. + +Visit the following resources to learn more: + +- [@article@Announcing Microsoft DirectX Ray Tracing](https://devblogs.microsoft.com/directx/announcing-microsoft-directx-raytracing/) +- [@official@DirectX Ray Tracing](https://developer.nvidia.com/blog/introduction-nvidia-rtx-directx-ray-tracing/) +- [@official@DX12 Ray Tracing](https://developer.nvidia.com/blog/dx12-raytracing-tutorials/) diff --git a/src/data/roadmaps/game-developer/content/directx@bgWFV09AtDv1yJS5t0EaB.md b/src/data/roadmaps/game-developer/content/directx@bgWFV09AtDv1yJS5t0EaB.md index 5bf4cf1f4..fe483e179 100644 --- a/src/data/roadmaps/game-developer/content/directx@bgWFV09AtDv1yJS5t0EaB.md +++ b/src/data/roadmaps/game-developer/content/directx@bgWFV09AtDv1yJS5t0EaB.md @@ -1,3 +1,8 @@ # DirectX -**DirectX** is a collection of Application Programming Interfaces (APIs) developed by Microsoft to handle tasks related to multimedia, especially game programming and video, on Microsoft platforms. It was first introduced in 1995 and has become a crucial component for PC gaming. DirectX serves as an intermediary between a hardware and a software, managing the state of the hardware and giving commands to it. Some technologies under DirectX includes Direct3D for 3D graphics, DirectDraw for 2D graphics, DirectSound for sound, and DirectInput for interfacing with input devices such as keyboard and mouse. \ No newline at end of file +**DirectX** is a collection of Application Programming Interfaces (APIs) developed by Microsoft to handle tasks related to multimedia, especially game programming and video, on Microsoft platforms. It was first introduced in 1995 and has become a crucial component for PC gaming. DirectX serves as an intermediary between a hardware and a software, managing the state of the hardware and giving commands to it. Some technologies under DirectX includes Direct3D for 3D graphics, DirectDraw for 2D graphics, DirectSound for sound, and DirectInput for interfacing with input devices such as keyboard and mouse. + +Visit the following resources to learn more: + +- [@official@Microsoft's DirectX](https://visualstudio.microsoft.com/vs/features/directx-game-dev/) +- [@official@Learn DirectX](https://learn.microsoft.com/en-us/shows/introduction-to-c-and-directx-game-development/) diff --git a/src/data/roadmaps/game-developer/content/dynamics@0D7KQlF-9ylmILTBBVxot.md b/src/data/roadmaps/game-developer/content/dynamics@0D7KQlF-9ylmILTBBVxot.md index 9abf00af5..e3e7ef936 100644 --- a/src/data/roadmaps/game-developer/content/dynamics@0D7KQlF-9ylmILTBBVxot.md +++ b/src/data/roadmaps/game-developer/content/dynamics@0D7KQlF-9ylmILTBBVxot.md @@ -1,3 +1,7 @@ # Dynamics -**Dynamics** in game physics refers to the calculation and simulation of the movement and interaction of objects over time, taking into account properties such as mass, force, and velocity. Its purpose is to ensure the motion of game elements matches expectations in the real-world, or the specific conditions defined by the game designers. This typically includes topics like kinematics (velocity and acceleration), Newton's laws of motion, forces (like gravity or friction), and conservation laws (such as momentum or energy). This also involves solving equations of motions for the game objects, detecting collisions and resolving them. Dynamics, together with Statics (dealing with how forces balance on rigid bodies at rest), makes up the core of game physics simulation. \ No newline at end of file +**Dynamics** in game physics refers to the calculation and simulation of the movement and interaction of objects over time, taking into account properties such as mass, force, and velocity. Its purpose is to ensure the motion of game elements matches expectations in the real-world, or the specific conditions defined by the game designers. This typically includes topics like kinematics (velocity and acceleration), Newton's laws of motion, forces (like gravity or friction), and conservation laws (such as momentum or energy). This also involves solving equations of motions for the game objects, detecting collisions and resolving them. Dynamics, together with Statics (dealing with how forces balance on rigid bodies at rest), makes up the core of game physics simulation. + +Visit the following resources to learn more: + +- [@article@Dynamics in Game Physics](https://americanprofessionguide.com/game-mechanics-and-dynamics/) diff --git a/src/data/roadmaps/game-developer/content/epa@vWLKYK2KUzV1fO-vQunzW.md b/src/data/roadmaps/game-developer/content/epa@vWLKYK2KUzV1fO-vQunzW.md index 1c01e4947..85add2d59 100644 --- a/src/data/roadmaps/game-developer/content/epa@vWLKYK2KUzV1fO-vQunzW.md +++ b/src/data/roadmaps/game-developer/content/epa@vWLKYK2KUzV1fO-vQunzW.md @@ -1,3 +1,8 @@ # EPA -The **EPA**, also known as the *Environmental Protection Agency*, is not typically related to game development or the concept of intersection within this context. However, in game development, EPA might refer to an 'Event-driven Process chain Architecture' or some other game-specific acronym. In this domain, different terminologies and acronyms are often used to express complex architectures, designs, or functionalities. If you have encountered EPA in a game development context, it might be best to refer to the specific documentation or guide where it was described for a better understanding. Understanding the context is key to untangle the meaning of such abbreviations. \ No newline at end of file +The **EPA**, also known as the *Environmental Protection Agency*, is not typically related to game development or the concept of intersection within this context. However, in game development, EPA might refer to an 'Event-driven Process chain Architecture' or some other game-specific acronym. In this domain, different terminologies and acronyms are often used to express complex architectures, designs, or functionalities. If you have encountered EPA in a game development context, it might be best to refer to the specific documentation or guide where it was described for a better understanding. Understanding the context is key to untangle the meaning of such abbreviations. + +Visit the following resources to learn more: + +- [@article@Environmental Sustainability in Game Development](https://polydin.com/environmental-sustainability-in-game-development/) +- [@article@Gaming Sustainability - Microsoft Game Dev](https://learn.microsoft.com/en-us/gaming/sustainability/sustainability-overview) diff --git a/src/data/roadmaps/game-developer/content/euler-angle@L0J2kvveJNsmN9ueXhqKf.md b/src/data/roadmaps/game-developer/content/euler-angle@L0J2kvveJNsmN9ueXhqKf.md index 4043224a6..17dbdc708 100644 --- a/src/data/roadmaps/game-developer/content/euler-angle@L0J2kvveJNsmN9ueXhqKf.md +++ b/src/data/roadmaps/game-developer/content/euler-angle@L0J2kvveJNsmN9ueXhqKf.md @@ -1,3 +1,7 @@ # Euler Angle -The **Euler angle** is a concept in mathematics and physics used to describe the orientation of a rigid body or a coordinate system in 3D space. It uses three angles, typically named as alpha (α), beta (β), and gamma (γ), and represents three sequential rotations around the axes of the original coordinate system. Euler angles can represent any rotation as a sequence of three elementary rotations. Keep in mind, however, that Euler angles are not unique, and different sequences of rotations can represent identical total effects. It's also noteworthy that Euler angles are prone to a problem known as gimbal lock, where the first and third axis align, causing a loss of a degree of freedom, and unpredictable behavior in particular orientations. \ No newline at end of file +The **Euler angle** is a concept in mathematics and physics used to describe the orientation of a rigid body or a coordinate system in 3D space. It uses three angles, typically named as alpha (α), beta (β), and gamma (γ), and represents three sequential rotations around the axes of the original coordinate system. Euler angles can represent any rotation as a sequence of three elementary rotations. Keep in mind, however, that Euler angles are not unique, and different sequences of rotations can represent identical total effects. It's also noteworthy that Euler angles are prone to a problem known as gimbal lock, where the first and third axis align, causing a loss of a degree of freedom, and unpredictable behavior in particular orientations. + +Visit the following resources to learn more: + +- [@article@Euler Angle in Game Development](https://www.gameludere.com/2020/03/12/euler-angles-hamilton-quaternions-and-video-games/) diff --git a/src/data/roadmaps/game-developer/content/fog@2ocwC0P1-ZFmjA9EmA1lV.md b/src/data/roadmaps/game-developer/content/fog@2ocwC0P1-ZFmjA9EmA1lV.md index e69de29bb..e2b5768f1 100644 --- a/src/data/roadmaps/game-developer/content/fog@2ocwC0P1-ZFmjA9EmA1lV.md +++ b/src/data/roadmaps/game-developer/content/fog@2ocwC0P1-ZFmjA9EmA1lV.md @@ -0,0 +1,7 @@ +# Fog + +Fog in game development refers to a visual effect used to simulate atmospheric conditions and enhance the depth perception in a game environment. It creates a gradient of visibility, often fading objects into the background, which can improve performance by reducing the number of objects rendered at a distance. Fog can be implemented in various ways, such as linear fog, which gradually obscures objects based on their distance from the camera, or exponential fog, which creates a more dramatic effect by rapidly increasing the density of fog with distance. + +Visit the following resources to learn more: + +- [@article@Fog - Graphics and GPU Programming](https://gamedev.net/reference/articles/article677.asp) diff --git a/src/data/roadmaps/game-developer/content/force@qduFRhmrzJ2sn0g7L-tza.md b/src/data/roadmaps/game-developer/content/force@qduFRhmrzJ2sn0g7L-tza.md index 37c886d48..fb5071bf5 100644 --- a/src/data/roadmaps/game-developer/content/force@qduFRhmrzJ2sn0g7L-tza.md +++ b/src/data/roadmaps/game-developer/content/force@qduFRhmrzJ2sn0g7L-tza.md @@ -1,3 +1,7 @@ # Force -**Force** is a vital concept in game development, especially when crafting physics in games. In the context of game physics, 'Force' is an influence that causes an object to undergo a certain change, either concerning its movement, direction, or geometrical construction. It's typically implemented in game engines, with part of the physics simulation that computes forces like gravity, friction, or custom forces defined by the developer. Incorporating forces gives a realistic feel to the game, allowing objects to interact naturally following the laws of physics. This is central in genres like racing games, sports games, and any game featuring physical interactions between objects. Remember that `F = ma`, the acceleration of an object is directly proportional to the force applied and inversely proportional to its mass. The balance and manipulation of these forces are integral to dynamic, immersive gameplay. \ No newline at end of file +**Force** is a vital concept in game development, especially when crafting physics in games. In the context of game physics, 'Force' is an influence that causes an object to undergo a certain change, either concerning its movement, direction, or geometrical construction. It's typically implemented in game engines, with part of the physics simulation that computes forces like gravity, friction, or custom forces defined by the developer. Incorporating forces gives a realistic feel to the game, allowing objects to interact naturally following the laws of physics. This is central in genres like racing games, sports games, and any game featuring physical interactions between objects. Remember that `F = ma`, the acceleration of an object is directly proportional to the force applied and inversely proportional to its mass. The balance and manipulation of these forces are integral to dynamic, immersive gameplay. + +Visit the following resources to learn more: + +- [@article@Physics for Game Dev](https://medium.com/@brazmogu/physics-for-game-dev-a-platformer-physics-cheatsheet-f34b09064558) diff --git a/src/data/roadmaps/game-developer/content/friction@Hz9R4YGYtD0jAur8rYist.md b/src/data/roadmaps/game-developer/content/friction@Hz9R4YGYtD0jAur8rYist.md index 1c2f356a1..d803e816e 100644 --- a/src/data/roadmaps/game-developer/content/friction@Hz9R4YGYtD0jAur8rYist.md +++ b/src/data/roadmaps/game-developer/content/friction@Hz9R4YGYtD0jAur8rYist.md @@ -2,4 +2,7 @@ `Friction` is a crucial concept in game dynamics. In the context of games, it's typically used to slow down or impede movement, providing a realistic feel to characters or objects movement. For example, when a player's character runs on a smooth surface as compared to a rough one, friction influences the speed and control of that character. It can be seen in how cars skid on icy surfaces, how walking speed changes depending on the terrain, or how a ball rolls and eventually slows. The equation to compute friction is usually `f = μN`, where `f` is the force of friction, `μ` is the coefficient of friction (which depends on the two surfaces interacting), and `N` is the normal force (which is generally the weight of the object). You can adjust the coefficient of friction in a game to have different effects depending upon the desired outcome. +Visit the following resources to learn more: + +- [@article@Friction in Game Dev](https://medium.com/@originallearguy/rub-the-right-way-applying-friction-in-game-design-122bd98de69d) - [@video@Friction](https://youtu.be/t1HWIoDUWXg?si=FmFsIGTSHpLS72vp) diff --git a/src/data/roadmaps/game-developer/content/frustum@UcLGWYu41Ok2NYdLNIY5C.md b/src/data/roadmaps/game-developer/content/frustum@UcLGWYu41Ok2NYdLNIY5C.md index 27421ed5c..3b0fac47c 100644 --- a/src/data/roadmaps/game-developer/content/frustum@UcLGWYu41Ok2NYdLNIY5C.md +++ b/src/data/roadmaps/game-developer/content/frustum@UcLGWYu41Ok2NYdLNIY5C.md @@ -2,8 +2,7 @@ Frustum culling is a standard practice in computer graphics, used in virtually all games to optimize performance by not rendering objects outside of your field of view. Think of your field of view as a frustum, a truncated pyramid shape. The farthest side is called the far clip plane, and the closest side is the near clip plane. Any object in the game that doesn't fall within this frustum is culled, meaning it’s not rendered, to improve performance. This feature comes built-in with Unreal Engine. -You can also adjust the near and far clip planes to fine-tune culling. For example, if an object is too close to the camera, it may disappear because it crosses the near clip plane threshold. Similarly, objects that are too far away might be culled by the far clip plane. In some cases, distant objects are LOD-ed (Level of Detail), an optimization technique that reduces the detail of the mesh the farther you are from it, and increases detail as you get closer. - -Frustum culling is a fundamental technique that is implemented in virtually all modern games to ensure efficient rendering and smooth gameplay. +Visit the following resources to learn more: +- [@article@Frustum Culling](https://gamedev.net/tutorials/programming/general-and-gameplay-programming/frustum-culling-r4613/) - [@video@Frustum Culling - Game Optimization 101 - Unreal Engine](https://www.youtube.com/watch?v=Ql56s1erTMI) diff --git a/src/data/roadmaps/game-developer/content/fuzzy-logic@4ZCVUpYrCT14d_JULulLe.md b/src/data/roadmaps/game-developer/content/fuzzy-logic@4ZCVUpYrCT14d_JULulLe.md index 2f5581b33..85b85db4a 100644 --- a/src/data/roadmaps/game-developer/content/fuzzy-logic@4ZCVUpYrCT14d_JULulLe.md +++ b/src/data/roadmaps/game-developer/content/fuzzy-logic@4ZCVUpYrCT14d_JULulLe.md @@ -1,3 +1,7 @@ # Fuzzy Logic -Fuzzy Logic is a mathematical logic method that resolves problem-solving and system control. Unlike traditional binary sets (true or false), fuzzy logic variables have a truth value that ranges in degree between 0 and 1. This allows them to handle the concept of partial truth, where the truth value may range between completely true and completely false. In game development, fuzzy logic is often used in artificial intelligence to make the game more realistic. For instance, it can be used to program non-player characters (NPCs) who respond to situational changes dynamically, making the gameplay more engaging and interactive. \ No newline at end of file +Fuzzy Logic is a mathematical logic method that resolves problem-solving and system control. Unlike traditional binary sets (true or false), fuzzy logic variables have a truth value that ranges in degree between 0 and 1. This allows them to handle the concept of partial truth, where the truth value may range between completely true and completely false. In game development, fuzzy logic is often used in artificial intelligence to make the game more realistic. For instance, it can be used to program non-player characters (NPCs) who respond to situational changes dynamically, making the gameplay more engaging and interactive. + +Visit the following resources to learn more: + +- [@article@Fuzzy Login in Games](https://www.michelepirovano.com/pdf/fuzzy_ai_in_games.pdf) diff --git a/src/data/roadmaps/game-developer/content/game-ai@Hpf_CPmLpCSP8Qo07Kq1X.md b/src/data/roadmaps/game-developer/content/game-ai@Hpf_CPmLpCSP8Qo07Kq1X.md index 56fbf7fe8..f96b49d44 100644 --- a/src/data/roadmaps/game-developer/content/game-ai@Hpf_CPmLpCSP8Qo07Kq1X.md +++ b/src/data/roadmaps/game-developer/content/game-ai@Hpf_CPmLpCSP8Qo07Kq1X.md @@ -1,3 +1,8 @@ # Game AI -Game AI is a subfield of artificial intelligence (AI) that is used to create video game characters that act and react like real human players. Game AI is used in a variety of video games, from simple puzzle games to complex strategy games. Game AI can be used to create non-player characters (NPCs) that interact with the player, as well as to create intelligent opponents that challenge the player. \ No newline at end of file +Game AI is a subfield of artificial intelligence (AI) that is used to create video game characters that act and react like real human players. Game AI is used in a variety of video games, from simple puzzle games to complex strategy games. Game AI can be used to create non-player characters (NPCs) that interact with the player, as well as to create intelligent opponents that challenge the player. + +Visit the following resources to learn more: + +- [@article@Game AI](https://medium.com/@alidrsn/game-development-with-ai-strategy-tools-and-examples-7ae77257c062) +- [@article@AI Game Development](https://modl.ai/ai-game-development/) diff --git a/src/data/roadmaps/game-developer/content/game-ai@Hpk8eOaOepERMmOvUgkxa.md b/src/data/roadmaps/game-developer/content/game-ai@Hpk8eOaOepERMmOvUgkxa.md index 56fbf7fe8..f96b49d44 100644 --- a/src/data/roadmaps/game-developer/content/game-ai@Hpk8eOaOepERMmOvUgkxa.md +++ b/src/data/roadmaps/game-developer/content/game-ai@Hpk8eOaOepERMmOvUgkxa.md @@ -1,3 +1,8 @@ # Game AI -Game AI is a subfield of artificial intelligence (AI) that is used to create video game characters that act and react like real human players. Game AI is used in a variety of video games, from simple puzzle games to complex strategy games. Game AI can be used to create non-player characters (NPCs) that interact with the player, as well as to create intelligent opponents that challenge the player. \ No newline at end of file +Game AI is a subfield of artificial intelligence (AI) that is used to create video game characters that act and react like real human players. Game AI is used in a variety of video games, from simple puzzle games to complex strategy games. Game AI can be used to create non-player characters (NPCs) that interact with the player, as well as to create intelligent opponents that challenge the player. + +Visit the following resources to learn more: + +- [@article@Game AI](https://medium.com/@alidrsn/game-development-with-ai-strategy-tools-and-examples-7ae77257c062) +- [@article@AI Game Development](https://modl.ai/ai-game-development/) diff --git a/src/data/roadmaps/game-developer/content/game-engine@fv5tivGad2P9GRZOodfn2.md b/src/data/roadmaps/game-developer/content/game-engine@fv5tivGad2P9GRZOodfn2.md index 5cf71c487..b4ca6de2a 100644 --- a/src/data/roadmaps/game-developer/content/game-engine@fv5tivGad2P9GRZOodfn2.md +++ b/src/data/roadmaps/game-developer/content/game-engine@fv5tivGad2P9GRZOodfn2.md @@ -1,3 +1,8 @@ # Game Engine -A *Game Engine* is a software framework designed to facilitate the creation and development of video games. Developers use them to create games for consoles, mobile devices, and personal computers. The core functionality typically provided by a game engine includes a rendering engine ("renderer") for 2D or 3D graphics, a physics engine or collision detection (and collision response), sound, scripting, animation, artificial intelligence, networking, streaming, memory management, and a scene graph. Game Engines can save a significant amount of development time by providing these reusable components. However, they aren't one-size-fits-all solutions, as developers must still customize much of the code to fit their games' unique needs. Some popular game engines are Unity, Unreal Engine, and Godot. \ No newline at end of file +A *Game Engine* is a software framework designed to facilitate the creation and development of video games. Developers use them to create games for consoles, mobile devices, and personal computers. The core functionality typically provided by a game engine includes a rendering engine ("renderer") for 2D or 3D graphics, a physics engine or collision detection (and collision response), sound, scripting, animation, artificial intelligence, networking, streaming, memory management, and a scene graph. Game Engines can save a significant amount of development time by providing these reusable components. However, they aren't one-size-fits-all solutions, as developers must still customize much of the code to fit their games' unique needs. Some popular game engines are Unity, Unreal Engine, and Godot. + +Visit the following resources to learn more: + +- [@article@Game Engine](https://en.wikipedia.org/wiki/Game_engine) +- [@video@Choosing a Game Engine is Easy!](https://www.youtube.com/watch?v=aMgB018o71U) diff --git a/src/data/roadmaps/game-developer/content/game-physics@UTBnrQiZ6Bf96yJYIUf3b.md b/src/data/roadmaps/game-developer/content/game-physics@UTBnrQiZ6Bf96yJYIUf3b.md index efd8cd150..6b306368f 100644 --- a/src/data/roadmaps/game-developer/content/game-physics@UTBnrQiZ6Bf96yJYIUf3b.md +++ b/src/data/roadmaps/game-developer/content/game-physics@UTBnrQiZ6Bf96yJYIUf3b.md @@ -1,3 +1,8 @@ # Game Physics -_Game physics_ is an integral part of game development that simulates the laws of physics in a virtual environment. This simulation brings realism into the game by defining how objects move, interact, and react to collisions and forces. Game physics ranges from how a character jumps or moves in a 2D or 3D space, to more complex mechanics such as fluid dynamics or ragdoll physics. Two main types of game physics are 'arcade physics', which are simpler and more abstract; and 'realistic physics', attempting to fully recreate real-life physics interactions. Implementing game physics requires a combination of mathematical knowledge and programming skills to integrate physics engines like Unity's PhysX and Unreal Engine's built-in physics tool. \ No newline at end of file +Game Physics is an integral part of game development that simulates the laws of physics in a virtual environment. This simulation brings realism into the game by defining how objects move, interact, and react to collisions and forces. Game physics ranges from how a character jumps or moves in a 2D or 3D space, to more complex mechanics such as fluid dynamics or ragdoll physics. Two main types of game physics are 'arcade physics', which are simpler and more abstract; and 'realistic physics', attempting to fully recreate real-life physics interactions. Implementing game physics requires a combination of mathematical knowledge and programming skills to integrate physics engines like Unity's PhysX and Unreal Engine's built-in physics tool. + +Visit the following resources to learn more: + +- [@article@Game Physics](https://en.wikipedia.org/wiki/Game_physics) +- [@article@Master Game Physics Today!](https://www.udemy.com/course/gamephysics/) diff --git a/src/data/roadmaps/game-developer/content/gdscript@AaRZiItRcn8fYb5R62vfT.md b/src/data/roadmaps/game-developer/content/gdscript@AaRZiItRcn8fYb5R62vfT.md index 1d07a40c6..44e688ebe 100644 --- a/src/data/roadmaps/game-developer/content/gdscript@AaRZiItRcn8fYb5R62vfT.md +++ b/src/data/roadmaps/game-developer/content/gdscript@AaRZiItRcn8fYb5R62vfT.md @@ -5,4 +5,4 @@ GDScript is a high-level, dynamically-typed programming language designed specif Learn more from the following resources: - [@official@GDScript Website](https://gdscript.com/) -- [@video@How to program in Godot - GDScript Tutorial](https://www.youtube.com/watch?v=e1zJS31tr88) \ No newline at end of file +- [@video@How to program in Godot - GDScript Tutorial](https://www.youtube.com/watch?v=e1zJS31tr88) diff --git a/src/data/roadmaps/game-developer/content/geometry@XWxW2ZBw3LcQ4DRk4tgAG.md b/src/data/roadmaps/game-developer/content/geometry@XWxW2ZBw3LcQ4DRk4tgAG.md index 02177ffeb..2c05b3051 100644 --- a/src/data/roadmaps/game-developer/content/geometry@XWxW2ZBw3LcQ4DRk4tgAG.md +++ b/src/data/roadmaps/game-developer/content/geometry@XWxW2ZBw3LcQ4DRk4tgAG.md @@ -1,3 +1,8 @@ # Geometry -Geometry in game development refers to the mathematical study used to define the spatial elements within a game. This is vital in determining how objects interact within a game's environment. Particularly, geometry is employed in various aspects like object rendering, collision detection, character movement, and the calculation of angles and distance. It allows developers to create the spatial parameters for a game, including object dimensions and orientations. Understanding the basics such as 2D vs 3D, polygons, vertices, meshes and more advanced topics such as vectors, matrices, quaternions etc. is crucial to this field. \ No newline at end of file +Geometry in game development refers to the mathematical study used to define the spatial elements within a game. This is vital in determining how objects interact within a game's environment. Particularly, geometry is employed in various aspects like object rendering, collision detection, character movement, and the calculation of angles and distance. It allows developers to create the spatial parameters for a game, including object dimensions and orientations. Understanding the basics such as 2D vs 3D, polygons, vertices, meshes and more advanced topics such as vectors, matrices, quaternions etc. is crucial to this field. + +Visit the following resources to learn more: + +- [@article@Game Geometry - Math is Fun](https://www.mathsisfun.com/geometry/index.html) +- [@article@Geometry and Primitives for Games](https://dev.to/fkkarakurt/geometry-and-primitives-in-game-development-1og) diff --git a/src/data/roadmaps/game-developer/content/gjk@lwd3Gz9bJEKCIwhXD6m-v.md b/src/data/roadmaps/game-developer/content/gjk@lwd3Gz9bJEKCIwhXD6m-v.md index 5f41d6607..7d3c62b8e 100644 --- a/src/data/roadmaps/game-developer/content/gjk@lwd3Gz9bJEKCIwhXD6m-v.md +++ b/src/data/roadmaps/game-developer/content/gjk@lwd3Gz9bJEKCIwhXD6m-v.md @@ -2,4 +2,8 @@ The **GJK algorithm** (Gilbert–Johnson–Keerthi) is a computational geometry algorithm that is widely used to detect collisions between convex objects in video games and simulations. The primary role of this algorithm is to assess the intersection between two convex shapes. What makes it unique and widely used is its efficiency and accuracy even when dealing with complex three-dimensional shapes. It uses the concept of "Minkowski Difference" to simplify its calculations and determine if two shapes are intersecting. -The algorithm works iteratively, beginning with a single point (the origin) and progressing by adding vertices from the Minkowski Difference, each time refining a simple 'guess' about the direction of the nearest point to the origin until it either concludes that the shapes intersect (the origin is inside the Minkowski difference), or until it can't progress further, in which case the shapes are confirmed not to intersect. This makes it an incredibly powerful and useful tool for game developers. \ No newline at end of file +Visit the following resources to learn more: + +- [@article@Game Geometry - Math is Fun](https://en.wikipedia.org/wiki/Gilbert-Johnson-Keerthi_distance_algorithm) +- [@article@The GJK Algorithm](https://medium.com/@mbayburt/walkthrough-of-the-gjk-collision-detection-algorithm-80823ef5c774) +- [@video@GJK Algorithm Explanation & Implementation](https://www.youtube.com/watch?v=MDusDn8oTSE) diff --git a/src/data/roadmaps/game-developer/content/glsl@j8mWMFMQCEIPUzegDDsm1.md b/src/data/roadmaps/game-developer/content/glsl@j8mWMFMQCEIPUzegDDsm1.md index d48a88edd..81f05a525 100644 --- a/src/data/roadmaps/game-developer/content/glsl@j8mWMFMQCEIPUzegDDsm1.md +++ b/src/data/roadmaps/game-developer/content/glsl@j8mWMFMQCEIPUzegDDsm1.md @@ -1,3 +1,7 @@ # GLSL -GLSL (Graphics Library Shader Language) is a high-level shading language inspired by C, based on the syntax of the OpenGL Shading Language. It is used in graphics programming for defining how the graphical content should look. GLSL allows developers to harness the power of modern GPUs (Graphics Processing Units), enabling direct, unconstrained control over graphics rendering. A key aspect of the language is its ability to create shaders, which are small programs that run on the GPU. Shaders are used for various graphical effects like vertex manipulation, pixel color calculations, or post-processing effects. \ No newline at end of file +**GLSL** (Graphics Library Shader Language) is a high-level shading language inspired by C, based on the syntax of the OpenGL Shading Language. It is used in graphics programming for defining how the graphical content should look. GLSL allows developers to harness the power of modern GPUs (Graphics Processing Units), enabling direct, unconstrained control over graphics rendering. A key aspect of the language is its ability to create shaders, which are small programs that run on the GPU. Shaders are used for various graphical effects like vertex manipulation, pixel color calculations, or post-processing effects. + +Visit the following resources to learn more: + +- [@article@GLSL Shaders](https://developer.mozilla.org/en-US/docs/Games/Techniques/3D_on_the_web/GLSL_Shaders) diff --git a/src/data/roadmaps/game-developer/content/goal-oriented-behavior@Cuc0xvCAkVyUtwOxO_Uua.md b/src/data/roadmaps/game-developer/content/goal-oriented-behavior@Cuc0xvCAkVyUtwOxO_Uua.md index 0c30847cf..befc99368 100644 --- a/src/data/roadmaps/game-developer/content/goal-oriented-behavior@Cuc0xvCAkVyUtwOxO_Uua.md +++ b/src/data/roadmaps/game-developer/content/goal-oriented-behavior@Cuc0xvCAkVyUtwOxO_Uua.md @@ -1,3 +1,7 @@ # Goal Oriented Behavior -Goal oriented behavior in game development refers to the artificial intelligence algorithms employed that give non-player characters (NPCs) the ability to make decisions based on certain objectives or tasks. These NPCs analyze the circumstances in the game environment, formulate a plan to achieve specific goals, and then execute it. The degree of sophistication in these algorithms can range from simple pathways to complex problem-solving solutions. As the behavior models are not hard-coded, it provides NPCs with greater adaptability and autonomy. \ No newline at end of file +Goal oriented behavior in game development refers to the artificial intelligence algorithms employed that give non-player characters (NPCs) the ability to make decisions based on certain objectives or tasks. These NPCs analyze the circumstances in the game environment, formulate a plan to achieve specific goals, and then execute it. The degree of sophistication in these algorithms can range from simple pathways to complex problem-solving solutions. As the behavior models are not hard-coded, it provides NPCs with greater adaptability and autonomy. + +Visit the following resources to learn more: + +- [@article@Goal Oriented Action Planning](https://duckduckgo.com/?q=Goal%20Oriented%20Behaviorin%20Game%20Dev+site:www.gamedeveloper.com) diff --git a/src/data/roadmaps/game-developer/content/godot@7OffO2mBmfBKqPBTZ9ngI.md b/src/data/roadmaps/game-developer/content/godot@7OffO2mBmfBKqPBTZ9ngI.md index f26505cfd..34890ef44 100644 --- a/src/data/roadmaps/game-developer/content/godot@7OffO2mBmfBKqPBTZ9ngI.md +++ b/src/data/roadmaps/game-developer/content/godot@7OffO2mBmfBKqPBTZ9ngI.md @@ -2,4 +2,9 @@ Godot is an open-source, multi-platform game engine that is known for being feature-rich and user-friendly. It is developed by hundreds of contributors from around the world and supports the creation of both 2D and 3D games. Godot uses its own scripting language, GDScript, which is similar to Python, but it also supports C# and visual scripting. It is equipped with a unique scene system and comes with a multitude of tools that can expedite the development process. Godot's design philosophy centers around flexibility, extensibility, and ease of use, providing a handy tool for both beginners and pros in game development. -- [@video@Godot in 100 Seconds](https://m.youtube.com/watch?v=QKgTZWbwD1U) \ No newline at end of file +Visit the following resources to learn more: + +- [@opensource@godotengine/godot](https://github.com/godotengine/godot) +- [@official@Godot](https://godotengine.org/) +- [@official@Godot Documentation](https://docs.godotengine.org/en/stable/) +- [@video@Godot in 100 Seconds](https://m.youtube.com/watch?v=QKgTZWbwD1U) diff --git a/src/data/roadmaps/game-developer/content/graphics-api@Kx7O7RLp7aPGtOvK8e314.md b/src/data/roadmaps/game-developer/content/graphics-api@Kx7O7RLp7aPGtOvK8e314.md index a2cdc8c35..c23453ab3 100644 --- a/src/data/roadmaps/game-developer/content/graphics-api@Kx7O7RLp7aPGtOvK8e314.md +++ b/src/data/roadmaps/game-developer/content/graphics-api@Kx7O7RLp7aPGtOvK8e314.md @@ -1,3 +1,7 @@ # Graphics API -A Graphics API (Application Programming Interface) is a collection of commands, functions, protocols, and tools that game developers use to build games. It forms an interface between the game and the hardware of the device, usually a computer or console, and assists in rendering 2D and 3D graphics performance. Complex tasks such as drawing polygons, texturing, or lighting are encapsulated in a more manageable, higher-level process by the API. Common examples are Vulkan, DirectX, OpenGL, and Metal. Each one varies in availability and performance across different platforms and devices and has unique features that can be utilized for game development. \ No newline at end of file +A Graphics API (Application Programming Interface) is a collection of commands, functions, protocols, and tools that game developers use to build games. It forms an interface between the game and the hardware of the device, usually a computer or console, and assists in rendering 2D and 3D graphics performance. Complex tasks such as drawing polygons, texturing, or lighting are encapsulated in a more manageable, higher-level process by the API. Common examples are Vulkan, DirectX, OpenGL, and Metal. Each one varies in availability and performance across different platforms and devices and has unique features that can be utilized for game development. + +Visit the following resources to learn more: + +- [@article@Graphics API in Unity](https://docs.unity3d.com/2022.3/Documentation/ScriptReference/PlayerSettings.SetGraphicsAPIs.html) diff --git a/src/data/roadmaps/game-developer/content/graphics-pipeline@shSRnMf4NONuZ3TGPAoQc.md b/src/data/roadmaps/game-developer/content/graphics-pipeline@shSRnMf4NONuZ3TGPAoQc.md index 991c1bae3..d87a1b427 100644 --- a/src/data/roadmaps/game-developer/content/graphics-pipeline@shSRnMf4NONuZ3TGPAoQc.md +++ b/src/data/roadmaps/game-developer/content/graphics-pipeline@shSRnMf4NONuZ3TGPAoQc.md @@ -1,3 +1,8 @@ # Graphics Pipeline -The **Graphics Pipeline**, also often referred to as the rendering pipeline, is a sequence of steps that a graphics system follows to convert a 3D model into a 2D image or view that can be displayed onto a screen. These steps typically include transformation, clipping, lighting, rasterization, shading, and other processes. Each step in the pipeline represents an operation that prepares or manipulates data to be used in downstream stages. The pipeline begins with a high-level description of a scene and ends with the final image rendered onto the screen. It is a primary concept in computer graphics that developers should learn as it can help in efficient rendering and high-quality visualization. \ No newline at end of file +The **Graphics Pipeline**, also often referred to as the rendering pipeline, is a sequence of steps that a graphics system follows to convert a 3D model into a 2D image or view that can be displayed onto a screen. These steps typically include transformation, clipping, lighting, rasterization, shading, and other processes. Each step in the pipeline represents an operation that prepares or manipulates data to be used in downstream stages. The pipeline begins with a high-level description of a scene and ends with the final image rendered onto the screen. It is a primary concept in computer graphics that developers should learn as it can help in efficient rendering and high-quality visualization. + +Visit the following resources to learn more: + +- [@article@Graphics Pipelines](https://www.cs.cornell.edu/courses/cs4620/2020fa/slides/11pipeline.pdf) +- [@article@Definition of Graphics Pipeline](https://www.pcmag.com/encyclopedia/term/graphics-pipeline) diff --git a/src/data/roadmaps/game-developer/content/hermite@m4AuHjEBnHS0wyATG-I1Z.md b/src/data/roadmaps/game-developer/content/hermite@m4AuHjEBnHS0wyATG-I1Z.md index 95594a3e9..c70195b4a 100644 --- a/src/data/roadmaps/game-developer/content/hermite@m4AuHjEBnHS0wyATG-I1Z.md +++ b/src/data/roadmaps/game-developer/content/hermite@m4AuHjEBnHS0wyATG-I1Z.md @@ -1,3 +1,7 @@ # Hermite -Hermite refers to Hermite interpolation, a fundamental technique in game development for executing smooth transitions. Essentially, Hermite interpolation is an application of polynomial mathematics, with two points applied as start/end (they're usually 3D positional vectors), and the tangents at these points controlling the curve's shape. The technique's name is derived from its inventor, Charles Hermite, a French mathematician. Hermite interpolation can be useful in different aspects of game development, such as creating smooth animations, camera paths, or motion patterns. Note, however, that while Hermite interpolation offers control over the start and end points of a sequence, it might not precisely predict the curve's full behavior. \ No newline at end of file +Hermite refers to Hermite interpolation, a fundamental technique in game development for executing smooth transitions. Essentially, Hermite interpolation is an application of polynomial mathematics, with two points applied as start/end (they're usually 3D positional vectors), and the tangents at these points controlling the curve's shape. The technique's name is derived from its inventor, Charles Hermite, a French mathematician. Hermite interpolation can be useful in different aspects of game development, such as creating smooth animations, camera paths, or motion patterns. Note, however, that while Hermite interpolation offers control over the start and end points of a sequence, it might not precisely predict the curve's full behavior. + +Visit the following resources to learn more: + +- [@article@Hermite Interpolation](https://en.wikipedia.org/wiki/Hermite_interpolation) diff --git a/src/data/roadmaps/game-developer/content/hlsl@wYUDJb-q1rtM4w2QV3Wr1.md b/src/data/roadmaps/game-developer/content/hlsl@wYUDJb-q1rtM4w2QV3Wr1.md index ee04df937..20e223de3 100644 --- a/src/data/roadmaps/game-developer/content/hlsl@wYUDJb-q1rtM4w2QV3Wr1.md +++ b/src/data/roadmaps/game-developer/content/hlsl@wYUDJb-q1rtM4w2QV3Wr1.md @@ -1,3 +1,8 @@ # HLSL -**HLSL** stands for High-Level Shader Language, and it is the proprietary shading language developed by Microsoft for use with the Microsoft Direct3D API. Just like its counterpart from OpenGL - GLSL, it opens up the power of programmable GPUs for developers by providing capability for creating customized rendering effects or performing operations that are computationally expensive in CPU. HLSL resembles the C programming language, thereby making it easier for developers coming from traditional programming backgrounds. It is often considered an integral part of the Direct X ecosystem and is used for developing complex and visually impressive graphics for games. \ No newline at end of file +**HLSL** stands for High-Level Shader Language, and it is the proprietary shading language developed by Microsoft for use with the Microsoft Direct3D API. Just like its counterpart from OpenGL - GLSL, it opens up the power of programmable GPUs for developers by providing capability for creating customized rendering effects or performing operations that are computationally expensive in CPU. HLSL resembles the C programming language, thereby making it easier for developers coming from traditional programming backgrounds. It is often considered an integral part of the Direct X ecosystem and is used for developing complex and visually impressive graphics for games. + +Visit the following resources to learn more: + +- [@article@HLSL](https://en.wikipedia.org/wiki/High-Level_Shader_Language) +- [@article@Comparison of HLSLs](https://docs.vulkan.org/guide/latest/high_level_shader_language_comparison.html) diff --git a/src/data/roadmaps/game-developer/content/horizon@9cBOfj58I4hBlxlQIyV9g.md b/src/data/roadmaps/game-developer/content/horizon@9cBOfj58I4hBlxlQIyV9g.md index e69de29bb..461cb9631 100644 --- a/src/data/roadmaps/game-developer/content/horizon@9cBOfj58I4hBlxlQIyV9g.md +++ b/src/data/roadmaps/game-developer/content/horizon@9cBOfj58I4hBlxlQIyV9g.md @@ -0,0 +1,7 @@ +# Horizon + +In graphics, the horizon refers to a horizontal line that represents the visual boundary where the sky meets the earth or a flat surface, such as the ocean. It's a fundamental concept in perspective and art, serving as a reference point for creating a sense of depth and distance in an image. The placement of the horizon line can significantly impact the composition and mood of an image, with high or low horizon lines creating different effects on the viewer's perception of the scene. + +Visit the following resources to learn more: + +- [@article@Vanishing Point](https://en.wikipedia.org/wiki/Vanishing_point) diff --git a/src/data/roadmaps/game-developer/content/intersection@vmRYaXNVCe0N73xG8bsEK.md b/src/data/roadmaps/game-developer/content/intersection@vmRYaXNVCe0N73xG8bsEK.md index 48c817089..170765ed3 100644 --- a/src/data/roadmaps/game-developer/content/intersection@vmRYaXNVCe0N73xG8bsEK.md +++ b/src/data/roadmaps/game-developer/content/intersection@vmRYaXNVCe0N73xG8bsEK.md @@ -1,3 +1,8 @@ # Intersection -`Intersection` is a concept in the narrow phase of game development where the exact point or points of collision are determined between two potentially colliding objects. This process takes place once a potential collision is determined in the broad phase. Algorithms such as Axis-Aligned Bounding Boxes (AABB), Separating Axis Theorem (SAT), Spherical or Capsule bounding, and many others are used for different intersection tests based on the shape of the objects. The intersection provides valuable data such as the point of contact, direction and depth of penetration, which are used to calculate the accurate physical response in the collision. \ No newline at end of file +`Intersection` is a concept in the narrow phase of game development where the exact point or points of collision are determined between two potentially colliding objects. This process takes place once a potential collision is determined in the broad phase. Algorithms such as Axis-Aligned Bounding Boxes (AABB), Separating Axis Theorem (SAT), Spherical or Capsule bounding, and many others are used for different intersection tests based on the shape of the objects. The intersection provides valuable data such as the point of contact, direction and depth of penetration, which are used to calculate the accurate physical response in the collision. + +Visit the following resources to learn more: + +- [@article@Intersection Tests for Games](https://www.gamedeveloper.com/game-platforms/simple-intersection-tests-for-games) +- [@article@Intersection Geometry](https://www.petercollingridge.co.uk/tutorials/computational-geometry/line-line-intersections/) diff --git a/src/data/roadmaps/game-developer/content/joints@m2_wUW2VHMCXHnn5B91qr.md b/src/data/roadmaps/game-developer/content/joints@m2_wUW2VHMCXHnn5B91qr.md index d8e579f66..de533a3d2 100644 --- a/src/data/roadmaps/game-developer/content/joints@m2_wUW2VHMCXHnn5B91qr.md +++ b/src/data/roadmaps/game-developer/content/joints@m2_wUW2VHMCXHnn5B91qr.md @@ -1,3 +1,8 @@ # Joints -Joints in game development primarily refer to the connections between two objects, often used in the context of physics simulations and character animations. These might simulate the physics of real-world joints like hinges or springs. Developers can control various characteristics of joints such as their constraints, forces, and reactions. The different types come with various properties suitable for specific needs. For example, Fixed joints keep objects together, Hinge joints allow rotation around an axis, and Spring joints apply a force to keep objects apart. \ No newline at end of file +Joints in game development primarily refer to the connections between two objects, often used in the context of physics simulations and character animations. These might simulate the physics of real-world joints like hinges or springs. Developers can control various characteristics of joints such as their constraints, forces, and reactions. The different types come with various properties suitable for specific needs. For example, Fixed joints keep objects together, Hinge joints allow rotation around an axis, and Spring joints apply a force to keep objects apart. + +Visit the following resources to learn more: + +- [@article@Game Character Rigging Fundamentals](https://learn.unity.com/project/game-character-rigging-fundamentals) +- [@article@Joints in Unity](https://simonpham.medium.com/joints-in-unity-f9b602212524) diff --git a/src/data/roadmaps/game-developer/content/learning@9_OcZ9rzedDFfwEYxAghh.md b/src/data/roadmaps/game-developer/content/learning@9_OcZ9rzedDFfwEYxAghh.md index e096536f6..1e1f0f663 100644 --- a/src/data/roadmaps/game-developer/content/learning@9_OcZ9rzedDFfwEYxAghh.md +++ b/src/data/roadmaps/game-developer/content/learning@9_OcZ9rzedDFfwEYxAghh.md @@ -1,3 +1,8 @@ # Learning -Machine Learning is a field of study that gives computers the ability to learn without being explicitly programmed. It is a branch of artificial intelligence based on the idea that systems can learn from data, identify patterns and make decisions with minimal human intervention. In terms of game development, machine learning can be used to create NPCs that can learn from the player's actions and adapt to them. \ No newline at end of file +Machine Learning is a field of study that gives computers the ability to learn without being explicitly programmed. It is a branch of artificial intelligence based on the idea that systems can learn from data, identify patterns and make decisions with minimal human intervention. In terms of game development, machine learning can be used to create NPCs that can learn from the player's actions and adapt to them. + +Visit the following resources to learn more: + +- [@article@Machine Learning - Wiki](https://en.wikipedia.org/wiki/Machine_learning) +- [@article@Machine Learning Explained](https://mitsloan.mit.edu/ideas-made-to-matter/machine-learning-explained) diff --git a/src/data/roadmaps/game-developer/content/light-source@VLrcBE1vb6N5fw5YESCge.md b/src/data/roadmaps/game-developer/content/light-source@VLrcBE1vb6N5fw5YESCge.md index 60673fc4b..6e06b3e8d 100644 --- a/src/data/roadmaps/game-developer/content/light-source@VLrcBE1vb6N5fw5YESCge.md +++ b/src/data/roadmaps/game-developer/content/light-source@VLrcBE1vb6N5fw5YESCge.md @@ -1,3 +1,8 @@ # Light Source -In game development, a **light source** is a critical component that impacts the visual appeal and realism of the scene. It represents any object in the game scene that emits light, such as the sun, a lamp, or a torch. Light sources can be categorized as static or dynamic. Static light sources do not move or change throughout the game, while dynamic light sources can move and their properties can change in real-time. The properties of light sources that can be manipulated include intensity (how bright the light is), color, range (how far the light extends), direction, and type (point, directional, or spot). The lighting and shading effects are then computed based on these light source properties and how they interact with various objects in the game scene. \ No newline at end of file +In game development, a **light source** is a critical component that impacts the visual appeal and realism of the scene. It represents any object in the game scene that emits light, such as the sun, a lamp, or a torch. Light sources can be categorized as static or dynamic. Static light sources do not move or change throughout the game, while dynamic light sources can move and their properties can change in real-time. The properties of light sources that can be manipulated include intensity (how bright the light is), color, range (how far the light extends), direction, and type (point, directional, or spot). The lighting and shading effects are then computed based on these light source properties and how they interact with various objects in the game scene. + +Visit the following resources to learn more: + +- [@article@The Art of Game Lighting](https://3dskillup.com/effective-lighting-for-games/) +- [@article@Lightning Game Environments](https://cgcookie.com/posts/art-of-lighting-game-environments) diff --git a/src/data/roadmaps/game-developer/content/light@_1LkU258hzizSIgXipE0b.md b/src/data/roadmaps/game-developer/content/light@_1LkU258hzizSIgXipE0b.md index e69de29bb..7e8a01a4b 100644 --- a/src/data/roadmaps/game-developer/content/light@_1LkU258hzizSIgXipE0b.md +++ b/src/data/roadmaps/game-developer/content/light@_1LkU258hzizSIgXipE0b.md @@ -0,0 +1,8 @@ +# Light + +Light refers to a visual representation of illumination in a 3D environment. It is used to simulate the way light behaves in the real world, adding depth, volume, and realism to objects and scenes. Lighting can be categorized into different types, such as ambient, diffuse, specular, and emissive, each serving a specific purpose in creating a believable and immersive visual experience. Proper lighting can greatly enhance the mood, atmosphere, and overall aesthetic of a scene, making it an essential aspect of graphics and game development. + +Visit the following resources to learn more: + +- [@article@Lightning in Game Environments](https://medium.com/my-games-company/using-light-and-color-in-game-development-a-beginners-guide-400edf4a7ae0) +- [@article@The Art of Game Lighting](https://3dskillup.com/effective-lighting-for-games/) diff --git a/src/data/roadmaps/game-developer/content/lighting-and-shadow@DDN3mn0LTueBhjRzXFcbU.md b/src/data/roadmaps/game-developer/content/lighting-and-shadow@DDN3mn0LTueBhjRzXFcbU.md index 07fb12f4d..ecdfb39f7 100644 --- a/src/data/roadmaps/game-developer/content/lighting-and-shadow@DDN3mn0LTueBhjRzXFcbU.md +++ b/src/data/roadmaps/game-developer/content/lighting-and-shadow@DDN3mn0LTueBhjRzXFcbU.md @@ -1,3 +1,9 @@ # Lighting and Shadow -**Lighting and Shadows** are paramount elements in computer graphics, significantly contributing to the visual realism of a game. They create depth and a sense of a three-dimensional space in a two-dimensional display. **Lighting** in game development mimics real-world light properties. It involves calculating how light interacts with different objects and surfaces based on their material characteristics and the light's intensity, direction, and color. Various algorithms, like Ray Tracing or Rasterization, are used to simulate these interactions. On the other hand, **shadows** are the areas unlit due to the blockage of light by an object. Producing realistic shadows involves complex computations, factoring in the light's position, the blocking object's shape and size, and the affected area's distance. Shadow Mapping and Shadow Volume are common techniques for creating shadows in game development. Special attention to these aspects can dramatically increase the perceived realism and immersion in the game environment. \ No newline at end of file +**Lighting and Shadows** are paramount elements in computer graphics, significantly contributing to the visual realism of a game. They create depth and a sense of a three-dimensional space in a two-dimensional display. **Lighting** in game development mimics real-world light properties. It involves calculating how light interacts with different objects and surfaces based on their material characteristics and the light's intensity, direction, and color. Various algorithms, like Ray Tracing or Rasterization, are used to simulate these interactions. On the other hand, **shadows** are the areas unlit due to the blockage of light by an object. Producing realistic shadows involves complex computations, factoring in the light's position, the blocking object's shape and size, and the affected area's distance. Shadow Mapping and Shadow Volume are common techniques for creating shadows in game development. Special attention to these aspects can dramatically increase the perceived realism and immersion in the game environment. + +Visit the following resources to learn more: + +- [@article@Lightning and Shadows](https://www.techspot.com/article/1998-how-to-3d-rendering-lighting-shadows/) +- [@article@The Art of Game Lighting](https://3dskillup.com/effective-lighting-for-games/) +- [@article@Introduction to Lighting in 3D Games](https://www.gridpaperstudio.com/post/introduction-to-lighting-in-3d-game-engines-a-beginner-s-guide) diff --git a/src/data/roadmaps/game-developer/content/linear-algebra@grRf-MmaXimDB4iODOV47.md b/src/data/roadmaps/game-developer/content/linear-algebra@grRf-MmaXimDB4iODOV47.md index e3611db14..fe7e6b7e5 100644 --- a/src/data/roadmaps/game-developer/content/linear-algebra@grRf-MmaXimDB4iODOV47.md +++ b/src/data/roadmaps/game-developer/content/linear-algebra@grRf-MmaXimDB4iODOV47.md @@ -2,5 +2,8 @@ Linear Algebra is a vital field in Mathematics that is extensively used in game development. It revolves around vector spaces and the mathematical structures used therein, including matrices, determinants, vectors, eigenvalues, and eigenvectors, among others. In the context of game development, linear algebra is used mainly for computer graphics, physics, AI, and many more. It allows developers to work with spatial transformations, helping them manipulate and critically interact with the 3D space of the game. On a broader context, it is important in computer programming for algorithms, parallax shifting, polygonal modeling, collision detection, etc. From object movements, positional calculations, game physics, to creating dynamism in games, linear algebra is key. -- [@video@Linear Algebra full course by Kimberly Brehm](https://youtube.com/playlist?list=PLl-gb0E4MII03hiCrZa7YqxUMEeEPmZqK\&si=_r0WDwh94NKJbs_R) +Visit the following resources to learn more: + +- [@article@Linear Algebra](https://en.wikipedia.org/wiki/Linear_algebra) +- [@video@Linear Algebra Full Course by Kimberly Brehm](https://youtube.com/playlist?list=PLl-gb0E4MII03hiCrZa7YqxUMEeEPmZqK\&si=_r0WDwh94NKJbs_R) - [@feed@Explore top posts about Math](https://app.daily.dev/tags/math?ref=roadmapsh) diff --git a/src/data/roadmaps/game-developer/content/linear-transformation@XABzEU9owCx9-zw1id9xU.md b/src/data/roadmaps/game-developer/content/linear-transformation@XABzEU9owCx9-zw1id9xU.md index 98290e14e..701c67ce9 100644 --- a/src/data/roadmaps/game-developer/content/linear-transformation@XABzEU9owCx9-zw1id9xU.md +++ b/src/data/roadmaps/game-developer/content/linear-transformation@XABzEU9owCx9-zw1id9xU.md @@ -1,3 +1,8 @@ # Linear Transformation -`Linear transformations` or `linear maps` are an important concept in mathematics, particularly in the fields of linear algebra and functional analysis. A linear transformation can be thought of as a transformation that preserves the operations of addition and scalar multiplication. In other words, a transformation T is linear if for every pair of vectors `x` and `y`, the equation T(x + y) = T(x) + T(y) holds true. Similarly, for any scalar `c` and any vector `x`, the equation T(cx)=cT(x) should also hold true. This property makes them very useful when dealing with systems of linear equations, matrices, and in many areas of computer graphics, including game development. \ No newline at end of file +`Linear transformations` or `linear maps` are an important concept in mathematics, particularly in the fields of linear algebra and functional analysis. A linear transformation can be thought of as a transformation that preserves the operations of addition and scalar multiplication. In other words, a transformation T is linear if for every pair of vectors `x` and `y`, the equation `T(x + y) = T(x) + T(y)` holds true. Similarly, for any scalar `c` and any vector `x`, the equation `T(cx)=cT(x)` should also hold true. This property makes them very useful when dealing with systems of linear equations, matrices, and in many areas of computer graphics, including game development. + +Visit the following resources to learn more: + +- [@article@Linear Transformation](https://en.wikipedia.org/wiki/Linear_map) +- [@feed@Explore top posts about Math](https://app.daily.dev/tags/math?ref=roadmapsh) diff --git a/src/data/roadmaps/game-developer/content/linear-velocity@Z_U6abGV_wVkTGZ2LVkFK.md b/src/data/roadmaps/game-developer/content/linear-velocity@Z_U6abGV_wVkTGZ2LVkFK.md index 27bc4a9ba..33390e0a6 100644 --- a/src/data/roadmaps/game-developer/content/linear-velocity@Z_U6abGV_wVkTGZ2LVkFK.md +++ b/src/data/roadmaps/game-developer/content/linear-velocity@Z_U6abGV_wVkTGZ2LVkFK.md @@ -1,3 +1,8 @@ # Linear Velocity -**Linear Velocity** is a fundamental concept in physics that is extensively used in game development. It refers to the rate of change of an object's position with respect to a frame of reference. It's calculated by dividing the change in position by the change in time, often represented with the vector 'v'. In game development, an object's linear velocity can be manipulated to control its speed and direction. This is especially important in the development of physics simulations or movement-dependent gameplay elements. For instance, it can be used to make a character run or drive, or to throw an object at different speeds and directions. \ No newline at end of file +**Linear Velocity** is a fundamental concept in physics that is extensively used in game development. It refers to the rate of change of an object's position with respect to a frame of reference. It's calculated by dividing the change in position by the change in time, often represented with the vector 'v'. In game development, an object's linear velocity can be manipulated to control its speed and direction. This is especially important in the development of physics simulations or movement-dependent gameplay elements. For instance, it can be used to make a character run or drive, or to throw an object at different speeds and directions. + +Visit the following resources to learn more: + +- [@article@Linear Velocity](https://byjus.com/physics/linear-velocity/) +- [@feed@Explore top posts about Math](https://app.daily.dev/tags/math?ref=roadmapsh) diff --git a/src/data/roadmaps/game-developer/content/mapping@THMmnx8p_P0X-dSPoHvst.md b/src/data/roadmaps/game-developer/content/mapping@THMmnx8p_P0X-dSPoHvst.md index e9a3c2b7f..e36bcb98e 100644 --- a/src/data/roadmaps/game-developer/content/mapping@THMmnx8p_P0X-dSPoHvst.md +++ b/src/data/roadmaps/game-developer/content/mapping@THMmnx8p_P0X-dSPoHvst.md @@ -1,7 +1,8 @@ # Mapping -"Mapping" in game development, especially in the context of shaders, predominantly refers to Texture Mapping and Normal Mapping. +"Mapping" in game development, especially in the context of shaders, predominantly refers to Texture Mapping and Normal Mapping. **Texture Mapping** is the application of a texture (an image or colour data) onto a 3D model's surface. It's a process of defining how a 2D surface wraps around a 3D model or the way that a flat image is stretched across a model's surface to paint its appearance. This could be anything from the colour of objects to their roughness or reflectivity. Whereas, **Normal Mapping** is a technique used to create the illusion of complexity in the surface of a 3D model without adding any additional geometry. A Normal Map is a special kind of texture that allows the addition of surface details, such as bumps, grooves, and scratches which catch the light as if they are represented by real geometry, making a low-polygon model appear as a much more complex shape. -- **Texture Mapping**: This is the application of a texture (an image or colour data) onto a 3D model's surface. It's a process of defining how a 2D surface wraps around a 3D model or the way that a flat image is stretched across a model's surface to paint its appearance. This could be anything from the colour of objects to their roughness or reflectivity. +Visit the following resources to learn more: -- **Normal Mapping**: This is a technique used to create the illusion of complexity in the surface of a 3D model without adding any additional geometry. A Normal Map is a special kind of texture that allows the addition of surface details, such as bumps, grooves, and scratches which catch the light as if they are represented by real geometry, making a low-polygon model appear as a much more complex shape. \ No newline at end of file +- [@article@Designing Maps](https://www.gamedeveloper.com/design/designing-maps-that-complement-game-mechanics) +- [@article@Mapping and Tiles in Game Development](https://code.tutsplus.com/an-introduction-to-creating-a-tile-map-engine--gamedev-10900t) diff --git a/src/data/roadmaps/game-developer/content/markov-system@c6j-30p84vk3MZEF1R2hN.md b/src/data/roadmaps/game-developer/content/markov-system@c6j-30p84vk3MZEF1R2hN.md index 3e5ce17c7..e0951b88a 100644 --- a/src/data/roadmaps/game-developer/content/markov-system@c6j-30p84vk3MZEF1R2hN.md +++ b/src/data/roadmaps/game-developer/content/markov-system@c6j-30p84vk3MZEF1R2hN.md @@ -1,3 +1,8 @@ # Markov System -A **Markov System** or **Markov Chain** represents a statistical model that is used in decision-making scenarios within game development. This model is based on the notion of "memorylessness" where a certain event's probability depends solely on the state attained in the previous event. It employs a sequence of possible events where the probability of each event hinges on the state achieved in the previous event. A common usage of a Markov System is in designing AI behavior within games, where each state symbolizes a different behavior, and transitions between them are governed by the Markov chain probabilities. \ No newline at end of file +A **Markov System** or **Markov Chain** represents a statistical model that is used in decision-making scenarios within game development. This model is based on the notion of "memorylessness" where a certain event's probability depends solely on the state attained in the previous event. It employs a sequence of possible events where the probability of each event hinges on the state achieved in the previous event. A common usage of a Markov System is in designing AI behavior within games, where each state symbolizes a different behavior, and transitions between them are governed by the Markov chain probabilities. + +Visit the following resources to learn more: + +- [@article@Markov System](https://towardsdatascience.com/modeling-games-with-markov-chains-c7b614731a7f) +- [@article@Using Markov Chain in Game Development](https://www.gamedeveloper.com/design/advanced-math-in-game-design-random-walks-and-markov-chains-in-action) diff --git a/src/data/roadmaps/game-developer/content/matrix@Kg6Mg9ieUUGXWX9Lai7B0.md b/src/data/roadmaps/game-developer/content/matrix@Kg6Mg9ieUUGXWX9Lai7B0.md index a1a40b7f7..e02d4818e 100644 --- a/src/data/roadmaps/game-developer/content/matrix@Kg6Mg9ieUUGXWX9Lai7B0.md +++ b/src/data/roadmaps/game-developer/content/matrix@Kg6Mg9ieUUGXWX9Lai7B0.md @@ -1,3 +1,8 @@ # Matrix -In game development, a **matrix** is a fundamental part of game mathematics. It's a grid of numbers arranged into rows and columns that's particularly important in 3D game development. These matrices are typically 4x4, meaning they contain 16 floating point numbers, and they're used extensively for transformations. They allow for the scaling, rotation, and translation (moving) of 3D vertices in space. With matrices, these transformations can be combined, and transformed vertices can be used to draw the replicas of 3D models into 2D screen space for rendering. \ No newline at end of file +In game development, a **matrix** is a fundamental part of game mathematics. It's a grid of numbers arranged into rows and columns that's particularly important in 3D game development. These matrices are typically 4x4, meaning they contain 16 floating point numbers, and they're used extensively for transformations. They allow for the scaling, rotation, and translation (moving) of 3D vertices in space. With matrices, these transformations can be combined, and transformed vertices can be used to draw the replicas of 3D models into 2D screen space for rendering. + +Visit the following resources to learn more: + +- [@article@Matrix Algebra and Game Programming](https://www.gameludere.com/2019/12/21/matrix-algebra-and-game-programming/) +- [@article@Matrices in Game Development](https://dev.to/fkkarakurt/matrices-and-vectors-in-game-development-67h) diff --git a/src/data/roadmaps/game-developer/content/mcts@QD9TfZn3yhGPVwiyJ6d0V.md b/src/data/roadmaps/game-developer/content/mcts@QD9TfZn3yhGPVwiyJ6d0V.md index ea6cc80a9..21ec4023d 100644 --- a/src/data/roadmaps/game-developer/content/mcts@QD9TfZn3yhGPVwiyJ6d0V.md +++ b/src/data/roadmaps/game-developer/content/mcts@QD9TfZn3yhGPVwiyJ6d0V.md @@ -1,3 +1,8 @@ # MCTS -"MCTS", or Monte Carlo Tree Search, is a search algorithm that utilizes methods of decision-making to solve complex problems, commonly implemented in a range of applications, including board games. It essentially operates through building a search tree, node by node, for probable states of a game and then using Monte Carlo simulations to provide a statistical analysis of potential outcomes. It randomly generates moves using the game's determined rules, then makes decisions based on the results of these simulations. In board games, it's often used to determine AI decisions by simulating possible game scenarios, hence contributing to making the AI system more robust and challenging. \ No newline at end of file +"MCTS", or Monte Carlo Tree Search, is a search algorithm that utilizes methods of decision-making to solve complex problems, commonly implemented in a range of applications, including board games. It essentially operates through building a search tree, node by node, for probable states of a game and then using Monte Carlo simulations to provide a statistical analysis of potential outcomes. It randomly generates moves using the game's determined rules, then makes decisions based on the results of these simulations. In board games, it's often used to determine AI decisions by simulating possible game scenarios, hence contributing to making the AI system more robust and challenging. + +Visit the following resources to learn more: + +- [@article@MCTS Algorithm](https://en.wikipedia.org/wiki/Monte_Carlo_tree_search/) +- [@article@Monte Carlo Tree Search](https://www.geeksforgeeks.org/ml-monte-carlo-tree-search-mcts/) diff --git a/src/data/roadmaps/game-developer/content/metal@oEznLciLxZJaulMlBGgg4.md b/src/data/roadmaps/game-developer/content/metal@oEznLciLxZJaulMlBGgg4.md index 7461f9785..e73fe7fb3 100644 --- a/src/data/roadmaps/game-developer/content/metal@oEznLciLxZJaulMlBGgg4.md +++ b/src/data/roadmaps/game-developer/content/metal@oEznLciLxZJaulMlBGgg4.md @@ -2,4 +2,4 @@ Metal is a low-level, high-performance, application programming interface (API) developed by Apple. It debuted in iOS 8 and is dedicated to graphics and data-parallel computations. Essentially, it's designed to exploit modern GPU architecture on Apple devices, optimizing performance and power efficiency. This API applies to various platforms, including iOS, macOS, and tvOS. In contrast to high-level APIs like OpenGL, Metal offers a much lower overhead, allowing more direct control over the GPU. For developers, it means that they can squeeze better performance out of the hardware compared to higher-level APIs. With Metal, developers have a much more detailed view and control on the GPU which results in better graphical output and smoother performance. -- [@official@Metal Documentation](https://developer.apple.com/metal/) \ No newline at end of file +- [@official@Metal Documentation](https://developer.apple.com/metal/) diff --git a/src/data/roadmaps/game-developer/content/metallicity@olY1ibR7kw1yJ58TfU-37.md b/src/data/roadmaps/game-developer/content/metallicity@olY1ibR7kw1yJ58TfU-37.md index dba5ddeb6..f27113b69 100644 --- a/src/data/roadmaps/game-developer/content/metallicity@olY1ibR7kw1yJ58TfU-37.md +++ b/src/data/roadmaps/game-developer/content/metallicity@olY1ibR7kw1yJ58TfU-37.md @@ -1,3 +1,8 @@ # Metallicity -In Physically Based Rendering (PBR), **Metallicity** is a critical property of a material, which influences how it interacts with light. It's a binary property, indicating whether the material is a 'metal' or 'non-metal'. Metals have a high metallicity value (often 1), non-metals (such as wood, plastic, etc.) have a low metallicity value (often 0). Interestingly, with PBR, there exists no 'partially metal' materials ― it's an all or nothing characteristic. This property significantly impacts color handling, too, as metals derive their color from specular reflection while non-metals derive from subsurface scattering (diffuse). \ No newline at end of file +In Physically Based Rendering (PBR), **Metallicity** is a critical property of a material, which influences how it interacts with light. It's a binary property, indicating whether the material is a 'metal' or 'non-metal'. Metals have a high metallicity value (often 1), non-metals (such as wood, plastic, etc.) have a low metallicity value (often 0). Interestingly, with PBR, there exists no 'partially metal' materials ― it's an all or nothing characteristic. This property significantly impacts color handling, too, as metals derive their color from specular reflection while non-metals derive from subsurface scattering (diffuse). + +Visit the following resources to learn more: + +- [@article@Metallicty in PBR](https://en.wikipedia.org/wiki/Physically_based_rendering) +- [@article@What is PBR in 3D Games](https://www.adobe.com/products/substance3d/discover/pbr.html) diff --git a/src/data/roadmaps/game-developer/content/microsurface-scattering@YrQgfjsdLCIUxrwflpEHO.md b/src/data/roadmaps/game-developer/content/microsurface-scattering@YrQgfjsdLCIUxrwflpEHO.md index 80d03a93c..ffd361136 100644 --- a/src/data/roadmaps/game-developer/content/microsurface-scattering@YrQgfjsdLCIUxrwflpEHO.md +++ b/src/data/roadmaps/game-developer/content/microsurface-scattering@YrQgfjsdLCIUxrwflpEHO.md @@ -4,4 +4,6 @@ Microsurface scattering, also known as sub-surface scattering, is an important p Visit the following resources to learn more: -- [@video@The 4 main types of subsurface scattering](https://www.youtube.com/watch?v=GkjvYSbGHg4) \ No newline at end of file +- [@article@Subsurface Rendering](https://gamedev.net/forums/topic/600708-subsurface-scattering/) +- [@article@Real Time Sub Surface Rendering](https://therealmjp.github.io/posts/sss-intro/) +- [@video@Types of Subsurface Scattering](https://www.youtube.com/watch?v=GkjvYSbGHg4) diff --git a/src/data/roadmaps/game-developer/content/minimax@oOjGqicW3eqRwWyIwJdBA.md b/src/data/roadmaps/game-developer/content/minimax@oOjGqicW3eqRwWyIwJdBA.md index 232e935e5..87a49b810 100644 --- a/src/data/roadmaps/game-developer/content/minimax@oOjGqicW3eqRwWyIwJdBA.md +++ b/src/data/roadmaps/game-developer/content/minimax@oOjGqicW3eqRwWyIwJdBA.md @@ -1,3 +1,7 @@ # Minimax -`Minimax` is an artificial intelligence (AI) decision-making algorithm mainly used in decision making and game theory, particularly for two player zero-sum games. It formulates a strategy by simulating all possible game scenarios and assuming that the opponent is playing an optimal game. Minimax operates by the player minimizing the possible loss for a worst case scenario and thus making the 'maximum of the minimum' possible scenarios. This algorithm is often combined with `alpha-beta pruning` technique to increase its efficiency. \ No newline at end of file +`Minimax` is an artificial intelligence (AI) decision-making algorithm mainly used in decision making and game theory, particularly for two player zero-sum games. It formulates a strategy by simulating all possible game scenarios and assuming that the opponent is playing an optimal game. Minimax operates by the player minimizing the possible loss for a worst case scenario and thus making the 'maximum of the minimum' possible scenarios. This algorithm is often combined with `alpha-beta pruning` technique to increase its efficiency. + +Visit the following resources to learn more: + +- [@article@Minimax](https://en.wikipedia.org/wiki/Minimax) diff --git a/src/data/roadmaps/game-developer/content/moment-of-inertia@6E2mkXuAzoYnrT1SEIA16.md b/src/data/roadmaps/game-developer/content/moment-of-inertia@6E2mkXuAzoYnrT1SEIA16.md index 8e1daa700..6e2df0a3b 100644 --- a/src/data/roadmaps/game-developer/content/moment-of-inertia@6E2mkXuAzoYnrT1SEIA16.md +++ b/src/data/roadmaps/game-developer/content/moment-of-inertia@6E2mkXuAzoYnrT1SEIA16.md @@ -1,3 +1,7 @@ # Moment of Inertia -The **moment of inertia**, also known as rotational inertia, is a measure of an object's resistance to changes to its rotation. In simpler terms, it's essentially how difficult it is to start or stop an object from spinning. It is determined by both the mass of an object and its distribution of mass around the axis of rotation. In the context of game development, the moment of inertia is crucial for creating realistic movements of characters, objects or vehicles within the game. This is particularly relevant in scenarios where the motion involves spinning or revolving entities. Calculating and applying these physics ensures a more immersive and believable gaming experience. \ No newline at end of file +The **moment of inertia**, also known as rotational inertia, is a measure of an object's resistance to changes to its rotation. In simpler terms, it's essentially how difficult it is to start or stop an object from spinning. It is determined by both the mass of an object and its distribution of mass around the axis of rotation. In the context of game development, the moment of inertia is crucial for creating realistic movements of characters, objects or vehicles within the game. This is particularly relevant in scenarios where the motion involves spinning or revolving entities. Calculating and applying these physics ensures a more immersive and believable gaming experience. + +Visit the following resources to learn more: + +- [@article@Moment of Inertia](https://en.wikipedia.org/wiki/Moment_of_inertia) diff --git a/src/data/roadmaps/game-developer/content/movement@mUyzX-DXnIKDl-r9o8d38.md b/src/data/roadmaps/game-developer/content/movement@mUyzX-DXnIKDl-r9o8d38.md index 25a914ffe..001bc27b2 100644 --- a/src/data/roadmaps/game-developer/content/movement@mUyzX-DXnIKDl-r9o8d38.md +++ b/src/data/roadmaps/game-developer/content/movement@mUyzX-DXnIKDl-r9o8d38.md @@ -1,3 +1,7 @@ # Movement -In the context of game development and game API (Application Programming Interface), movement refers to the process of changing the position or orientation of game objects. This involves using programming functions to control objects' movement like walk, run, jump, fly, or any such physical action in the game world. Movement is at the core to creating the dynamics of a game and is critical to both game physics and game logic. Different game engines offer different ways for handling movement. In some APIs, this process could be as simple as setting a new position directly, such as `object.position = new Vector3(5, 10, 0)`. Meanwhile, in others, more complex methods involving real-world physics are required, such as applying forces or altering velocity. \ No newline at end of file +In the context of game development and game API (Application Programming Interface), movement refers to the process of changing the position or orientation of game objects. This involves using programming functions to control objects' movement like walk, run, jump, fly, or any such physical action in the game world. Movement is at the core to creating the dynamics of a game and is critical to both game physics and game logic. Different game engines offer different ways for handling movement. In some APIs, this process could be as simple as setting a new position directly, such as `object.position = new Vector3(5, 10, 0)`. Meanwhile, in others, more complex methods involving real-world physics are required, such as applying forces or altering velocity. + +Visit the following resources to learn more: + +- [@article@Movement in Games](https://www.gamedeveloper.com/design/analyzing-core-character-movement-in-3d) diff --git a/src/data/roadmaps/game-developer/content/naive-bayes-classifier@aw1BAGqrdBBmUwB6vMF_A.md b/src/data/roadmaps/game-developer/content/naive-bayes-classifier@aw1BAGqrdBBmUwB6vMF_A.md index 3723e550b..e964a510a 100644 --- a/src/data/roadmaps/game-developer/content/naive-bayes-classifier@aw1BAGqrdBBmUwB6vMF_A.md +++ b/src/data/roadmaps/game-developer/content/naive-bayes-classifier@aw1BAGqrdBBmUwB6vMF_A.md @@ -1,3 +1,8 @@ # Naive Bayes Classifier The Naive Bayes Classifier is a type of probabalistic machine learning model that is utilized for classification tasks. These tasks can range from email filtering to sentiment analysis or even document categorization. This model is termed 'naive' because it operates under the assumption that each input feature is independent from one another. This simplifying assumption allows for the computation of the probabilities involved to be severely less complicated. It follows the Bayes' Theorem equation to predict the class of the given data point. While this classifier might seem simplistic, it holds its own quite well in complex real-world situations. Due to its simplicity and high efficiency, the Naive Bayes Classifier is one of the most reliable and practical methods in machine learning applications. + +Visit the following resources to learn more: + +- [@article@How Naive Bayes Classifier Works?](https://www.machinelearningplus.com/predictive-modeling/how-naive-bayes-algorithm-works-with-example-and-full-code/) +- [@article@Text Classification With Naive Bayes Classifier](https://gamedevacademy.org/text-classification-tutorial-with-naive-bayes/) diff --git a/src/data/roadmaps/game-developer/content/narrow-phase@SuemqQuiePab0Qpm2EGy9.md b/src/data/roadmaps/game-developer/content/narrow-phase@SuemqQuiePab0Qpm2EGy9.md index 68b3413b5..fbc9e8892 100644 --- a/src/data/roadmaps/game-developer/content/narrow-phase@SuemqQuiePab0Qpm2EGy9.md +++ b/src/data/roadmaps/game-developer/content/narrow-phase@SuemqQuiePab0Qpm2EGy9.md @@ -1,3 +1,7 @@ # Narrow Phase -The **Narrow Phase** of collision detection is a process that dives deeply into detailed collision checks for pairs of objects that are already found to be potentially colliding during the broad phase. Narrow phase is essentially a fine-tuning process. Upon positive detection from the broad phase, it identifies the precise points of collision between the two objects, and it may involve more detailed shape representations and more expensive algorithms. It might also calculate additional information necessary for the physics simulation (like the exact time of impact and contact normals). The usual methods used for this phase involve bounding box, bounding sphere or separating axis theorem. However, the method can vary depending on the complexity of shapes of objects and the specific needs of the game. \ No newline at end of file +The **Narrow Phase** of collision detection is a process that dives deeply into detailed collision checks for pairs of objects that are already found to be potentially colliding during the broad phase. Narrow phase is essentially a fine-tuning process. Upon positive detection from the broad phase, it identifies the precise points of collision between the two objects, and it may involve more detailed shape representations and more expensive algorithms. It might also calculate additional information necessary for the physics simulation (like the exact time of impact and contact normals). The usual methods used for this phase involve bounding box, bounding sphere or separating axis theorem. However, the method can vary depending on the complexity of shapes of objects and the specific needs of the game. + +Visit the following resources to learn more: + +- [@article@Narrow Phase in Game Development](https://rocketbrush.com/blog/game-development-process-guide) diff --git a/src/data/roadmaps/game-developer/content/native@CeAUEN233L4IoFSZtIvvl.md b/src/data/roadmaps/game-developer/content/native@CeAUEN233L4IoFSZtIvvl.md index 03b8e46fc..80952b0e8 100644 --- a/src/data/roadmaps/game-developer/content/native@CeAUEN233L4IoFSZtIvvl.md +++ b/src/data/roadmaps/game-developer/content/native@CeAUEN233L4IoFSZtIvvl.md @@ -1,3 +1,10 @@ # Native -You don't necessarily have to use tools like Unreal, Unity3d, or Godot to make games. You can also use native languages like C++ or Rust to make games. However, you will have to do a lot of work yourself, and you will have to learn a lot of things that are already done for you in game engines. \ No newline at end of file +You don't necessarily have to use tools like Unreal, Unity3d, or Godot to make games. You can also use native languages like C++ or Rust to make games. However, you will have to do a lot of work yourself, and you will have to learn a lot of things that are already done for you in game engines. + +Visit the following resources to learn more: + +- [@roadmap@Visit Dedicated C++ Roadmap](https://roadmap.sh/cpp) +- [@roadmap@Visit Dedicated Rust Roadmap](https://roadmap.sh/rust) +- [@article@Learn Game Development with C++](https://learn.microsoft.com/en-us/cpp/overview/game-development-cpp?view=msvc-170) +- [@article@Building Games with Rust](https://rustmeup.com/building-games-with-rust) diff --git a/src/data/roadmaps/game-developer/content/obb@7nGtvbxoEAheiF4IPMfPf.md b/src/data/roadmaps/game-developer/content/obb@7nGtvbxoEAheiF4IPMfPf.md index f203a7495..39f824582 100644 --- a/src/data/roadmaps/game-developer/content/obb@7nGtvbxoEAheiF4IPMfPf.md +++ b/src/data/roadmaps/game-developer/content/obb@7nGtvbxoEAheiF4IPMfPf.md @@ -1,3 +1,8 @@ # OBB -`Oriented Bounding Box (OBB)` is a type of bounding volume used in computer graphics and computational geometry. It is often used to simplify complex geometric objects by correlating them as a box much closer in size and orientation to the actual object. Unlike the `Axis-Aligned Bounding Box (AABB)`, the `OBB` is not constrained to align with the axis, so the box can be rotated. This orientation is usually chosen based on the object's local coordinate system, so the `OBB` maintains its rotation. Properties of an `OBB` include its center, dimensions, and orientation. However, it is worth noting that `OBBs` can be more computationally intensive than `AABBs` due to mathematical complexity. \ No newline at end of file +`Oriented Bounding Box (OBB)` is a type of bounding volume used in computer graphics and computational geometry. It is often used to simplify complex geometric objects by correlating them as a box much closer in size and orientation to the actual object. Unlike the `Axis-Aligned Bounding Box (AABB)`, the `OBB` is not constrained to align with the axis, so the box can be rotated. This orientation is usually chosen based on the object's local coordinate system, so the `OBB` maintains its rotation. Properties of an `OBB` include its center, dimensions, and orientation. However, it is worth noting that `OBBs` can be more computationally intensive than `AABBs` due to mathematical complexity. + +Visit the following resources to learn more: + +- [@article@OBB vs OBB Collision Detection](https://gamedev.stackexchange.com/questions/25397/obb-vs-obb-collision-detection) +- [@article@Oriented Bounding Box](https://gamedev.stackexchange.com/questions/49041/oriented-bounding-box-how-to) diff --git a/src/data/roadmaps/game-developer/content/occluder@MlLYqO_8JDNOwKRvaM-bf.md b/src/data/roadmaps/game-developer/content/occluder@MlLYqO_8JDNOwKRvaM-bf.md index b174cad5a..4ee4b6e83 100644 --- a/src/data/roadmaps/game-developer/content/occluder@MlLYqO_8JDNOwKRvaM-bf.md +++ b/src/data/roadmaps/game-developer/content/occluder@MlLYqO_8JDNOwKRvaM-bf.md @@ -1,3 +1,8 @@ # Occluder -An **Occluder** in game development is basically a tool or method used to hide other objects in the game environment. When a certain object, which is known as the occluder, blocks the line of sight to another object from the camera's perspective, the hidden or blocked object does not need to be rendered. This object could be anything from a building to a terrain feature. The process of managing these occluders is known as occlusion culling. The purpose of using occluders is to optimize the game and improve its performance by reducing unnecessary rendering workload. However, it's important to note that setting up occluders requires careful planning to ensure that it does not impact the gameplay or visual quality. \ No newline at end of file +An **Occluder** in game development is basically a tool or method used to hide other objects in the game environment. When a certain object, which is known as the occluder, blocks the line of sight to another object from the camera's perspective, the hidden or blocked object does not need to be rendered. This object could be anything from a building to a terrain feature. The process of managing these occluders is known as occlusion culling. The purpose of using occluders is to optimize the game and improve its performance by reducing unnecessary rendering workload. However, it's important to note that setting up occluders requires careful planning to ensure that it does not impact the gameplay or visual quality. + +Visit the following resources to learn more: + +- [@article@Occluder and How to Use Them](https://80.lv/articles/occluders-and-how-to-use-them-for-level-design/) +- [@article@Occlusion Culling Tutorial](https://thegamedev.guru/unity-performance/occlusion-culling-tutorial/) diff --git a/src/data/roadmaps/game-developer/content/opengl-es@EVOiWAeZsIvjLTt3EYu-6.md b/src/data/roadmaps/game-developer/content/opengl-es@EVOiWAeZsIvjLTt3EYu-6.md index 5ebe035ad..f6e43c04b 100644 --- a/src/data/roadmaps/game-developer/content/opengl-es@EVOiWAeZsIvjLTt3EYu-6.md +++ b/src/data/roadmaps/game-developer/content/opengl-es@EVOiWAeZsIvjLTt3EYu-6.md @@ -1,3 +1,8 @@ # OpenGL ES -OpenGL ES (Open Graphics Library for Embedded Systems) is a simplified version of OpenGL, designed for use on systems with lower computational power, such as mobile devices and embedded systems. Despite its semantic simplifications, OpenGL ES still retains high versatility and capability, allowing for high-performance 2D and 3D graphics on these smaller, less powerful systems. OpenGL ES has become particularly popular in mobile game development, with major platforms like Android and iOS providing full support for it. The API is divided into several versions, the latest of which, OpenGL ES 3.2, was released in 2016. \ No newline at end of file +OpenGL ES (Open Graphics Library for Embedded Systems) is a simplified version of OpenGL, designed for use on systems with lower computational power, such as mobile devices and embedded systems. Despite its semantic simplifications, OpenGL ES still retains high versatility and capability, allowing for high-performance 2D and 3D graphics on these smaller, less powerful systems. OpenGL ES has become particularly popular in mobile game development, with major platforms like Android and iOS providing full support for it. The API is divided into several versions, the latest of which, OpenGL ES 3.2, was released in 2016. + +Visit the following resources to learn more: + +- [@article@LVGL — Light and Versatile Embedded Graphics Library](https://lvgl.io/) +- [@article@Embedded Lighting](http://embeddedlightning.com/ugui/) diff --git a/src/data/roadmaps/game-developer/content/opengl@ffa5-YxRhE3zhWg7KXQ4r.md b/src/data/roadmaps/game-developer/content/opengl@ffa5-YxRhE3zhWg7KXQ4r.md index 78274128d..1f8d2bdc7 100644 --- a/src/data/roadmaps/game-developer/content/opengl@ffa5-YxRhE3zhWg7KXQ4r.md +++ b/src/data/roadmaps/game-developer/content/opengl@ffa5-YxRhE3zhWg7KXQ4r.md @@ -2,4 +2,8 @@ Open GL, also known as Open Graphics Library, is a cross-language, cross-platform API designed to render 2D and 3D vector graphics. As a software interface for graphics hardware, Open GL provides programmers the ability to create complex graphics visuals in detail. It was first developed by Silicon Graphics Inc. in 1992 and quickly became a highly popular tool in the graphics rendering industry. Open GL is widely used in CAD, virtual reality, scientific visualization, information visualization, and flight simulation. It is also used in video games production where real-time rendering is a requirement. The API is designed to work with a broad range of hardware from different manufacturers. Being open-source, Open GL's code capabilities can be extended by anyone in the software community. -- [@video@OpenGL Tutorials](https://youtube.com/playlist?list=PLPaoO-vpZnumdcb4tZc4x5Q-v7CkrQ6M-&si=Mr71bYJMgoDhN9h-) \ No newline at end of file +Visit the following resources to learn more: + +- [@official@Open Graphics Library](https://www.opengl.org/) +- [@official@OpenGL Libraries](https://www.opengl.org/sdk/libs/) +- [@video@OpenGL Tutorials](https://youtube.com/playlist?list=PLPaoO-vpZnumdcb4tZc4x5Q-v7CkrQ6M-&si=Mr71bYJMgoDhN9h-) diff --git a/src/data/roadmaps/game-developer/content/optix@GDLysy3__cbYidEaOmFze.md b/src/data/roadmaps/game-developer/content/optix@GDLysy3__cbYidEaOmFze.md index fd1533c8f..fe49a2ed2 100644 --- a/src/data/roadmaps/game-developer/content/optix@GDLysy3__cbYidEaOmFze.md +++ b/src/data/roadmaps/game-developer/content/optix@GDLysy3__cbYidEaOmFze.md @@ -1,3 +1,8 @@ # OptiX -`OptiX` is an application framework developed by NVIDIA for achieving high performance ray tracing in graphics processing unit (GPU) programming. It's mainly intended for use in real-time graphics application, scientific simulations, and other visual computing applications. `OptiX` provides key functionalities such as hierarchical object acceleration, programmable ray generation, material shading, and dynamic scene management to achieve fast and state-of-the-art rendering. This highly efficient, scalable and flexible API supports the coding of applications, not just for graphic rendering but also for collision detection and physics simulation. Please note that access to `OptiX` currently requires NVIDIA GeForce, Quadro and Tesla products with Kepler, Maxwell, Pascal, Volta, Turing and later generation GPUs. \ No newline at end of file +`OptiX` is an application framework developed by NVIDIA for achieving high performance ray tracing in graphics processing unit (GPU) programming. It's mainly intended for use in real-time graphics application, scientific simulations, and other visual computing applications. `OptiX` provides key functionalities such as hierarchical object acceleration, programmable ray generation, material shading, and dynamic scene management to achieve fast and state-of-the-art rendering. This highly efficient, scalable and flexible API supports the coding of applications, not just for graphic rendering but also for collision detection and physics simulation. Please note that access to `OptiX` currently requires NVIDIA GeForce, Quadro and Tesla products with Kepler, Maxwell, Pascal, Volta, Turing and later generation GPUs. + +Visit the following resources to learn more: + +- [@official@OptiX by Nvidia](https://developer.nvidia.com/optix/) +- [@official@OptiX API Documentation](https://developer.nvidia.com/rtx/ray-tracing/optix) diff --git a/src/data/roadmaps/game-developer/content/orientation@iIWEjpkNFBj4R5wQ0mcWY.md b/src/data/roadmaps/game-developer/content/orientation@iIWEjpkNFBj4R5wQ0mcWY.md index 53cfeb333..36df1aade 100644 --- a/src/data/roadmaps/game-developer/content/orientation@iIWEjpkNFBj4R5wQ0mcWY.md +++ b/src/data/roadmaps/game-developer/content/orientation@iIWEjpkNFBj4R5wQ0mcWY.md @@ -1,3 +1,8 @@ # Orientation In the context of game development, **Orientation** refers to the aspect or direction in which an object is pointed in a 3D space. To determine an object's orientation in 3D space, we typically use three angles namely: pitch, yaw, and roll collectively known as Euler's angles. **Pitch** is the rotation around the X-axis, **Yaw** around the Y-axis and **Roll** around the Z-axis. Alternatively, orientation can also be represented using a Quaternion. Quaternions have the advantage of avoiding a problem known as Gimbal lock (a loss of one degree of freedom in 3D space), present when using Euler's angles. + +Visit the following resources to learn more: + +- [@article@Orientation of Character](https://medium.com/@dev.szabo.endre/a-bit-e-of-game-dev-math-01-character-movement-with-vectors-effc862a1e4f) +- [@article@Vector Maths for Game Developers](https://www.gamedeveloper.com/programming/vector-maths-for-game-dev-beginners) diff --git a/src/data/roadmaps/game-developer/content/orthogonal@d6C1qFv-Tad3AtMBDLI6r.md b/src/data/roadmaps/game-developer/content/orthogonal@d6C1qFv-Tad3AtMBDLI6r.md index b3c69c369..776eafd84 100644 --- a/src/data/roadmaps/game-developer/content/orthogonal@d6C1qFv-Tad3AtMBDLI6r.md +++ b/src/data/roadmaps/game-developer/content/orthogonal@d6C1qFv-Tad3AtMBDLI6r.md @@ -1,3 +1,7 @@ # Orthogonal -Orthogonal projection, or orthographic projection, is a type of parallelogram projection in game development where the lines of projection are perpendicular to the projection plane. This creates a view that is straight-on, essentially removing any form of perspective. Unlike perspective projection where objects further from the viewer appear smaller, objects in orthogonal projection remain the same size regardless of distance. The lack of perspective in orthogonal projection can be useful for specific types of games like platformers or strategy games. It is commonly used in CAD (Computer-Aided Design) and technical drawings as well. \ No newline at end of file +Orthogonal projection, or orthographic projection, is a type of parallelogram projection in game development where the lines of projection are perpendicular to the projection plane. This creates a view that is straight-on, essentially removing any form of perspective. Unlike perspective projection where objects further from the viewer appear smaller, objects in orthogonal projection remain the same size regardless of distance. The lack of perspective in orthogonal projection can be useful for specific types of games like platformers or strategy games. It is commonly used in CAD (Computer-Aided Design) and technical drawings as well. + +Visit the following resources to learn more: + +- [@article@Orthogonal Projection](https://medium.com/retronator-magazine/game-developers-guide-to-graphical-projections-with-video-game-examples-part-1-introduction-aa3d051c137d) diff --git a/src/data/roadmaps/game-developer/content/parallax@YGeGleEN203nokiZIYJN8.md b/src/data/roadmaps/game-developer/content/parallax@YGeGleEN203nokiZIYJN8.md index e69de29bb..293703560 100644 --- a/src/data/roadmaps/game-developer/content/parallax@YGeGleEN203nokiZIYJN8.md +++ b/src/data/roadmaps/game-developer/content/parallax@YGeGleEN203nokiZIYJN8.md @@ -0,0 +1,7 @@ +# Parallax + +In game development and graphics, parallax refers to the apparent displacement or difference in the apparent position of an object viewed along two different lines of sight, and is measured by the angle or semi-angle of inclination between those two lines. In simpler terms, parallax is a technique used to create the illusion of depth in 2D environments by moving background layers at different speeds relative to the foreground. + +Visit the following resources to learn more: + +- [@article@Parallax Effect](https://www.encora.com/insights/how-to-take-advantage-of-parallax-in-programming-and-video-games) diff --git a/src/data/roadmaps/game-developer/content/perspective@LEJymJ2EaAW5FM5LgKW38.md b/src/data/roadmaps/game-developer/content/perspective@LEJymJ2EaAW5FM5LgKW38.md index 59d9aa077..3fccfec29 100644 --- a/src/data/roadmaps/game-developer/content/perspective@LEJymJ2EaAW5FM5LgKW38.md +++ b/src/data/roadmaps/game-developer/content/perspective@LEJymJ2EaAW5FM5LgKW38.md @@ -1,3 +1,7 @@ # Perspective -In game development, **Perspective** plays a significant role in creating a three-dimensional world on a two-dimensional space. It mimics the way our eyes perceive distance and depth, with objects appearing smaller as they go farther away. Essentially, this is achieved by projecting 3D co-ordinates on a virtual screen. Perspective projection is done in two types - one-point where only one axis displays a change in size with depth and two-point where both axis display a change. It creates more realistic views, enhancing game visualization and immersion. An important aspect is the player's viewpoint, which is the vanishing point where parallel lines converge in the distance. \ No newline at end of file +In game development, **Perspective** plays a significant role in creating a three-dimensional world on a two-dimensional space. It mimics the way our eyes perceive distance and depth, with objects appearing smaller as they go farther away. Essentially, this is achieved by projecting 3D co-ordinates on a virtual screen. Perspective projection is done in two types - one-point where only one axis displays a change in size with depth and two-point where both axis display a change. It creates more realistic views, enhancing game visualization and immersion. An important aspect is the player's viewpoint, which is the vanishing point where parallel lines converge in the distance. + +Visit the following resources to learn more: + +- [@article@Perspective in Games](https://www.gamedeveloper.com/design/making-the-most-out-of-the-first-person-perspectives) diff --git a/src/data/roadmaps/game-developer/content/physically-based-rendering@XvFtMHrYsBREmuerE7CGc.md b/src/data/roadmaps/game-developer/content/physically-based-rendering@XvFtMHrYsBREmuerE7CGc.md index 7af90c82b..5e1cb4472 100644 --- a/src/data/roadmaps/game-developer/content/physically-based-rendering@XvFtMHrYsBREmuerE7CGc.md +++ b/src/data/roadmaps/game-developer/content/physically-based-rendering@XvFtMHrYsBREmuerE7CGc.md @@ -1,3 +1,7 @@ # Physically-Based Rendering -Physically Based Rendering (PBR) is a technique in computer graphics that aims to mimic the interaction of light with surfaces in the real world. It models how light behaves, from reflection to refraction, in a way that accurately represents reality. The PBR model factors in physical properties of materials, such as roughness or metallicity, making the rendering output more consistent and predictable under different lighting conditions. It uses complex shading algorithms and light calculations to generate a high level of realism. In order to achieve this, many PBR systems use a combination of two important components: the Bidirectional Reflectance Distribution Function (BRDF), which defines how light is reflected off an object, and the Bidirectional Surface Scattering Reflectance Distribution Function (BSSRDF), which handles how light scatters under the surface of an object. \ No newline at end of file +Physically Based Rendering (PBR) is a technique in computer graphics that aims to mimic the interaction of light with surfaces in the real world. It models how light behaves, from reflection to refraction, in a way that accurately represents reality. The PBR model factors in physical properties of materials, such as roughness or metallicity, making the rendering output more consistent and predictable under different lighting conditions. It uses complex shading algorithms and light calculations to generate a high level of realism. In order to achieve this, many PBR systems use a combination of two important components: the Bidirectional Reflectance Distribution Function (BRDF), which defines how light is reflected off an object, and the Bidirectional Surface Scattering Reflectance Distribution Function (BSSRDF), which handles how light scatters under the surface of an object. + +Visit the following resources to learn more: + +- [@article@Physically-Based Rendering](https://dev.epicgames.com/community/learning/tutorials/Yx3q/unreal-engine-physically-based-rendering-pbr-explained-in-depth) diff --git a/src/data/roadmaps/game-developer/content/point@aNhyXWW2b7yKTv8y14zk9.md b/src/data/roadmaps/game-developer/content/point@aNhyXWW2b7yKTv8y14zk9.md index 7d7fc6774..02f215f15 100644 --- a/src/data/roadmaps/game-developer/content/point@aNhyXWW2b7yKTv8y14zk9.md +++ b/src/data/roadmaps/game-developer/content/point@aNhyXWW2b7yKTv8y14zk9.md @@ -1,7 +1,8 @@ # Point Lights -Point lights are one of the most common types of lights used in computer graphics and games. They resemble real-world light bulbs, emitting light uniformly in all directions. +Point lights are one of the most common types of lights used in computer graphics and games. They resemble real-world light bulbs, emitting light uniformly in all directions. These lights are available out of the box in most game engines and offer a range of customizable parameters, such as intensity, falloff, color, and more. Point lights are the most straightforward type of light, making them ideal for quickly and intuitively lighting up your scenes. -These lights are available out of the box in most game engines and offer a range of customizable parameters, such as intensity, falloff, color, and more. +Visit the following resources to learn more: -Point lights are the most straightforward type of light, making them ideal for quickly and intuitively lighting up your scenes. \ No newline at end of file +- [@article@The Basics of Lighting](https://blog.logrocket.com/lighting-basics-unity/) +- [@article@Types of Lighting Component](https://docs.unity3d.com/6000.0/Documentation/Manual/Lighting.html) diff --git a/src/data/roadmaps/game-developer/content/polygon@-r15srXTBLnUGokpXKclH.md b/src/data/roadmaps/game-developer/content/polygon@-r15srXTBLnUGokpXKclH.md index e69de29bb..eb4175341 100644 --- a/src/data/roadmaps/game-developer/content/polygon@-r15srXTBLnUGokpXKclH.md +++ b/src/data/roadmaps/game-developer/content/polygon@-r15srXTBLnUGokpXKclH.md @@ -0,0 +1,7 @@ +# Polygon + +In computer graphics and game development, a polygon is a 2D or 3D shape composed of a set of vertices connected by edges. Polygons are used to represent objects, characters, and environments in games and simulations. + +Visit the following resources to learn more: + +- [@article@Polygons and Shading](https://electronics.howstuffworks.com/3do5.htm) diff --git a/src/data/roadmaps/game-developer/content/polyhedron@GHfLMtgmc36OCvjQvW_Su.md b/src/data/roadmaps/game-developer/content/polyhedron@GHfLMtgmc36OCvjQvW_Su.md index e69de29bb..9308967aa 100644 --- a/src/data/roadmaps/game-developer/content/polyhedron@GHfLMtgmc36OCvjQvW_Su.md +++ b/src/data/roadmaps/game-developer/content/polyhedron@GHfLMtgmc36OCvjQvW_Su.md @@ -0,0 +1,8 @@ +# Polyhedron + +In computer graphics and game development, a polyhedron is a 3D shape composed of a set of polygons that enclose a volume. Polyhedra are used to represent objects, characters, and environments in games and simulations. + +Visit the following resources to learn more: + +- [@article@Mesh Triangulation and Polyhedron](https://gamedev.stackexchange.com/questions/140978/need-some-insight-on-mesh-triangulation-and-geodesic-spheres) +- [@article@Polyhedron Game Physics](https://gamedev.net/forums/topic/653589-misc-polyhedon-related-posts-for-game-physics/) diff --git a/src/data/roadmaps/game-developer/content/programming-languages@4YgbrXLXf5mfaL2tlYkzk.md b/src/data/roadmaps/game-developer/content/programming-languages@4YgbrXLXf5mfaL2tlYkzk.md index b9495160c..c2b6648e5 100644 --- a/src/data/roadmaps/game-developer/content/programming-languages@4YgbrXLXf5mfaL2tlYkzk.md +++ b/src/data/roadmaps/game-developer/content/programming-languages@4YgbrXLXf5mfaL2tlYkzk.md @@ -1,3 +1,11 @@ # Programming Languages -Programming languages are very crucial to game development as they are the backbone of game design and functionality. A variety of languages can be used, but some are more commonly preferred in the industry due to their robustness and efficiency. The most popular ones include C++, C#, and Java. **C++**, a high-level language primarily used for developing video games, is known for its speed and efficiency. **C#**, which was developed by Microsoft, is extensively used with the Unity game engine to develop multi-platform games. **Java** is well-established in the sector as well, and it often utilized in the development of Android games. It's pivotal for a game developer to select a language that aligns with the project's requirements and nature. Despite the programming language you choose, a deep understanding of its constructs, logic, and capabilities is required for successful game development. \ No newline at end of file +Programming languages are very crucial to game development as they are the backbone of game design and functionality. A variety of languages can be used, but some are more commonly preferred in the industry due to their robustness and efficiency. The most popular ones include C++, C#, and Java. **C++**, a high-level language primarily used for developing video games, is known for its speed and efficiency. **C#**, which was developed by Microsoft, is extensively used with the Unity game engine to develop multi-platform games. **Java** is well-established in the sector as well, and it often utilized in the development of Android games. It's pivotal for a game developer to select a language that aligns with the project's requirements and nature. Despite the programming language you choose, a deep understanding of its constructs, logic, and capabilities is required for successful game development. + +Visit the following resources to learn more: + +- [@roadmap@Visit Dedicated C++ Roadmap](https://roadmap.sh/cpp) +- [@roadmap@Visit Dedicated Rust Roadmap](https://roadmap.sh/rust) +- [@roadmap@Visit Dedicated Java Roadmap](https://roadmap.sh/java) +- [@article@Learn Game Development with C++](https://learn.microsoft.com/en-us/cpp/overview/game-development-cpp?view=msvc-170) +- [@article@Building Games with Rust](https://rustmeup.com/building-games-with-rust) diff --git a/src/data/roadmaps/game-developer/content/projection@5qfoD77wU4ETI7rUSy4Nc.md b/src/data/roadmaps/game-developer/content/projection@5qfoD77wU4ETI7rUSy4Nc.md index 2c8d70345..454ed2bfa 100644 --- a/src/data/roadmaps/game-developer/content/projection@5qfoD77wU4ETI7rUSy4Nc.md +++ b/src/data/roadmaps/game-developer/content/projection@5qfoD77wU4ETI7rUSy4Nc.md @@ -1,3 +1,7 @@ # Projection -`Projection` in game mathematics often refers to the method by which three-dimensional images are transferred to a two-dimensional plane, typically a computer screen. There are two main types of projection in game development; `Orthographic Projection` and `Perspective Projection`. In the Orthographic Projection, objects maintain their size regardless of their distance from the camera. This is often used in 2D games or 3D games where perspective is not important. On the other hand, Perspective Projection mimics human eye perspective, where distant objects appear smaller. This method provides a more realistic rendering for 3D games. It's crucial to understand projection in game development because it governs how virtual 3D spaces and objects are displayed on 2D viewing platforms. \ No newline at end of file +`Projection` in game mathematics often refers to the method by which three-dimensional images are transferred to a two-dimensional plane, typically a computer screen. There are two main types of projection in game development; `Orthographic Projection` and `Perspective Projection`. In the Orthographic Projection, objects maintain their size regardless of their distance from the camera. This is often used in 2D games or 3D games where perspective is not important. On the other hand, Perspective Projection mimics human eye perspective, where distant objects appear smaller. This method provides a more realistic rendering for 3D games. It's crucial to understand projection in game development because it governs how virtual 3D spaces and objects are displayed on 2D viewing platforms. + +Visit the following resources to learn more: + +- [@article@Mesh Triangulation and Polyhedron](https://mathworld.wolfram.com/Projection.html) diff --git a/src/data/roadmaps/game-developer/content/python@AJp_QRLgSG5ETXDIjUjmm.md b/src/data/roadmaps/game-developer/content/python@AJp_QRLgSG5ETXDIjUjmm.md index 18877ac95..a9e66b1fe 100644 --- a/src/data/roadmaps/game-developer/content/python@AJp_QRLgSG5ETXDIjUjmm.md +++ b/src/data/roadmaps/game-developer/content/python@AJp_QRLgSG5ETXDIjUjmm.md @@ -1,3 +1,9 @@ # Python -Python is a popular high-level programming language that was designed by Guido van Rossum and published in 1991. It is preferred for its simplicity in learning and usage, making it a great choice for beginners. Python's design philosophy emphasizes code readability with its use of significant indentation. Its language constructs and object-oriented approach aim to help developers write clear, logical code for small and large-scale projects. Python is dynamically-typed and garbage-collected. Moreover, it supports multiple programming paradigms, including procedural, object-oriented, and functional programming. Python is often used for web development, software development, database operations, and machine learning. Although not typically used for game development, some game developers utilize Python for scripting and automating tasks. \ No newline at end of file +Python is a popular high-level programming language that was designed by Guido van Rossum and published in 1991. It is preferred for its simplicity in learning and usage, making it a great choice for beginners. Python's design philosophy emphasizes code readability with its use of significant indentation. Its language constructs and object-oriented approach aim to help developers write clear, logical code for small and large-scale projects. Python is dynamically-typed and garbage-collected. Moreover, it supports multiple programming paradigms, including procedural, object-oriented, and functional programming. Python is often used for web development, software development, database operations, and machine learning. Although not typically used for game development, some game developers utilize Python for scripting and automating tasks. + +Visit the following resources to learn more: + +- [@roadmap@Visit Dedicated Python Roadmap](https://roadmap.sh/python) +- [@official@Python](https://www.python.org/) +- [@official@Python Documentation](https://www.python.org/doc/) diff --git a/src/data/roadmaps/game-developer/content/quaternion@zPs_LlDvkfxvvCrk5fXB2.md b/src/data/roadmaps/game-developer/content/quaternion@zPs_LlDvkfxvvCrk5fXB2.md index 44e3e0b14..959b892fb 100644 --- a/src/data/roadmaps/game-developer/content/quaternion@zPs_LlDvkfxvvCrk5fXB2.md +++ b/src/data/roadmaps/game-developer/content/quaternion@zPs_LlDvkfxvvCrk5fXB2.md @@ -2,6 +2,8 @@ The **quaternion** is a complex number system that extends the concept of rotations in three dimensions. It involves four components: one real and three imaginary parts. Quaternions are used in game development for efficient and accurate calculations of rotations and orientation. They are particularly useful over other methods, such as Euler angles, due to their resistance to problems like Gimbal lock. Despite their complex nature, understanding and implementing quaternions can greatly enhance a game's 3D rotational mechanics and accuracy. +Visit the following resources to learn more: + - [@article@Understanding Quaternions](https://www.3dgep.com/understanding-quaternions/) - [@article@Unity docs - Quaternions](https://docs.unity3d.com/ScriptReference/Quaternion.html) - [@video@Quaternions and 3d rotation,explained interactively](https://youtu.be/zjMuIxRvygQ?si=ANmFr5k8JMUzBCUC) diff --git a/src/data/roadmaps/game-developer/content/rasterization@vYNj9nzu90e9xlrzHULnP.md b/src/data/roadmaps/game-developer/content/rasterization@vYNj9nzu90e9xlrzHULnP.md index 3fc52bb3b..dcb631dc9 100644 --- a/src/data/roadmaps/game-developer/content/rasterization@vYNj9nzu90e9xlrzHULnP.md +++ b/src/data/roadmaps/game-developer/content/rasterization@vYNj9nzu90e9xlrzHULnP.md @@ -1,3 +1,7 @@ # Rasterization -In the realm of computer graphics, **Rasterization** refers to the process of converting the image data into a bitmap form, i.e., pixels or dots. It is predominantly used in 3D rendering where three-dimensional polygonal shapes are transformed into a two-dimensional image, possessing height, width, and color data. It is a scan-conversion process where vertices and primitives, upon being processed through the graphics pipeline, are mathematically converted into fragments. Every fragment finds its position in a raster grid. The process culminates in fragments becoming pixels in the frame buffer, the final rendered image you see on the screen. However, it's essential to note that rasterization does limit the image's resolution to the resolution of the device on which it is displayed. \ No newline at end of file +In the realm of computer graphics, **Rasterization** refers to the process of converting the image data into a bitmap form, i.e., pixels or dots. It is predominantly used in 3D rendering where three-dimensional polygonal shapes are transformed into a two-dimensional image, possessing height, width, and color data. It is a scan-conversion process where vertices and primitives, upon being processed through the graphics pipeline, are mathematically converted into fragments. Every fragment finds its position in a raster grid. The process culminates in fragments becoming pixels in the frame buffer, the final rendered image you see on the screen. However, it's essential to note that rasterization does limit the image's resolution to the resolution of the device on which it is displayed. + +Visit the following resources to learn more: + +- [@article@3D Rendering Rasterization](https://www.techspot.com/article/1888-how-to-3d-rendering-rasterization-ray-tracing/) diff --git a/src/data/roadmaps/game-developer/content/ray-tracing@JW5c_0JEtO-OiBoXUia6A.md b/src/data/roadmaps/game-developer/content/ray-tracing@JW5c_0JEtO-OiBoXUia6A.md index 797bd40b7..97f46eafa 100644 --- a/src/data/roadmaps/game-developer/content/ray-tracing@JW5c_0JEtO-OiBoXUia6A.md +++ b/src/data/roadmaps/game-developer/content/ray-tracing@JW5c_0JEtO-OiBoXUia6A.md @@ -1,3 +1,8 @@ # Ray Tracing -Ray tracing is a rendering technique in computer graphics that simulates the physical behavior of light. It generates images with a high degree of visual realism, as it captures shadows, reflections, and refracts light. Ray tracing follows the path of light backwards from the camera (eye) to the source (light object), calculating the color of each pixel in the image on the way. The color value calculation considers the object from which the ray has reflected or refracted, and the nature of the light source i.e. whether it's ambient, point or spot. Ray tracing algorithm handles effects that rasterization algorithms like scanline rendering and 'Z-buffer' find complex to handle. \ No newline at end of file +Ray tracing is a rendering technique in computer graphics that simulates the physical behavior of light. It generates images with a high degree of visual realism, as it captures shadows, reflections, and refracts light. Ray tracing follows the path of light backwards from the camera (eye) to the source (light object), calculating the color of each pixel in the image on the way. The color value calculation considers the object from which the ray has reflected or refracted, and the nature of the light source i.e. whether it's ambient, point or spot. Ray tracing algorithm handles effects that rasterization algorithms like scanline rendering and 'Z-buffer' find complex to handle. + +Visit the following resources to learn more: + +- [@article@What is Ray Tracing?](https://www.pcmag.com/how-to/what-is-ray-tracing-and-what-it-means-for-pc-gaming) +- [@official@Nvidia GeForce RTX](https://www.nvidia.com/en-us/geforce/rtx/) diff --git a/src/data/roadmaps/game-developer/content/real-time-ray-tracing@_i7BXZq-iLxQc3QZRMees.md b/src/data/roadmaps/game-developer/content/real-time-ray-tracing@_i7BXZq-iLxQc3QZRMees.md index 3efe514d1..967b850a4 100644 --- a/src/data/roadmaps/game-developer/content/real-time-ray-tracing@_i7BXZq-iLxQc3QZRMees.md +++ b/src/data/roadmaps/game-developer/content/real-time-ray-tracing@_i7BXZq-iLxQc3QZRMees.md @@ -1,3 +1,8 @@ # Real-Time Ray Tracing -**Real-time Ray Tracing** is a notable advancement in rendering technology. It aims to mimic the way light works in the real world by simulating how each ray of light interacts with different surfaces. In real-time ray tracing, rays of light are generated from the viewer's perspective and sent into the scene. They can reflect off surfaces, refract through materials, or scatter in different directions. These rays can also be absorbed, producing shadows and shaping the visibility of objects. What makes real-time ray tracing special is its ability to calculate all these interactions in real-time, which allows graphics to be much more dynamic and interactive. The complexity of real-time ray tracing involves extensive computational power and it has been a groundbreaking feature in newer hardware and software releases. \ No newline at end of file +**Real-time Ray Tracing** is a notable advancement in rendering technology. It aims to mimic the way light works in the real world by simulating how each ray of light interacts with different surfaces. In real-time ray tracing, rays of light are generated from the viewer's perspective and sent into the scene. They can reflect off surfaces, refract through materials, or scatter in different directions. These rays can also be absorbed, producing shadows and shaping the visibility of objects. What makes real-time ray tracing special is its ability to calculate all these interactions in real-time, which allows graphics to be much more dynamic and interactive. The complexity of real-time ray tracing involves extensive computational power and it has been a groundbreaking feature in newer hardware and software releases. + +Visit the following resources to learn more: + +- [@article@What is Real-Time Ray Tracing?](https://www.unrealengine.com/en-US/explainers/ray-tracing/what-is-real-time-ray-tracing) +- [@official@Nvidia RTX Real-Time Ray Tracing](https://blogs.nvidia.com/blog/rtx-real-time-ray-tracing/) diff --git a/src/data/roadmaps/game-developer/content/reflection@eI2jym4AAz3ani-lreSKE.md b/src/data/roadmaps/game-developer/content/reflection@eI2jym4AAz3ani-lreSKE.md index 5e82675f3..4018f4cba 100644 --- a/src/data/roadmaps/game-developer/content/reflection@eI2jym4AAz3ani-lreSKE.md +++ b/src/data/roadmaps/game-developer/content/reflection@eI2jym4AAz3ani-lreSKE.md @@ -1,3 +1,8 @@ # Reflection -Reflection in game development, specifically in shaders, is a phenomena that simulates the bouncing off of light from objects similar to the way it happens in the real world. Shaders replicate this effect by emitting rays from the lighting source against the object's surface. When the ray strikes the surface, it will calculate the light’s color and angle to define how light should reflect off that surface. Reflection in shaders can further be classified into two types: Specular Reflection and Diffuse Reflection. Specular Reflection is the mirror-like reflection of light from a surface, where each incident ray is reflected with the light ray reflected at an equal but opposite angle. Diffuse Reflection, on the other hand, is the reflection of light into many directions, giving a softer effect. These reflections are quantified in computer graphics often using a reflection model such as the Phong reflection model or the Lambertian reflectance model. \ No newline at end of file +Reflection in game development, specifically in shaders, is a phenomena that simulates the bouncing off of light from objects similar to the way it happens in the real world. Shaders replicate this effect by emitting rays from the lighting source against the object's surface. When the ray strikes the surface, it will calculate the light’s color and angle to define how light should reflect off that surface. Reflection in shaders can further be classified into two types: Specular Reflection and Diffuse Reflection. Specular Reflection is the mirror-like reflection of light from a surface, where each incident ray is reflected with the light ray reflected at an equal but opposite angle. Diffuse Reflection, on the other hand, is the reflection of light into many directions, giving a softer effect. These reflections are quantified in computer graphics often using a reflection model such as the Phong reflection model or the Lambertian reflectance model. + +Visit the following resources to learn more: + +- [@article@Rendering Perfect Reflections](https://developer.nvidia.com/blog/rendering-perfect-reflections-and-refractions-in-path-traced-games/) +- [@video@How Can We Use Reflection in Game Development?](https://www.youtube.com/watch?v=R1A86lZ8myQ) diff --git a/src/data/roadmaps/game-developer/content/reinforcements-learning@rGEHTfdNeBAX3_XqC-vvI.md b/src/data/roadmaps/game-developer/content/reinforcements-learning@rGEHTfdNeBAX3_XqC-vvI.md index f48de40f1..b7b35a81e 100644 --- a/src/data/roadmaps/game-developer/content/reinforcements-learning@rGEHTfdNeBAX3_XqC-vvI.md +++ b/src/data/roadmaps/game-developer/content/reinforcements-learning@rGEHTfdNeBAX3_XqC-vvI.md @@ -2,4 +2,7 @@ `Reinforcement Learning` is a type of Machine Learning which is geared towards making decisions. It involves an agent that learns to behave in an environment, by performing certain actions and observing the results or rewards/results it gets. The main principle of reinforcement learning is to reward good behavior and penalize bad behavior. The agent learns from the consequences of its actions, rather than from being taught explicitly. In the context of game development, reinforcement learning could be used to develop an AI (Artificial Intelligence) which can improve its performance in a game based on reward-driven behavior. The AI gradually learns the optimal strategy, known as policy, to achieve the best result. -- [@video@AI Learns to Walk (deep reinforcement learning)](https://m.youtube.com/watch?v=L_4BPjLBF4E) \ No newline at end of file +Visit the following resources to learn more: + +- [@article@Rendering Perfect Reflections](https://developer.nvidia.com/blog/rendering-perfect-reflections-and-refractions-in-path-traced-games/) +- [@video@AI Learns to Walk (Deep Reinforcement Learning)](https://m.youtube.com/watch?v=L_4BPjLBF4E) diff --git a/src/data/roadmaps/game-developer/content/rendering-equation@WVgozaQPFbYthZLWMbNUg.md b/src/data/roadmaps/game-developer/content/rendering-equation@WVgozaQPFbYthZLWMbNUg.md index 226901539..3681b0845 100644 --- a/src/data/roadmaps/game-developer/content/rendering-equation@WVgozaQPFbYthZLWMbNUg.md +++ b/src/data/roadmaps/game-developer/content/rendering-equation@WVgozaQPFbYthZLWMbNUg.md @@ -4,4 +4,5 @@ The **Render Equation**, also known as the **Rendering Equation**, is a fundamen Visit the following resources to learn more: -- [@video@Interactive Graphics 12 - The Rendering Equation](https://www.youtube.com/watch?v=wawf7Am6xy0) \ No newline at end of file +- [@article@Rendering Equation](https://en.wikipedia.org/wiki/Rendering_equation) +- [@video@Interactive Graphics 12 - The Rendering Equation](https://www.youtube.com/watch?v=wawf7Am6xy0) diff --git a/src/data/roadmaps/game-developer/content/restitution@egOcxFTQP7vPIGrxcieuk.md b/src/data/roadmaps/game-developer/content/restitution@egOcxFTQP7vPIGrxcieuk.md index 653d9b5d3..f536ce7d9 100644 --- a/src/data/roadmaps/game-developer/content/restitution@egOcxFTQP7vPIGrxcieuk.md +++ b/src/data/roadmaps/game-developer/content/restitution@egOcxFTQP7vPIGrxcieuk.md @@ -1,3 +1,7 @@ # Restitution -In game development, **Restitution** is a property closely related to the physics of objects. Essentially, restitution represents the "bounciness" of an object or, in more scientific terms, the ratio of the final relative velocity to the initial relative velocity of two objects after a collision. In the context of game physics, when objects collide, restitution is used to calculate how much each object should bounce back or recoil. Restitution values typically fall between 0 and 1 where a value of 0 means an object will not bounce at all and a value of 1 refers to a perfectly elastic collision with no energy lost. Therefore, the higher the restitution value, the higher the bounce back of the object after a collision. \ No newline at end of file +In game development, **Restitution** is a property closely related to the physics of objects. Essentially, restitution represents the "bounciness" of an object or, in more scientific terms, the ratio of the final relative velocity to the initial relative velocity of two objects after a collision. In the context of game physics, when objects collide, restitution is used to calculate how much each object should bounce back or recoil. Restitution values typically fall between 0 and 1 where a value of 0 means an object will not bounce at all and a value of 1 refers to a perfectly elastic collision with no energy lost. Therefore, the higher the restitution value, the higher the bounce back of the object after a collision. + +Visit the following resources to learn more: + +- [@article@Restitution Property](https://gamedev.stackexchange.com/questions/49616/why-do-restitution-values-less-than-one-still-cause-infinite-bouncing-in-box2d) diff --git a/src/data/roadmaps/game-developer/content/rust@ts9pWxUimvFqfNJYCmNNw.md b/src/data/roadmaps/game-developer/content/rust@ts9pWxUimvFqfNJYCmNNw.md index 48640073f..49fde580f 100644 --- a/src/data/roadmaps/game-developer/content/rust@ts9pWxUimvFqfNJYCmNNw.md +++ b/src/data/roadmaps/game-developer/content/rust@ts9pWxUimvFqfNJYCmNNw.md @@ -2,4 +2,8 @@ **Rust** is a modern, open-source, multi-paradigm programming language designed for performance and safety, especially safe concurrency. It was initially designed by Mozilla Research as a language that can provide memory safety without garbage collection. Since then, it has gained popularity due to its features and performance that often compare favorably to languages like C++. Its rich type system and ownership model guarantee memory-safety and thread-safety while maintaining a high level of abstraction. Rust supports a mixture of imperative procedural, concurrent actor, object-oriented and pure functional styles. -[Learn Rust full tutorial](https://youtu.be/BpPEoZW5IiY?si=lyBbBPLXQ0HWdJNr) +Visit the following resources to learn more: + +- [@roadmap@Visit Dedicated Rust Roadmap](https://roadmap.sh/rust) +- [@article@Building Games with Rust](https://rustmeup.com/building-games-with-rust) +- [@video@Learn Rust](https://youtu.be/BpPEoZW5IiY?si=lyBbBPLXQ0HWdJNr) diff --git a/src/data/roadmaps/game-developer/content/sampling@rmtxybcavWV6A53R4ZWgc.md b/src/data/roadmaps/game-developer/content/sampling@rmtxybcavWV6A53R4ZWgc.md index 9791b7a5b..4cd99afef 100644 --- a/src/data/roadmaps/game-developer/content/sampling@rmtxybcavWV6A53R4ZWgc.md +++ b/src/data/roadmaps/game-developer/content/sampling@rmtxybcavWV6A53R4ZWgc.md @@ -1,3 +1,7 @@ # Sampling -**Sampling** in computer graphics is a method used to convert a continuous mathematical function (image, signal, light and sound), into a discrete digital representation. The process is done by taking snapshots at regular intervals which are also known as samples, and it's this that gives us the concept of 'sampling'. Some common types of sampling techniques include: uniform sampling (evenly spaced samples), random sampling (samples taken at random intervals), and jittered sampling (a compromise between uniform and random sampling). The higher the sampling rate, the more accurately the original function can be reconstructed from the discrete samples. Effective sampling is a significant aspect of achieving realistic computer graphics. \ No newline at end of file +**Sampling** in computer graphics is a method used to convert a continuous mathematical function (image, signal, light and sound), into a discrete digital representation. The process is done by taking snapshots at regular intervals which are also known as samples, and it's this that gives us the concept of 'sampling'. Some common types of sampling techniques include: uniform sampling (evenly spaced samples), random sampling (samples taken at random intervals), and jittered sampling (a compromise between uniform and random sampling). The higher the sampling rate, the more accurately the original function can be reconstructed from the discrete samples. Effective sampling is a significant aspect of achieving realistic computer graphics. + +Visit the following resources to learn more: + +- [@article@Textures and Sampling](https://cglearn.eu/pub/computer-graphics/textures-and-sampling) diff --git a/src/data/roadmaps/game-developer/content/sat@kSMz7mZ243qMKtT_YD3AD.md b/src/data/roadmaps/game-developer/content/sat@kSMz7mZ243qMKtT_YD3AD.md index 0c4ae39b7..85944317a 100644 --- a/src/data/roadmaps/game-developer/content/sat@kSMz7mZ243qMKtT_YD3AD.md +++ b/src/data/roadmaps/game-developer/content/sat@kSMz7mZ243qMKtT_YD3AD.md @@ -1,3 +1,8 @@ # SAT -`Sat`, or separating axis theorem, is frequently used in collision detection in game development. Its primary benefit is for simple and fast detection of whether two convex polygons intersect. The theorem is somewhat complex—it works by projecting all points of both polygons onto numerous axes around the shapes, then checking for overlaps. However, it can be relatively time-consuming when dealing with more complex models or numerous objects as it has to calculate the projections, so often it is used in a broad-phase detection system. A deep explanation of how `sat` works might involve some mathematical concepts or visual aids, but this is the foundation of its use in game development. \ No newline at end of file +`Sat`, or separating axis theorem, is frequently used in collision detection in game development. Its primary benefit is for simple and fast detection of whether two convex polygons intersect. The theorem is somewhat complex—it works by projecting all points of both polygons onto numerous axes around the shapes, then checking for overlaps. However, it can be relatively time-consuming when dealing with more complex models or numerous objects as it has to calculate the projections, so often it is used in a broad-phase detection system. A deep explanation of how `sat` works might involve some mathematical concepts or visual aids, but this is the foundation of its use in game development. + +Visit the following resources to learn more: + +- [@article@Separating Axis Theorem](https://dyn4j.org/2010/01/sat/) +- [@article@Collision Detection Using the Separating Axis Theorem](https://code.tutsplus.com/collision-detection-using-the-separating-axis-theorem--gamedev-169t) diff --git a/src/data/roadmaps/game-developer/content/shader@qIrePusMuvcUva9LMDmDx.md b/src/data/roadmaps/game-developer/content/shader@qIrePusMuvcUva9LMDmDx.md index ebcc3e3b9..7c1eb1a8d 100644 --- a/src/data/roadmaps/game-developer/content/shader@qIrePusMuvcUva9LMDmDx.md +++ b/src/data/roadmaps/game-developer/content/shader@qIrePusMuvcUva9LMDmDx.md @@ -1,3 +1,8 @@ # Shader -Shaders are a type of software used in 3D computer graphics. They are utilized to render quality visual effects by making calculations and transformations on image data. Also, a shader is responsible for determining the final color of an object. There are several types of shaders: vertex shaders, geometry shaders, pixel shaders, and compute shaders. Each of these is programmed to manipulate specific attributes of an image, such as its vertices, pixels, and overall geometry. They are essential tools for game developers aiming to produce realistic and engaging visual experiences. \ No newline at end of file +Shaders are a type of software used in 3D computer graphics. They are utilized to render quality visual effects by making calculations and transformations on image data. Also, a shader is responsible for determining the final color of an object. There are several types of shaders: vertex shaders, geometry shaders, pixel shaders, and compute shaders. Each of these is programmed to manipulate specific attributes of an image, such as its vertices, pixels, and overall geometry. They are essential tools for game developers aiming to produce realistic and engaging visual experiences. + +Visit the following resources to learn more: + +- [@article@What Are Shaders in Video Games?](https://www.gamedesigning.org/learn/shaders/) +- [@article@A Beginner's Guide to Coding Graphics Shaders](https://gamedevelopment.tutsplus.com/a-beginners-guide-to-coding-graphics-shaders--cms-23313t) diff --git a/src/data/roadmaps/game-developer/content/shadow-map@ygtru6fqQ3gpFZRN_I8rP.md b/src/data/roadmaps/game-developer/content/shadow-map@ygtru6fqQ3gpFZRN_I8rP.md index 050a30643..ee1664212 100644 --- a/src/data/roadmaps/game-developer/content/shadow-map@ygtru6fqQ3gpFZRN_I8rP.md +++ b/src/data/roadmaps/game-developer/content/shadow-map@ygtru6fqQ3gpFZRN_I8rP.md @@ -1,7 +1,8 @@ # Shadow Map -Shadow mapping is a technique used in computer graphics to add shadows to a scene. This process involves two steps - generating the shadow map and then rendering the scene. +Shadow mapping is a technique used in computer graphics to add shadows to a scene. This process involves two steps - generating the shadow map and then rendering the scene. In the shadow map generating step, the scene is rendered from the perspective of the light source capturing depth information. This results in a texture that stores the distance from the light to the nearest surface along each light direction, a “shadow map”. In the scene rendering step, the scene is rendered from the camera’s perspective. For each visible surface point, its distance from the light is calculated and compared to the corresponding stored distance in the shadow map. If the point's distance is greater than the stored distance, the point is in shadow; otherwise, it's lit. This information is used to adjust the color of the point, producing the shadow effect. -In the shadow map generating step, the scene is rendered from the perspective of the light source capturing depth information. This results in a texture that stores the distance from the light to the nearest surface along each light direction, a “shadow map”. +Visit the following resources to learn more: -In the scene rendering step, the scene is rendered from the camera’s perspective. For each visible surface point, its distance from the light is calculated and compared to the corresponding stored distance in the shadow map. If the point's distance is greater than the stored distance, the point is in shadow; otherwise, it's lit. This information is used to adjust the color of the point, producing the shadow effect. +- [@article@Shadow Mapping Techniques](https://dev.to/hayyanstudio/shadow-mapping-techniques-implementing-shadows-in-3d-scenes-using-shadow-mapping-46hl/) +- [@article@A Beginner's Guide to Shadow Mapping](https://gamedev.net/blog/2080/entry-2261232-shadow-mapping-part-1-pcf-and-vsms/) diff --git a/src/data/roadmaps/game-developer/content/shadow@lqfW8hkuN3vWtacrqBBtI.md b/src/data/roadmaps/game-developer/content/shadow@lqfW8hkuN3vWtacrqBBtI.md index e69de29bb..c833a0b78 100644 --- a/src/data/roadmaps/game-developer/content/shadow@lqfW8hkuN3vWtacrqBBtI.md +++ b/src/data/roadmaps/game-developer/content/shadow@lqfW8hkuN3vWtacrqBBtI.md @@ -0,0 +1,9 @@ +# Shadow + +Shadows play a crucial role in enhancing the realism and depth of scenes in video games. They help to create a more immersive experience by simulating how light interacts with objects in a 3D environment. + +Visit the following resources to learn more: + +- [@article@Shadow Mapping Techniques](https://dev.to/hayyanstudio/shadow-mapping-techniques-implementing-shadows-in-3d-scenes-using-shadow-mapping-46hl) +- [@article@Real Time Shadow Casting using Shadow Volumes](https://www.gamedeveloper.com/business/real-time-shadow-casting-using-shadow-volumes) +- [@video@Programming and Explaining Shadows](https://www.youtube.com/watch?v=RJr14qUt624L) diff --git a/src/data/roadmaps/game-developer/content/sort--sweep@STdvFYM9V0a36IkPXjvrB.md b/src/data/roadmaps/game-developer/content/sort--sweep@STdvFYM9V0a36IkPXjvrB.md index fd3db4a5c..6d1755ad0 100644 --- a/src/data/roadmaps/game-developer/content/sort--sweep@STdvFYM9V0a36IkPXjvrB.md +++ b/src/data/roadmaps/game-developer/content/sort--sweep@STdvFYM9V0a36IkPXjvrB.md @@ -1,3 +1,8 @@ # Sort and Sweep -**Sort and Sweep** is an algorithm used in collision detection in game development which optimizes the process of identifying potential intersecting objects. Here's how it works: first, all objects in the game are sorted along a specific axis (typically the 'x' axis). Then a line (known as the 'sweep line') is moved along this axis. As the line sweeps over the scene, any objects that cross this line are added to an 'active' list. When an object no longer intersects with the sweep line, it's removed from this list. The only objects checked for intersection are those within this 'active' list reducing the number of checks required. This makes sort and sweep an efficient spatial partitioning strategy. \ No newline at end of file +**Sort and Sweep** is an algorithm used in collision detection in game development which optimizes the process of identifying potential intersecting objects. Here's how it works: first, all objects in the game are sorted along a specific axis (typically the 'x' axis). Then a line (known as the 'sweep line') is moved along this axis. As the line sweeps over the scene, any objects that cross this line are added to an 'active' list. When an object no longer intersects with the sweep line, it's removed from this list. The only objects checked for intersection are those within this 'active' list reducing the number of checks required. This makes sort and sweep an efficient spatial partitioning strategy. + +Visit the following resources to learn more: + +- [@article@Sort, Sweep and Prune](https://leanrada.com/notes/sweep-and-prune/) +- [@article@Collision Detection Algorithm](https://notes.billmill.org/visualization/interactive_explainers/sort__sweep_and_prune_-_collision_detection_algorithms.html) diff --git a/src/data/roadmaps/game-developer/content/spatial-partitioning@9Fk3XSINBr2NNdbMtwsIK.md b/src/data/roadmaps/game-developer/content/spatial-partitioning@9Fk3XSINBr2NNdbMtwsIK.md index d23abf5d8..3fb627799 100644 --- a/src/data/roadmaps/game-developer/content/spatial-partitioning@9Fk3XSINBr2NNdbMtwsIK.md +++ b/src/data/roadmaps/game-developer/content/spatial-partitioning@9Fk3XSINBr2NNdbMtwsIK.md @@ -1,3 +1,8 @@ # Spatial Partitioning -"Spatial partitioning" is a technique used in computational geometry, intended to make calculations involving objects in space more efficient. It involves dividing a large virtual space into a series of smaller spaces, or "partitions". These partitions can be used to quickly eliminate areas that are irrelevant to a particular calculation or query, thus lowering the overall computational cost. This technique is widely used in game development in contexts such as collision detection, rendering, pathfinding, and more. Various methods exist for spatial partitioning, including grid-based, tree-based (like Quadtree and Octree), and space-filling curve (like Z-order or Hilbert curve) approaches. \ No newline at end of file +"Spatial partitioning" is a technique used in computational geometry, intended to make calculations involving objects in space more efficient. It involves dividing a large virtual space into a series of smaller spaces, or "partitions". These partitions can be used to quickly eliminate areas that are irrelevant to a particular calculation or query, thus lowering the overall computational cost. This technique is widely used in game development in contexts such as collision detection, rendering, pathfinding, and more. Various methods exist for spatial partitioning, including grid-based, tree-based (like Quadtree and Octree), and space-filling curve (like Z-order or Hilbert curve) approaches. + +Visit the following resources to learn more: + +- [@article@Spatial Partitioning](https://en.wikipedia.org/wiki/Space_partitioning) +- [@article@Spatial Partitioning in Game Programming](https://gameprogrammingpatterns.com/spatial-partition.html) diff --git a/src/data/roadmaps/game-developer/content/specular@odfZWKtPbb-lC35oeTCNV.md b/src/data/roadmaps/game-developer/content/specular@odfZWKtPbb-lC35oeTCNV.md index fb45d7f28..a48c7ff7c 100644 --- a/src/data/roadmaps/game-developer/content/specular@odfZWKtPbb-lC35oeTCNV.md +++ b/src/data/roadmaps/game-developer/content/specular@odfZWKtPbb-lC35oeTCNV.md @@ -2,7 +2,8 @@ `Specular` reflections are mirror-like reflections. In these cases, the rays of light are reflected, more than they are absorbed. The angle of incidence is equal to the angle of reflection, that is to say that the angle at which the light enters the medium and then bounces off, the angle of the beam that bounced off would be the same. -Learn more from the following resources: - --[@video@Specular reflection](https://www.youtube.com/watch?v=2cFvJkc4pQk) +Visit the following resources to learn more: +- [@article@Specular Reflections - Wiki](https://en.wikipedia.org/wiki/Specular_reflection) +- [@article@Specular Reflection - Regular Reflection, Mirrors, Diffuse Reflection](https://www.rp-photonics.com/specular_reflection.html) +-[@video@Specular Reflection](https://www.youtube.com/watch?v=2cFvJkc4pQk) diff --git a/src/data/roadmaps/game-developer/content/spir-v@DvV32n3NoXNEej8Fsqqs2.md b/src/data/roadmaps/game-developer/content/spir-v@DvV32n3NoXNEej8Fsqqs2.md index 6cd20c243..648c3d29e 100644 --- a/src/data/roadmaps/game-developer/content/spir-v@DvV32n3NoXNEej8Fsqqs2.md +++ b/src/data/roadmaps/game-developer/content/spir-v@DvV32n3NoXNEej8Fsqqs2.md @@ -1,3 +1,8 @@ # SPIR-V -`SPIR-V` is a binary intermediate language for graphics and computation kernels, which is defined by the Khronos Group. This programming language has been largely adopted and used by Vulkan, a low-overhead, cross-platform 3D graphics and computing API. Vulkan consumes `SPIR-V` directly, serving as the final shader stage before the GPU. The `SPIR-V` binary format is designed for portability and flexibility, allowing it to be a powerful tool for developers because of its extensibility through the addition of new instructions, without the need to rebuild toolchains or shaders. This makes `SPIR-V` an essential part of Vulkan, especially for game developers creating large, diverse worldscapes and intricate graphics. \ No newline at end of file +`SPIR-V` is a binary intermediate language for graphics and computation kernels, which is defined by the Khronos Group. This programming language has been largely adopted and used by Vulkan, a low-overhead, cross-platform 3D graphics and computing API. Vulkan consumes `SPIR-V` directly, serving as the final shader stage before the GPU. The `SPIR-V` binary format is designed for portability and flexibility, allowing it to be a powerful tool for developers because of its extensibility through the addition of new instructions, without the need to rebuild toolchains or shaders. This makes `SPIR-V` an essential part of Vulkan, especially for game developers creating large, diverse worldscapes and intricate graphics. + +Visit the following resources to learn more: + +- [@official@SPIR Overview - The Khronos Group Inc](https://www.khronos.org/spir/) +- [@official@SPIR-V - OpenGL Wiki - The Khronos Group](https://www.khronos.org/opengl/wiki/SPIR-V) diff --git a/src/data/roadmaps/game-developer/content/spline@nTiHZXRh2j3_FsBotmlGf.md b/src/data/roadmaps/game-developer/content/spline@nTiHZXRh2j3_FsBotmlGf.md index 39e8656d9..7d4150256 100644 --- a/src/data/roadmaps/game-developer/content/spline@nTiHZXRh2j3_FsBotmlGf.md +++ b/src/data/roadmaps/game-developer/content/spline@nTiHZXRh2j3_FsBotmlGf.md @@ -2,6 +2,7 @@ `Spline` is a mathematical function widely used in computer graphics for generating curves and surfaces. It connects two or more points through a smooth curve, often used in games for defining pathways, movement paths, object shapes, and flow control. Splines are not confined to two dimensions and can be extended to 3D or higher dimensions. Types of splines include `Linear`, `Cubic`, and `Bezier` splines. While linear splines generate straight lines between points, cubic and bezier splines provide more control and complexity with the addition of control points and handles. Developing a good understanding of splines and their usage can vastly improve the fluidity and visual aesthetics of a game. -Learn more from the following resources: +Visit the following resources to learn more: +- [@article@Spline in Mathematics](https://en.wikipedia.org/wiki/Spline_(mathematics)) - [@Video@In-depth video about Splines by Freya Holmér](https://youtu.be/jvPPXbo87ds?si=JX_G-gS81tOwQwjf) diff --git a/src/data/roadmaps/game-developer/content/spot@FetbhcK1RDt4izZ6NEUEP.md b/src/data/roadmaps/game-developer/content/spot@FetbhcK1RDt4izZ6NEUEP.md index a48fda6ec..a65c1b45d 100644 --- a/src/data/roadmaps/game-developer/content/spot@FetbhcK1RDt4izZ6NEUEP.md +++ b/src/data/roadmaps/game-developer/content/spot@FetbhcK1RDt4izZ6NEUEP.md @@ -1,5 +1,7 @@ # Spotlights -Spotlights are a common type of light in computer graphics and games that mimic the behavior of real-world spotlights. They offer a range of parameters to adjust their behavior, such as radius, cone angle, falloff, and intensity. +Spotlights are a common type of light in computer graphics and games that mimic the behavior of real-world spotlights. They offer a range of parameters to adjust their behavior, such as radius, cone angle, falloff, and intensity Spotlights are readily available out of the box in both Unreal and Unity game engines, making them an accessible and powerful tool for adding realistic and dynamic lighting to your scenes. -Spotlights are readily available out of the box in both Unreal and Unity game engines, making them an accessible and powerful tool for adding realistic and dynamic lighting to your scenes. \ No newline at end of file +Visit the following resources to learn more: + +- [@article@Computer Graphics Lighting](https://en.wikipedia.org/wiki/Computer_graphics_lighting) diff --git a/src/data/roadmaps/game-developer/content/state-machine@aJa_2xkZuSjQ5bt6Kj5oe.md b/src/data/roadmaps/game-developer/content/state-machine@aJa_2xkZuSjQ5bt6Kj5oe.md index 97ce82ba7..df56d5973 100644 --- a/src/data/roadmaps/game-developer/content/state-machine@aJa_2xkZuSjQ5bt6Kj5oe.md +++ b/src/data/roadmaps/game-developer/content/state-machine@aJa_2xkZuSjQ5bt6Kj5oe.md @@ -1,3 +1,7 @@ # State Machine -A **State Machine** is a conceptual model that is frequently used in game development to manage game states, or conditions. It consists of a number of different 'states', or modes, and the transitions between them. For instance, a mobile game could have states such as 'Start Screen', 'Playing', 'Paused' and 'Game Over'. Each one of these states will have specific commands associated and rules for transitioning to other states. This will govern the flow and behavior of the game. It can be used in AI character behaviors, UI systems, or game-level states. State Machines keep the code organised and manageable, making it easier for developers to implement complex game logic. \ No newline at end of file +A **State Machine** is a conceptual model that is frequently used in game development to manage game states, or conditions. It consists of a number of different 'states', or modes, and the transitions between them. For instance, a mobile game could have states such as 'Start Screen', 'Playing', 'Paused' and 'Game Over'. Each one of these states will have specific commands associated and rules for transitioning to other states. This will govern the flow and behavior of the game. It can be used in AI character behaviors, UI systems, or game-level states. State Machines keep the code organized and manageable, making it easier for developers to implement complex game logic. + +Visit the following resources to learn more: + +- [@article@State Machines in Games](https://gamedev.net/tutorials/_/technical/game-programming/state-machines-in-games-r2982/) diff --git a/src/data/roadmaps/game-developer/content/stencil-shadow@AEAVc8Ih4fctSGGVJG0Np.md b/src/data/roadmaps/game-developer/content/stencil-shadow@AEAVc8Ih4fctSGGVJG0Np.md index e6ae538be..d5a7a95fc 100644 --- a/src/data/roadmaps/game-developer/content/stencil-shadow@AEAVc8Ih4fctSGGVJG0Np.md +++ b/src/data/roadmaps/game-developer/content/stencil-shadow@AEAVc8Ih4fctSGGVJG0Np.md @@ -1,3 +1,7 @@ # Stencil Shadow -`Stencil shadows` are a technique used in 3D computer graphics for creating shadows. The stencil shadow algorithm operates by treating a shadow as a 3D volume of space, known as a shadow volume. Any part of the scene that lies inside this shadow volume will be in shadow. If it lies outside the shadow volume, it will be in light. The shadow volume is created by extruding the polygonal silhouette of a 3D object into space along the lines of sight from the light source. For equivalent complex objects, the number of edges or vertices to fill the stencil buffer will generally be less than the number of pixels needed to compute shadow maps, making stencil shadows more efficient in that regard. However, the shadows produced by this technique can look blocky or unrealistic if not further refined. \ No newline at end of file +`Stencil shadows` are a technique used in 3D computer graphics for creating shadows. The stencil shadow algorithm operates by treating a shadow as a 3D volume of space, known as a shadow volume. Any part of the scene that lies inside this shadow volume will be in shadow. If it lies outside the shadow volume, it will be in light. The shadow volume is created by extruding the polygonal silhouette of a 3D object into space along the lines of sight from the light source. For equivalent complex objects, the number of edges or vertices to fill the stencil buffer will generally be less than the number of pixels needed to compute shadow maps, making stencil shadows more efficient in that regard. However, the shadows produced by this technique can look blocky or unrealistic if not further refined. + +Visit the following resources to learn more: + +- [@article@Stencil Shadows Implementation](https://devforum.roblox.com/t/stencil-shadows-implementation/2079287) diff --git a/src/data/roadmaps/game-developer/content/texture@iBZ1JsEWI0xuLgUvfWfl-.md b/src/data/roadmaps/game-developer/content/texture@iBZ1JsEWI0xuLgUvfWfl-.md index 7744b42c6..8cebe33c8 100644 --- a/src/data/roadmaps/game-developer/content/texture@iBZ1JsEWI0xuLgUvfWfl-.md +++ b/src/data/roadmaps/game-developer/content/texture@iBZ1JsEWI0xuLgUvfWfl-.md @@ -2,7 +2,8 @@ `Texture` is the visual quality of an object. Where the `mesh` determines the shape or `topology` of an object, the texture describes the quality of said object. For instance, if there is a spherical mesh, is it supposed to be shiny? is it supposed to be rough? is it supposed to be of rock or of wood? questions of this ilk are often resolved using textures. Textures are often just 2D images that are wrapped onto 3D meshes. The 3D mesh is first divided into segments and unfurled; the 3D meshes are converted into 2D chunks, this process is known as `UV Unwrapping`. Once a mesh has been unwrapped, the textures in the form of an image are applied to the 2D chunks of the 3D mesh, this way the texture knows how to properly wrap around the mesh and avoid any conflicts. Textures determine the visual feel and aesthetics of the game. -Learn more from the following resources: +Visit the following resources to learn more: -- [@video@How Nintendo textures work](https://www.youtube.com/watch?v=WrCMzHngLxI) -- [@video@How Pixar textures work](https://www.youtube.com/watch?v=o_I6jxlN-Ck) +- [@article@Textures and Materials](https://gamedevinsider.com/making-games/game-artist/texturing-and-materials/) +- [@video@How Nintendo Textures Work](https://www.youtube.com/watch?v=WrCMzHngLxI) +- [@video@How Pixar Textures work](https://www.youtube.com/watch?v=o_I6jxlN-Ck) diff --git a/src/data/roadmaps/game-developer/content/tone-reproduction@RgC9TOc0wbr2QSuvrpIDV.md b/src/data/roadmaps/game-developer/content/tone-reproduction@RgC9TOc0wbr2QSuvrpIDV.md index fbb682d94..c77ce76c2 100644 --- a/src/data/roadmaps/game-developer/content/tone-reproduction@RgC9TOc0wbr2QSuvrpIDV.md +++ b/src/data/roadmaps/game-developer/content/tone-reproduction@RgC9TOc0wbr2QSuvrpIDV.md @@ -1,3 +1,8 @@ # Tone Reproduction -`Tone Reproduction` or `Tone Mapping` is the technique used in computer graphics to simulate the appearance of high-dynamic-range images in media with a more limited dynamic range. Print-outs, CRT, LCD monitors, and other displays can only reproduce a reduced dynamic range. This technique is widely used in gaming development, where developers employ it to improve the visual experience. The process involves taking light from a scene and mapping it to a smaller range of tones while preserving the visual appearance—i.e., regarding brightness, saturation, and hue. There are various tone mapping algorithms available, each with unique attributes suitable for different imaging tasks. \ No newline at end of file +`Tone Reproduction` or `Tone Mapping` is the technique used in computer graphics to simulate the appearance of high-dynamic-range images in media with a more limited dynamic range. Print-outs, CRT, LCD monitors, and other displays can only reproduce a reduced dynamic range. This technique is widely used in gaming development, where developers employ it to improve the visual experience. The process involves taking light from a scene and mapping it to a smaller range of tones while preserving the visual appearance—i.e., regarding brightness, saturation, and hue. There are various tone mapping algorithms available, each with unique attributes suitable for different imaging tasks. + +Visit the following resources to learn more: + +- [@article@Tone Mapping](https://graphics-programming.org/resources/tonemapping/index.html) +- [@article@Sound Design for Video Games](https://www.gamedeveloper.com/audio/sound-design-for-video-games-a-primer) diff --git a/src/data/roadmaps/game-developer/content/translucency--transparency@PuhXaRZ-Ql5PCqzMyz3en.md b/src/data/roadmaps/game-developer/content/translucency--transparency@PuhXaRZ-Ql5PCqzMyz3en.md index 2c2b2b0ca..3c00f4601 100644 --- a/src/data/roadmaps/game-developer/content/translucency--transparency@PuhXaRZ-Ql5PCqzMyz3en.md +++ b/src/data/roadmaps/game-developer/content/translucency--transparency@PuhXaRZ-Ql5PCqzMyz3en.md @@ -4,4 +4,4 @@ In the realm of physically-based rendering, **translucency** and **transparency* Visit the following resources to learn more: -- [@article@Learn OpenGL - Blending](https://learnopengl.com/Advanced-OpenGL/Blending) \ No newline at end of file +- [@article@Learn OpenGL - Blending](https://learnopengl.com/Advanced-OpenGL/Blending) diff --git a/src/data/roadmaps/game-developer/content/unity-3d@rNeOti8DDyWTMP9FB9kJ_.md b/src/data/roadmaps/game-developer/content/unity-3d@rNeOti8DDyWTMP9FB9kJ_.md index f05eab386..cbfdfa854 100644 --- a/src/data/roadmaps/game-developer/content/unity-3d@rNeOti8DDyWTMP9FB9kJ_.md +++ b/src/data/roadmaps/game-developer/content/unity-3d@rNeOti8DDyWTMP9FB9kJ_.md @@ -2,4 +2,9 @@ **Unity 3D** is a versatile, cross-platform game engine that supports the development of both 2D and 3D games. This game engine allows users to create a wide variety of games including AR, VR, Mobile, Consoles, and Computers in C#. It provides a host of powerful features and tools, such as scripting, asset bundling, scene building, and simulation, to assist developers in creating interactive content. Unity 3D also boasts a large, active community that regularly contributes tutorials, scripts, assets, and more, making it a robust platform for all levels of game developers. -- [@video@Unity in 100 Seconds](https://www.youtube.com/watch?v=iqlH4okiQqg) \ No newline at end of file +Visit the following resources to learn more: + +- [@official@Unity](https://unity.com/) +- [@official@Unity Engine for Video Games](https://unity.com/products/unity-engine) +- [@official@Creating a 3D Game](https://docs.unity3d.com/2021.2/Documentation/Manual/Quickstart3DCreate.html) +- [@video@Unity in 100 Seconds](https://www.youtube.com/watch?v=iqlH4okiQqg) diff --git a/src/data/roadmaps/game-developer/content/unreal-engine@a6H-cZtp3A_fB8jnfMxBR.md b/src/data/roadmaps/game-developer/content/unreal-engine@a6H-cZtp3A_fB8jnfMxBR.md index 6ac63e7d0..4be297221 100644 --- a/src/data/roadmaps/game-developer/content/unreal-engine@a6H-cZtp3A_fB8jnfMxBR.md +++ b/src/data/roadmaps/game-developer/content/unreal-engine@a6H-cZtp3A_fB8jnfMxBR.md @@ -2,7 +2,9 @@ The **Unreal Engine** is a powerful game development engine created by Epic Games. Used by game developers worldwide, it supports the creation of high-quality games across multiple platforms such as iOS, Android, Windows, Mac, Xbox, and PlayStation. Unreal Engine is renowned for its photo-realistic rendering, dynamic physics and effects, robust multiplayer framework, and its flexible scripting system called Blueprint. The engine is also fully equipped with dedicated tools and functionalities for animation, AI, lighting, cinematography, and post-processing effects. The most recent version, Unreal Engine 5, introduces real-time Global Illumination and makes film-quality real-time graphics achievable. +Visit the following resources to learn more: + - [@official@Unreal Engine Documentation](https://dev.epicgames.com/documentation/en-us/unreal-engine/unreal-engine-5-4-documentation) - [@official@Unreal Engine YouTube Channel](https://m.youtube.com/channel/UCBobmJyzsJ6Ll7UbfhI4iwQ) - [@video@Unreal in 100 Seconds](https://www.youtube.com/watch?v=DXDe-2BC4cE) -- [@feed@Unreal Source Discord](https://discord.gg/unrealsource) \ No newline at end of file +- [@feed@Unreal Source Discord](https://discord.gg/unrealsource) diff --git a/src/data/roadmaps/game-developer/content/vector@yLEyh5XJ3sl8eHD-PoSvJ.md b/src/data/roadmaps/game-developer/content/vector@yLEyh5XJ3sl8eHD-PoSvJ.md index dfc299144..c1ba25e27 100644 --- a/src/data/roadmaps/game-developer/content/vector@yLEyh5XJ3sl8eHD-PoSvJ.md +++ b/src/data/roadmaps/game-developer/content/vector@yLEyh5XJ3sl8eHD-PoSvJ.md @@ -1,4 +1,8 @@ # Vector `Vector` in game development is a mathematical concept and an integral part of game physics. It represents a quantity that has both magnitude and direction. A vector can be used to represent different elements in a game like positions, velocities, accelerations, or directions. In 3D games, it's commonly used to define 3D coordinates (x, y, z). For example, if you have a character in a game and you want to move it up, you'd apply a vector that points upward. Hence, understanding how to manipulate vectors is a fundamental skill in game development. + +Visit the following resources to learn more: + +- [@article@Practical Introduction to Vectors for Game Development](https://dev.to/marcbeaujean/practical-introduction-to-vectors-for-game-development-532f) - [@video@Introduction to Vectors (By Sebastian Lague)](https://youtu.be/m7VY1T6f8Ak?feature=shared) diff --git a/src/data/roadmaps/game-developer/content/visibility-and-occlusion@OcxesFnB5wO6VXrHYnhz-.md b/src/data/roadmaps/game-developer/content/visibility-and-occlusion@OcxesFnB5wO6VXrHYnhz-.md index 31c084a7d..3ae9d5715 100644 --- a/src/data/roadmaps/game-developer/content/visibility-and-occlusion@OcxesFnB5wO6VXrHYnhz-.md +++ b/src/data/roadmaps/game-developer/content/visibility-and-occlusion@OcxesFnB5wO6VXrHYnhz-.md @@ -1,3 +1,8 @@ # Visibility and Occlusion -"Visibility and occlusion" in computer graphics refers to the process of determining which parts of a particular object are visible from a certain viewpoint and which are hidden. "Occlusion" describes the phenomenon where an object is blocked from view by another object. Understanding these concepts is important for creating realistic renderings in game design. Real-time engines typically use data structures like BSP-trees, Quad-trees or Octrees to quickly identify occlusion. Advanced techniques such as Occlusion culling and Z-buffering are used to further optimize the representation of visible and hidden parts of 3D objects. Understanding the depths and dimensions related to visibility and occlusion empowers the game developer to enhance presentation and performance. \ No newline at end of file +"Visibility and occlusion" in computer graphics refers to the process of determining which parts of a particular object are visible from a certain viewpoint and which are hidden. "Occlusion" describes the phenomenon where an object is blocked from view by another object. Understanding these concepts is important for creating realistic renderings in game design. Real-time engines typically use data structures like BSP-trees, Quad-trees or Octrees to quickly identify occlusion. Advanced techniques such as Occlusion culling and Z-buffering are used to further optimize the representation of visible and hidden parts of 3D objects. Understanding the depths and dimensions related to visibility and occlusion empowers the game developer to enhance presentation and performance. + +Visit the following resources to learn more: + +- [@article@Introduction to Occlusion Culling](https://medium.com/@Umbra3D/introduction-to-occlusion-culling-3d6cfb195c79) +- [@article@Visibility in Computer Graphics](https://ima.udg.edu/~sellares/ComGeo/VisComGra.pdf) diff --git a/src/data/roadmaps/game-developer/content/visual-perception@1S1qPogijW2SQCiF7KLZe.md b/src/data/roadmaps/game-developer/content/visual-perception@1S1qPogijW2SQCiF7KLZe.md index 320658122..d0dbb0c94 100644 --- a/src/data/roadmaps/game-developer/content/visual-perception@1S1qPogijW2SQCiF7KLZe.md +++ b/src/data/roadmaps/game-developer/content/visual-perception@1S1qPogijW2SQCiF7KLZe.md @@ -1,3 +1,8 @@ # Visual Perception -Visual Perception is a fundamental aspect of game development, widely explored within the field of computer graphics. It involves the ability to interpret and understand the visual information that our eyes receive, essential to create immersive and dynamic visual experiences in games. The study involves the understanding of light, color, shape, form, depth, and motion, among others, which are key elements to create aesthetically pleasing and engaging graphics. Making full use of visual perception allows the game developers to control and manipulate how the gamers interact with and experience the game world, significantly enhancing not only the visual appeal but also the overall gameplay. +Visual Perception is a fundamental aspect of game development, widely explored within the field of computer graphics. It involves the ability to interpret and understand the visual information that our eyes receive, essential to create immersive and dynamic visual experiences in games. The study involves the understanding of light, color, shape, form, depth, and motion, among others, which are key elements to create aesthetically pleasing and engaging graphics. Making full use of visual perception allows the game developers to control and manipulate how the gamers interact with and experience the game world, significantly enhancing not only the visual appeal but also the overall gameplay. + +Visit the following resources to learn more: + +- [@article@Visual Psychology and Perception](https://www.gamedeveloper.com/design/it-s-all-in-your-mind-visual-psychology-and-perception-in-game-design) +- [@article@Expanding the Video Game Concept](https://link.springer.com/chapter/10.1007/978-3-030-45545-3_7) diff --git a/src/data/roadmaps/game-developer/content/vulkan-ray-tracing@tDGnV8dGIFr_diz4HcEjr.md b/src/data/roadmaps/game-developer/content/vulkan-ray-tracing@tDGnV8dGIFr_diz4HcEjr.md index 3143a9602..7f7f5fb98 100644 --- a/src/data/roadmaps/game-developer/content/vulkan-ray-tracing@tDGnV8dGIFr_diz4HcEjr.md +++ b/src/data/roadmaps/game-developer/content/vulkan-ray-tracing@tDGnV8dGIFr_diz4HcEjr.md @@ -1,3 +1,8 @@ # Vulkan Ray Tracing `Vulkan Ray Tracing` is an extension of the Vulkan API (Application Programming Interface), which is an open-source, cross-platform API developed by the Khronos Group. Its main goal is to provide developers with greater control over the GPU, enabling better performance and more efficient multisystem and multicore use. The Vulkan Ray Tracing extension provides a standardized ray tracing interface similar to DirectX Raytracing, enabling real-time ray tracing applications to be built on Vulkan. This extension includes a number of functionalities such as acceleration structure building and management, ray tracing shader stages and pipelines, and indirect ray tracing dispatch. + +Visit the following resources to learn more: + +- [@article@NVIDIA Vulkan Ray Tracing Tutorial](https://developer.nvidia.com/rtx/raytracing/vkray) +- [@official@Ray Tracing with Vulkan](https://docs.vulkan.org/guide/latest/extensions/ray_tracing.html) diff --git a/src/data/roadmaps/game-developer/content/vulkan@yPfhJSTFS7a72UcqF1ROK.md b/src/data/roadmaps/game-developer/content/vulkan@yPfhJSTFS7a72UcqF1ROK.md index c9f0499a9..df4aeed70 100644 --- a/src/data/roadmaps/game-developer/content/vulkan@yPfhJSTFS7a72UcqF1ROK.md +++ b/src/data/roadmaps/game-developer/content/vulkan@yPfhJSTFS7a72UcqF1ROK.md @@ -1,3 +1,9 @@ # Vulkan -Vulkan is a high-performance, cross-platform API for graphics and computation tasks published by the Khronos Group. Unlike other graphics APIs, Vulkan provides developers with direct control over the GPU and aims to take full advantage of multicore processors, enabling significant performance gains in 3D applications. It supports Windows, Linux, Android, iOS, and MacOS platforms. It's built from ground-up to ensure minimal overhead on the CPU side, providing a more balanced CPU/GPU usage, hence not limiting the game to a single core. Vulkan can be seen as the successor to OpenGL, as it offers lower-level functionality and more efficient multi-threading capabilities. \ No newline at end of file +Vulkan is a high-performance, cross-platform API for graphics and computation tasks published by the Khronos Group. Unlike other graphics APIs, Vulkan provides developers with direct control over the GPU and aims to take full advantage of multicore processors, enabling significant performance gains in 3D applications. It supports Windows, Linux, Android, iOS, and MacOS platforms. It's built from ground-up to ensure minimal overhead on the CPU side, providing a more balanced CPU/GPU usage, hence not limiting the game to a single core. Vulkan can be seen as the successor to OpenGL, as it offers lower-level functionality and more efficient multi-threading capabilities. + +Visit the following resources to learn more: + +- [@official@Vulkan](https://www.vulkan.org/) +- [@official@What is Vulkan?](https://docs.vulkan.org/guide/latest/what_is_vulkan.html) +- [@article@Vulkan Driver Support](https://developer.nvidia.com/vulkan-driver) diff --git a/src/data/roadmaps/game-developer/content/webgl@CeydBMwckqKll-2AgOlyd.md b/src/data/roadmaps/game-developer/content/webgl@CeydBMwckqKll-2AgOlyd.md index bec09878d..5c0b90654 100644 --- a/src/data/roadmaps/game-developer/content/webgl@CeydBMwckqKll-2AgOlyd.md +++ b/src/data/roadmaps/game-developer/content/webgl@CeydBMwckqKll-2AgOlyd.md @@ -1,3 +1,8 @@ # WebGL -`WebGL` (Web Graphics Library) is a JavaScript API that is used to render interactive 2D and 3D graphics within any compatible web browser without the use of plug-ins. It leverages the power of the Graphics Processing Unit (GPU), which provides high-efficiency rendering. WebGL programs consist of control code written in JavaScript and shader code that's written in OpenGL Shading Language (GLSL), allowing developers to control the fine details of graphics rendering. Besides its compatibility with HTML5 and its ability to render on any platform that supports the web, WebGL is entirely integrated into all web standards, facilitating GPU-accelerated image processing and effects. \ No newline at end of file +`WebGL` (Web Graphics Library) is a JavaScript API that is used to render interactive 2D and 3D graphics within any compatible web browser without the use of plug-ins. It leverages the power of the Graphics Processing Unit (GPU), which provides high-efficiency rendering. WebGL programs consist of control code written in JavaScript and shader code that's written in OpenGL Shading Language (GLSL), allowing developers to control the fine details of graphics rendering. Besides its compatibility with HTML5 and its ability to render on any platform that supports the web, WebGL is entirely integrated into all web standards, facilitating GPU-accelerated image processing and effects. + +Visit the following resources to learn more: + +- [@article@WebGL](https://en.wikipedia.org/wiki/WebGL) +- [@article@Getting Started with WebGL](https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/Tutorial/Getting_started_with_WebGL)