Games Development
MIB - DST 61104 GAMES DEVELOPMENT.pdf,作者 tian dongWEEK 1
The teacher began by focusing on the core of the course:
The course outlined the development of video games, from the DOS era to immersive games, and identified the core elements of mainstream game genres like RPGs and action games, such as the RPG's plot and character development system. The course also compared waterfall (linear progression) and agile (iterative and flexible) development methodologies, prioritizing the agile model for subsequent group projects.
Core Tools and Resources
1. Required Tools: Godot Engine (scene building and scripting, open source and free for student development) and Blender (3D character/prop modeling); supplementary tools include Inkscape (UI icons) and GIMP (texturing). The class demonstrated the basic Blender modeling process.
2. Recommended Resources: Clear Code's Godot tutorial series and the GameDev.net forum. You can use ChatGPT to organize design ideas, but avoid over-reliance on it. He emphasized the advantages of open source software (OSS) and reminded us to avoid licensing issues.
The teacher also introduced our coursework requirements for this semester.
WEEK 2
This week, the teacher invited several students to come up to the stage to share our first game ideas from Week 1.
He also asked us to start using tools, taught us the basics of modeling in Blender and Godot, and demonstrated how to import Blender resources into Godot.
WEEK 3
This week's game design class focused on presentations and feedback. Each student brought in a preliminary model of their game. Some had already created complete characters, while others were still fine-tuning details. Seeing everyone's work progress from sketches to 3D models was quite rewarding.
The teacher highlighted several key points:
• Model proportions must be accurate, for example, the character's body structure shouldn't be too rigid;
• Lighting is crucial, as it affects the overall atmosphere;
• When exporting models, pay attention to the modifier settings, otherwise the file may be corrupted.
During the class, the teacher also demonstrated some practical Blender techniques, such as how to combine cubes and cylinders to create tables, bottles, and even game props. He also explained how to use Subdivision Surface to make models more rounded. While these techniques may seem simple, they require continuous practice.
Finally, the teacher arranged a group discussion for us to finalize the game's theme and gameplay direction.
Overall, the biggest achievement of this week was turning the concept into a truly "visible" 3D prototype. Although it's not perfect yet, I can already feel the game world being "built" bit by bit.
WEEK 4
During this week each of our groups gave a presentation about our GDD.
<WEEK 5>
This week we gave a presentation on what we changed from Week 4 to Week 5. The changes were quite big because there were some issues with the layout of our previous GDD, so we redesigned it.
The teacher gave us four people feedback on the Double Pendulum Pachinko we studied.
Regarding the Scoring Mechanism
The teacher primarily discussed the scoring logic in the game. He mentioned that the score progression when a coin lands in different slots needs to be more clearly defined. The current rules are a bit confusing. For example, a coin landing in a "losing slot" loses points, while landing in a "winning slot" doubles the points. The teacher suggested using a multiplier structure (2 → 4 → 8 → 16 → 32) to create a chain reaction of rewards for players.
Areas for Improvement
The teacher believes that while the current game is somewhat fun, players may not fully understand why they gain or lose points. The score feedback isn't intuitive enough, which can lead to players feeling lost. He suggested making the score progression more logical and providing more visual feedback to enhance player engagement.
Teacher's Suggestions
The teacher suggested starting with a simple "scoring simulation" to verify the validity of the rules, rather than aiming for complex numerical values or high scores from the outset. Small-scale testing can help identify logical flaws more quickly and allow for gradual refinement of the game structure.
Overall Evaluation
The teacher praised our progress, stating that we were on the right track and had interesting ideas. He encouraged us to continue refining the details during future development, ensuring players could clearly understand the rules and enjoy a coherent interactive experience.
Afterwards, the teacher gave some good ideas a score and asked us to choose the games we were interested in.
We still choose Double Pendulum Pachinko.
<WEEK 6>
This week's course continued our focus on fundamental programming logic and 3D scene control in game development. The instructor guided us to further familiarize ourselves with object properties, functions, and variables within the game engine, and through hands-on practice, we learned how to control the position, rotation, and scale of game characters.
Furthermore, we discussed the importance of physics engines in real-world game development, laying the foundation for advanced motion control and physics calculations.
🧠 Part 1: Logic & Functions
The teacher first reviewed last week's programming concepts, focusing on:
• The definition and function of variables: how to store data and call it between different functions.
• How to create functions: using `fun` to define a functional module, making the program structure clearer.
• The importance of block structure and indentation: ensuring the correct execution of program logic.
• The significance of the `return` statement: used to output function results, forming a logical loop of input → processing → output.
The teacher illustrated this with examples:
When we create an `addUp(a, b)` function, we can make it accept two values and return the sum. This helps us understand how to make a program have a complete logic of "input → operation → output".
He also emphasized the importance of **readability** in programming—code should not only run, but also be understandable to humans.
🕹️ Part Two: 3D Environment Setup
Moving into the game scene creation section, the instructor guided us through building a camera, objects, and lighting in the editor.
Key learning points included:
• How to move and position objects in 3D space (controlled via the X, Y, and Z axes).
• Using the Transform property to adjust the position, rotation, and scale of objects.
• Understanding the difference between global and local coordinates.
• How to set lighting and the environment skybox.
The instructor demonstrated how to change a character's position in the frame using coordinate values:
"If we drag an object along the Z-axis, it will move back and forth; if we change the Y-axis, it will float up and down."
These exercises helped us understand the basic concepts of 3D space, providing a foundation for character animation and camera control.
🧍♂️ Part Three: Character Control
In the second half of the lesson, the instructor guided us to establish the logical control for character movement:
• Programming to make the character move forward, backward, up, and down.
• Using conditional statements (if statements) and loop structures (while/for loops) to achieve continuous movement.
• Learning how to add time intervals (delay) to control movement speed, making the movements more natural.
• Using debug logs to test motion data and understand the principles behind numerical changes.
The instructor demonstrated how to make the character move forward 500 units in a loop and then return to the starting point. This process helped us understand the control logic of "condition met → action executed → return to initial state".
He also cautioned:
“In real games, character movement is typically controlled by a **physics engine**, not simply numerical changes.”
⚙️ Part Four: Extension and Advanced Preview
At the end of the course, the instructor previewed next week's content:
• Vector mathematics will be introduced to control the character's speed and direction.
• We will further explore how to use the physics engine to achieve more realistic physical movement.
• We encourage everyone to familiarize themselves with the basic move, rotate, and scale operations, and try combining them with keyboard input.
The instructor specifically emphasized:
“This week's focus was on familiarizing ourselves with script structure and logic control. Next week, we will bring these scripts to life, truly allowing the character to move according to the laws of physics.”
🧩 Week 6 Homework
📘 Homework Topic: Scripting Practice
📍 Homework Requirements:
1. Practice using scripts to control objects (e.g., move, rotate, or scale) in a game engine.
2. Try using the syntax structures discussed in class:
• Variables
• Functions
• Conditional statements (if/else)
• Loops (for/while)
3. The focus is on understanding how functions and variables interact and observing their actual effects in the scene.
🎮 Suggested Direction:
The instructor encourages students:
“Play around with scripting — see how changing values affects your object.”
This means that this assignment does not require a complete game, but rather you are asked to experiment to understand how code affects game objects.
<WEEK 7>
In class, the teacher first asked each group to come to the stage and report what we had done. Later in the course, the teacher mainly focused on 3D scene building and character animation control within the Godot engine. Starting with the most basic 3D environment creation, the teacher gradually explained character import, animation settings, application of physical properties, and the logic implementation of movement and jumping.
🧱3D Scene Creation
The instructor first led us through a review of the basic components of a 3D world and demonstrated how to create basic planar ground (Plane) and static objects (StaticBody3D) in Godot.
We used MeshInstance3D to generate the ground model;
We added CollisionShape3D to the ground to enable physical interaction with the characters;
We explained how to adjust the size, material, and color to make the scene more visually appealing.
🧍♂️Character Model and Animation Import
Next, the teacher demonstrated how to import character sprite animations (Sprite3D):
By setting AnimatedSprite3D, the character can play animations in 3D space;
The animation frames are divided into 4x4 grids from the texture;
Multiple animations are named and configured (e.g., "walk left", "walk right", "idle", etc.);
The teacher explained how to control the playback order and looping in the animation editor.
The teacher also reminded us that different texture layouts can be customized by adjusting the horizontal and vertical frame counts, which is important for importing character assets with different styles.
⚙️Physics Components and Character Movement
One of the course's key focuses is the character's physics system and motion control.
The instructor introduced the differences between RigidBody3D and CharacterBody3D:
RigidBody3D is controlled by a complete physics simulation;
CharacterBody3D is suitable for customizing game characters' movement and jumping.
The instructor set up a collider (CollisionShape3D) for the character to prevent them from passing through the ground;
The concepts of "velocity" and "gravity" (gravitational acceleration 9.8 m/s²) were explained;
A natural falling effect was achieved using `velocity.y += gravity * delta`;
The `move_and_slide()` function was used to allow the character to move smoothly.
🕹 Input Control and Jump Logic
The teacher guided us in writing basic role control logic:
The concept of an input map was explained;
It demonstrated how to move a character using the keyboard arrow keys;
It implemented the logic for determining whether a jump can only be triggered on the ground;
It also used animation to switch the character between walking, idle, and jumping.
🧩 Collision Detection and Optimization
In the latter half of the lesson, the instructor also explained the optimization of collision boxes:
In games, collision shapes don't need to perfectly fit the model;
Appropriately simplifying the collision box can reduce computation and improve runtime efficiency;
Detection can be performed using BoxShape3D or CylinderShape3D;
The basic logic of "Collision Layer" and "Collision Mask" was introduced.
Completed demonstration video
The teacher summarized today's key points:
- How to create 3D scenes and physical ground;
- Importing and setting up 3D animated characters;
- Using the physics system to control character movement and jumping;
- Learning basic input control and animation switching;
- Understanding the relationship between collision detection and performance optimization.
The teacher reminded us to continue practicing character movement logic next week, trying to add more interactions and collision events to enrich the gameplay.








Comments
Post a Comment