From 8ef30f68dc906a4235dac65ab01a91dc7af410b3 Mon Sep 17 00:00:00 2001 From: Nathan Lovato Date: Sat, 7 Sep 2019 11:13:59 +0200 Subject: [PATCH] Update the game concept --- GAME_CONCEPT.org | 401 ++++++++++++++++++++++------------------------- 1 file changed, 186 insertions(+), 215 deletions(-) diff --git a/GAME_CONCEPT.org b/GAME_CONCEPT.org index 16b84fc..d6192bd 100644 --- a/GAME_CONCEPT.org +++ b/GAME_CONCEPT.org @@ -5,8 +5,6 @@ #+AUTHOR: Nathan Lovato -/The concept is still a living document so that we have a base for design discussions. At this stage, we can still change the core mechanic, if you have something that's as versatile and that can fit the teaching goals for the project. See the [[*Possible other uses][first note]] below/ - * Gameplay ** Core mechanic: pulling yourself with the Hook @@ -27,13 +25,6 @@ - Charge onto enemies with the cannonball attack - Lunge down on enemies and stun them if falling from above - - Note taken on [2019-04-30 mar. 17:49] \\ - Hook would not only fit the need for giving the player a versatile tool: it would allow us to play with physics, vector math, and visually debugging the game. It also allows us to have related upgrades. - I'm open to any other mechanic or tool with the same potential, e.g. the spear from one of Shaun Spaulding's jams. - - - Note taken on [2019-05-01 mer. 07:29] \\ - The ideas above are for reference, to give us paths to build upon the core mechanic and show its potential. - *** Controls **** Mouse and keyboard @@ -57,197 +48,6 @@ Regardless of the control scheme, use a snapping system to help direct the player towards hooking points. Even on rails or long hookable surfaces, we might want to have a limited number of points, e.g. in the middle and on the sides, to help the player better hook using a gamepad. -* Course - -** Teaching goals - -*** Game design - - - *Using one mechanic for many purposes*: giving the player a versatile tool. - - *Game feel*: making the game feel alive by adding life and feedback to the environment and the player's actions - -*** Game creation - - - *Game creation workflow*: the process and broad steps to follow to get a game project started, prototyping, and getting the character controller, camera, etc. to feel right. - - *Making multiple behaviors interact together*: especially for the character controller, getting the different moves (/e.g. jump, wall jump, slide/) to flawlessly flow into one another. - -*** Metroidvania essentials - - - *Platforming character controller* and related code structure: behaviors, aggregation-based approach. - - *Level design*, creation workflow, and connecting frames. Guiding the player through the environment, looping, and branching paths. - - *Unlocking mechanics* through upgrades and controlling player progression. - - *Camera*: helping the player with a camera that moves ahead of the character and looks where the player wants to look. - -** List of topics - - /This is a list of topics that can be broken down or merged into more or fewer videos. From there, we should arrange them to form the 3 series (free, indie, pro) with clearer lists of topics and videos, and refine as we move forward with the project's pre-production./ - - /This isn't a list of videos for the course: we should pick the scope from there./ - - # Remember for teaching: copy paste code snippets instead of writing every line. - # Check e.g. Brilliant for assignment examples and text-based resources. - -*** Extra video ideas - - /Ideas of modules to extend the course/ - - Collecting keys and opening closed doors - Modular AI for enemies, different algorithms to find paths, flee the player... - Porting an algorithm to C or C++ with NativeScript/GDNative. E.g. a heatmap algorithm would run slowly in GDScript - Minimap: designing and implementing a map that updates as you explore new frames, and that can show unexplored areas - -**** Creating tools for debugging and testing the game efficiently - - Series on designing and creating good tools, be it in the viewport, as in the waypoint platform tutorial, or in-game, like a tool to fly through the world. - - Tools should always answer a need: figure out what costs you or what's going to cost you time, prioritize them, figure out solutions, and calculate the time they'd take you. - Tools for level design/testing/free camera - Tools for code/debug code - -**** Boss - - Designing and implementing a boss, with an intro and outro cut-scene, and phases. - -** Free series - - Create a simple yet compelling platform game, learning the creation workflow from an indie game dev's perspective. - -*** Intro: what this course is about, what you'll learn, how to make the most of it - - Target audience - Pre-requisites - What you'll learn: list of content - How this course is designed/teaching style - Free resources to get up to speed - -*** How to make video games: getting started - - *Goal*: Learn what it takes to make games when you have no experience, and how you can get started - - - Overview of the process - - Avoiding common pitfalls as a beginner - - Reassure people about programming: it doesn't have to be hard, it can also be fun - - Share practical resources to get started with Godot or GDevelop - - References: - - - https://www.youtube.com/watch?v=j48LtUkZRjU - - https://www.youtube.com/watch?v=z06QR-tz1_o - - Playlist by Extra credits https://www.youtube.com/watch?v=z06QR-tz1_o&list=PLhyKYa0YJ_5C6QC36h5eApOyXtx98ehGi - -**** Intro - - You want to make video games, but you don't know how or where to start? In this video, you'll learn Everything you need to know to get started and create your first game. - - 1. How indie developers make games - 2. Free Software you can use to create your own games - 3. Free resources and tutorials to get started - - I'm Nathan, and I've been teaching game creation and art for years, with Free Software like the Godot game engine and the digital painting app Krita. - -**** Notes - - Make something that you can do at first - Can I make a game without programming? - - No. But wait! Maybe programming isn't what you think. - Changing values in the Inspector is programming. - You can learn it slowly, start simple, and write more complicated code as you progress. - -**** Summary - -*** How it's like to work as a game designer: a day in the life of an indie game designer - -*** How to make games: the workflow - - Cover the workflow to pre-produce, then produce a game, using the metroidvania 2d project as an example - Only about creating the game: - - Prototyping, experimenting - You can only plan from production - -*** Metroidvania design analysis: what makes a (good) Metroidvania? - - Take the analysis from the course's README/prototype jam doc - -*** Basic motion and input: ground, air control - -*** Basic hook mechanic - -*** Simple lookahead camera: following the player's velocity - -*** Creating a level with Tilemaps and scenes - -*** Simple transition between two levels - -*** Adding BGM and sounds to the game - -*** Character health and taking damage on contact - -*** Death and restarting the game - -*** Basic patrol AI: detects gaps and walls, moves within a range - -*** Integrating assets into the game - -*** Building and distributing the game for desktop - - Publishing on Itch.io? - -*** Bonus - -**** Creating a game soundtrack with Free Software /Include the plugins, virtual instruments you found/ (beginner/introductory tut) - -**** Doing sound design for your game with Free Software (beginner/introductory tut) - -** Premium series - -*** Indie - - /This is a list of topics, some can take several videos/ - - Scaling the hook's power based on distance - Wall jump - Ledge detection, grab ledge, and let the player jump - - Unlocking new abilities - - Level loops: Exploring the possibilities of the core mechanic - Designing frames with pre-made scenes, level loops, and tilemaps - Teaching the player how to play through level design: designing an in-game tutorial without words - - Designing game animations in Godot - - Designing combat mechanics, damaging enemies: e.g. hook pulls character to enemy and kills it, enemies use projectiles? - - Simple flying enemy AI - - Hook: Pulling objects - - Sound design: how to choose the sounds and BGM for your game to improve the experience and game feel /Practical sound design tips like boosting basses, listening to the game the eyes closed.../ - -*** Pro - - /This is a list of topics, some can take several videos/ - - Design analyses of character movement, camera, etc. in other platform games - - Ledge: teleport to the platform - Polish: Storing input before touching the ground - Polish: letting the player jump right after starting a fall - - Refining the camera: better prediction of the player's motion - - Hook: Breaking fragile surfaces - Hook: Removing armors from enemies - - How to architecture the map at a meta level to manage the player's progression - - Designing and implementing flexible AI: Series on pathfinding, code structure to build reusable AI behaviors for flying enemies - - Code structure: Rundown of the project's code structure and abstractions - Code structure: Patterns we use in the project - * Prototypes ** DONE Base movement with the hook CLOSED: [2019-05-03 ven. 10:18] @@ -441,23 +241,194 @@ - Store input: jump after fall start, or hook - Allow the player to jump right after a fall started, and to hook if the input was right before actually the snap detector detected the hooking point. Maybe only when falling? -** TODO Predicting player motion - :PROPERTIES: - :EFFORT: 3:00 - :END: +* Course + +** Teaching goals - It's hard to track how a hook will pull the character. It'd be nice to have tools to visually debug the characters projected arcs of motion, to get a sense for what the hook will do. +*** Game design -As the player can control their horizontal motion mid-air, they can deviate from the curve, but still, as it's the core gameplay, we should have some tools to track and fine tune player motion. + - *Using one mechanic for many purposes*: giving the player a versatile tool. + - *Game feel*: making the game feel alive by adding life and feedback to the environment and the player's actions -*** Questions +*** Game creation + + - *Game creation workflow*: the process and broad steps to follow to get a game project started, prototyping, and getting the character controller, camera, etc. to feel right. + - *Making multiple behaviors interact together*: especially for the character controller, getting the different moves (/e.g. jump, wall jump, slide/) to flawlessly flow into one another. + +*** Metroidvania essentials + + - *Platforming character controller* and related code structure: behaviors, aggregation-based approach. + - *Level design*, creation workflow, and connecting frames. Guiding the player through the environment, looping, and branching paths. + - *Unlocking mechanics* through upgrades and controlling player progression. + - *Camera*: helping the player with a camera that moves ahead of the character and looks where the player wants to look. + +** List of topics + + /This is a list of topics that can be broken down or merged into more or fewer videos. From there, we should arrange them to form the 3 series (free, indie, pro) with clearer lists of topics and videos, and refine as we move forward with the project's pre-production./ + + /This isn't a list of videos for the course: we should pick the scope from there./ + + # Remember for teaching: copy paste code snippets instead of writing every line. + # Check e.g. Brilliant for assignment examples and text-based resources. + +*** Extra video ideas + + /Ideas of modules to extend the course/ - 1. Which motions can we predict accurately? - 2. Can we use this information to improve the movement? - 1. At least we can use it to better illustrate how the motion works in videos/tutorials - -# ** Displaying player input - -# To showcase switch between mouse/gamepad, illustrate differences in how you'd use the control schemes, advantages of each. -# For videos but also for debugging, playtesting. + Collecting keys and opening closed doors + Modular AI for enemies, different algorithms to find paths, flee the player... + Porting an algorithm to C or C++ with NativeScript/GDNative. E.g. a heatmap algorithm would run slowly in GDScript + Minimap: designing and implementing a map that updates as you explore new frames, and that can show unexplored areas +**** Creating tools for debugging and testing the game efficiently + + Series on designing and creating good tools, be it in the viewport, as in the waypoint platform tutorial, or in-game, like a tool to fly through the world. + + Tools should always answer a need: figure out what costs you or what's going to cost you time, prioritize them, figure out solutions, and calculate the time they'd take you. + Tools for level design/testing/free camera + Tools for code/debug code + +**** Boss + + Designing and implementing a boss, with an intro and outro cut-scene, and phases. + +** Free series + + Create a simple yet compelling platform game, learning the creation workflow from an indie game dev's perspective. + +*** Intro: what this course is about, what you'll learn, how to make the most of it + + Target audience + Pre-requisites + What you'll learn: list of content + How this course is designed/teaching style + Free resources to get up to speed + +*** How to make video games: getting started + + *Goal*: Learn what it takes to make games when you have no experience, and how you can get started + + - Overview of the process + - Avoiding common pitfalls as a beginner + - Reassure people about programming: it doesn't have to be hard, it can also be fun + - Share practical resources to get started with Godot or GDevelop + + References: + + - https://www.youtube.com/watch?v=j48LtUkZRjU + - https://www.youtube.com/watch?v=z06QR-tz1_o + - Playlist by Extra credits https://www.youtube.com/watch?v=z06QR-tz1_o&list=PLhyKYa0YJ_5C6QC36h5eApOyXtx98ehGi + +**** Intro + + You want to make video games, but you don't know how or where to start? In this video, you'll learn Everything you need to know to get started and create your first game. + + 1. How indie developers make games + 2. Free Software you can use to create your own games + 3. Free resources and tutorials to get started + + I'm Nathan, and I've been teaching game creation and art for years, with Free Software like the Godot game engine and the digital painting app Krita. + +**** Notes + + Make something that you can do at first + Can I make a game without programming? + + No. But wait! Maybe programming isn't what you think. + Changing values in the Inspector is programming. + You can learn it slowly, start simple, and write more complicated code as you progress. + +**** Summary + +*** How it's like to work as a game designer: a day in the life of an indie game designer + +*** How to make games: the workflow + + Cover the workflow to pre-produce, then produce a game, using the metroidvania 2d project as an example + Only about creating the game: + + Prototyping, experimenting + You can only plan from production + +*** Metroidvania design analysis: what makes a (good) Metroidvania? + + Take the analysis from the course's README/prototype jam doc + +*** Basic motion and input: ground, air control + +*** Basic hook mechanic + +*** Simple lookahead camera: following the player's velocity + +*** Creating a level with Tilemaps and scenes + +*** Simple transition between two levels + +*** Adding BGM and sounds to the game + +*** Character health and taking damage on contact + +*** Death and restarting the game + +*** Basic patrol AI: detects gaps and walls, moves within a range + +*** Integrating assets into the game + +*** Building and distributing the game for desktop + + Publishing on Itch.io? + +*** Bonus + +**** Creating a game soundtrack with Free Software /Include the plugins, virtual instruments you found/ (beginner/introductory tut) + +**** Doing sound design for your game with Free Software (beginner/introductory tut) + +** Premium series + +*** Indie + + /This is a list of topics, some can take several videos/ + + Scaling the hook's power based on distance + Wall jump + Ledge detection, grab ledge, and let the player jump + + Unlocking new abilities + + Level loops: Exploring the possibilities of the core mechanic + Designing frames with pre-made scenes, level loops, and tilemaps + Teaching the player how to play through level design: designing an in-game tutorial without words + + Designing game animations in Godot + + Designing combat mechanics, damaging enemies: e.g. hook pulls character to enemy and kills it, enemies use projectiles? + + Simple flying enemy AI + + Hook: Pulling objects + + Sound design: how to choose the sounds and BGM for your game to improve the experience and game feel /Practical sound design tips like boosting basses, listening to the game the eyes closed.../ + +*** Pro + + /This is a list of topics, some can take several videos/ + + Design analyses of character movement, camera, etc. in other platform games + + Ledge: teleport to the platform + Polish: Storing input before touching the ground + Polish: letting the player jump right after starting a fall + + Refining the camera: better prediction of the player's motion + + Hook: Breaking fragile surfaces + Hook: Removing armors from enemies + + How to architecture the map at a meta level to manage the player's progression + + Designing and implementing flexible AI: Series on pathfinding, code structure to build reusable AI behaviors for flying enemies + + Code structure: Rundown of the project's code structure and abstractions + Code structure: Patterns we use in the project +