Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Write Learn Godot: beginners edition #80

Closed
NathanLovato opened this issue Jul 7, 2019 · 5 comments · Fixed by #98
Closed

Write Learn Godot: beginners edition #80

NathanLovato opened this issue Jul 7, 2019 · 5 comments · Fixed by #98

Comments

@NathanLovato
Copy link
Collaborator

NathanLovato commented Jul 7, 2019

Write a curated guide for beginners to learn Godot with free resources. This guide aggregates quality resources and gives the reader a path to learn to get started with Godot and game creation in general.

Target audience: programming beginners, computer science students, and amateurs who want to learn game development and Godot and need some guidance.

This guide should only contain free resources. The idea is to have high quality and relevant content to link to, video or text, for programming beginners to get started. We're going to use it to direct people to great content around Godot.

The guide should be:

  1. engaging, the goal is to help people learn and keep going.
  2. curated, we should stick to high quality content.
  3. structured, it should provide clear sections, goals, and milestones.

Goal

If a complete beginner goes through the entire path, they should acquire enough experience and confidence to start exploring the engine on their own and creating their own games.

High-level structure

This structure is just here to get the project started. This will likely be an iterative project and a living document.

  1. Getting started with game development
    • Help people get started with programming and gamedev in general, for people who have 0 development experience
  2. Getting started with Godot
    • A path with text-based and video resources that the user can watch in a specific order
  3. Making your first game(s)
    • Aside from Godot, this section should also help the reader learn how to make a game in general, understand the workflow
  4. Become a more independent developer
    • This milestone should help the reader strengthen their programming and game design fundamentals, as well as their understanding of Godot. Start to introduce fundamental design principles.
  5. Going further
    • Give the reader specific places and guides to go further with game design, game development, and godot.

Once it is done, the guide will be open to Contributors. As such we should also have some guidelines regarding the type of content that can be included.

@NathanLovato
Copy link
Collaborator Author

@razcore-art Could you work on an outline first and a collection of links? I think that to get started, we should create the path’s structure, list and sort resources (tutorials, guides, …), but also list gaps in existing resources out there, tutorials that nobody made and that people would need.

I am here to help you find tuts, videos, etc. on a given topic so don't hesitate to ask.

@razcore-rad
Copy link

razcore-rad commented Jul 29, 2019

Just to get this straight, if this is a guide for game developers, we most likely have to differentiate between programming, art (visual & audio), if it's targeting programming then, under 5. Going further we'd have to place some info on how to explore other topics in art, marketing & PR, project management etc.

It's wroth saying that maybe we should get in touch with the guy that created the project-awesome and see what he thinks of expanding the idea to include a guided path and not only links to resources... if it's something you think might be a good idea. With that in mind awesome godot is probably the go-to place to find quite a good curated list of resources on learning Godot so I'll be using it extensively.

I'll start off with the "game programmer path":

Outline

I think it's a good idea that each sub-chapter should end up with a working example mini-game of sorts, that would put in practice the content being thought.

  1. Getting started with game programming to spark conversation

    1. Introduction TODO: resources

      • what does it mean to be a Game Programmer, difference between it and Game Developer
      • what other roles are there within a Game Development pipeline
      • overview of career in gamedev.: here would be a good opportunity to include links to interviews of freelancers, gamedevs etc.
    2. Total beginner (0 experience in programming) TODO: resources

      • start here if you want to learn how to "make the computer do stuff", what that means, how to "communicate" our intentions to the machine
      • fundamentals of programming: high level explanation of what programming is, the life-cycle of a program through Godot/GDScript lens, meaning that the game engine is basically a framework/tool that we use in order to not have to code everything from scratch. This entails the fact that there is a certain functionality in place to handle stuff for us: eg. the game loop. This would be an overview of what programming in a game engine means and how we should think of our program. It's not a simple linear input -> process -> output program, but rather input -> game loop program that terminates only when the gamers wants. this is a crucial distinction between an "old-style" console program and a "multimedia" program that offers interaction & so on.
      • super basic/core programming concepts explained: variables, control sequences (if, for etc.), what are iterations, functions, classes, "reserved key" words, why are they needed, structure of a program that does something
      • example project that exemplifies the most basic/core concepts that does something useful, sort of the mandatory "hello world" of games.
  2. Getting started with Godot
    Rather than including a chapter on interface I think it's best to just get hands-on and introduce the UI & tools as we go. With that in mind, we can just have a short description of various step-by-step tutorials out there, starting with the official docs:

    1. Official Godot step-by-step docs, text
    2. KidsCanCode circle jump, video: probably one of the best resources out there
    3. devga's 2D airplane, text
    4. BornCG 3D roll the ball, video: we should definitely include some 3D example as well, especially since there's still little info on it so at this point, any finished step-by-step project out there is good to have
  3. Making your first game(s)

    1. Debunking the misconception that making games is supereasy. Yes it can be easy in some cases, if we limit ourselves to some graphic shapes type of game (see KidsCanCode circle jump game), but most times when we think of games, especially nowadays we're thinking of AAA games. So it's important to have a deep understanding of what the game development workflow is and how to create realistic expectations.

    2. Destructuring game development: a discussion of what games are made of in terms of systems that aren't provided by the game engine itself. Especially reusable systems so that as we further our careers we won't have to start from scratch each time: save management system, cut-scene system, dialogue system, inventory system, AI system, multiplayer/network system etc. Of course some of these are game specific, for example an adventure game would most definitely have a dialogue system, but not necessarily an inventory system, while for RPGs inventory systems are a must. missing resource: I don't know of any discussion/article on this topic, just scattered topics and not most not even for Godot

    3. It might be worth noting that OpenRPG could be a good candidate for a step-by-step somewhat complex guide for game creation which includes some of the systems discussed above. missing-resource: I don't know of any complex yet manageable game tutorial/example that would fit in this category

  4. Become a more independent developer
    At this point it's clear we should introduce resources like, in order of complexity:

  5. Going further TODO: resources

    That said I don't have a specific guide/path in mind with these, but we could probably extract some of the info from these books and offer a guided walk-through of the most important systems/algorithms someone should focus on
    By this stage we're probably talking beyond just programming and going into tangential topics & domains: general AI/machine-learning programming, art (visual & audio), animation, general design principles, concept-art, general programming algorithms (eg. https://runestone.academy/runestone/books/published/pythonds/index.html), optimization-work, shaders, differences between OOP & FP etc.

Some notable resources for the advanced & curious people (not in any particular order):
- http://jeffe.cs.illinois.edu/teaching/algorithms/: advanced formal (as in heavily math-oriented) collection of generic algorithms & data-structures
- https://thebookofshaders.com/, incomplete: one of the best explanations on (fragment) shader programming out there
- https://en.wikibooks.org/wiki/Haskell: rather unusual being a wikibook, but this is the best place I found to start off with the FP concepts, although it's Haskell-oriented so it does heavily rely on Haskell coding, but the principles presented presented conceptually go from beginner to intermediate
- https://github.com/dwhitney/purescript-book: the PureScript (FP) book in the process of getting up to date to the latest PureScript version - task taken up by dwhitney, although it's PureScript-focused, it introduces FP principles and so it offers a pretty good intermediate point of view in comparison to OOP

note all linked resources are FREE

Alright, hopefully this is helpful

@NathanLovato NathanLovato changed the title Write a curated guide for beginners to learn Godot Learn Godot: beginners edition (curated free guide) Nov 3, 2019
@NathanLovato NathanLovato changed the title Learn Godot: beginners edition (curated free guide) Write Learn Godot: beginners edition Nov 3, 2019
@razcore-rad
Copy link

razcore-rad commented Nov 5, 2019

As a first task I went through this issue and updated the outline with specific links & info, linking to GDQuest resources as well. Last time I was thinking that you already know very well the GDQuest resources, that's why I didn't actually include them. But since we'll write a guide as well I went through what I thought is most important and updated the path accordingly.

There are still unanswered questions and places where we need some discussion to get things to a finish.

Outline

Getting started with game development (in general)

Help people get started with programming and gamedev in general, for people who have 0 development experience

Introduction - Total beginner

  1. GDQuest's very own starter guide - Become a Game Developer: How to Learn to Code
  2. Sykoo's How To Get into Game Development! (Teachers, School, Self-Taught and MORE!)
  3. GDQuest's Game Engines: what are they and how to choose the right one?

I think the above covers the ideas very well and I'd rather keep the track/path as short as possible since what we can present here is not that diverse, it's the same simple ideas: pick an (easy) programming language, start off with simple game ideas and most importantly finish the projects etc.

Unanswered Questions/Gaps

  • what does it mean to be a Game Programmer? difference between it and Game Developer
  • what other roles are there within a Game Development pipeline? It's a very complex world, there's graphics programming (shaders), art engineers (something somewhat new - people that focus on making tools for game developers to ease development), outright artists, etc.
  • overview of career in gamedev: here would be a good opportunity to include links to interviews of freelancers, gamedevs etc.

a. Getting started with Godot / b. Making your first game(s)

a. A path with text-based and video resources that the user can watch in a specific order

b. Aside from Godot, this section should also help the reader learn how to make a game in general, understand the workflow

Going mostly with a hands-on approach here we focus on creating small finished games while learning Godot instead of a bare explanation of the interface and overall stale and disconnected explanations without practice. This part is covered explicitly by the GDScript intro and the other listed useful resources which are meant to be used whenever the student gets stuck in some point. They're also very useful if they forget something when upgrading to creating their own small projects.

  1. GDQuest's Intro to GDScript for Programming Beginners - fundamentals of programming through GDScript, the Godot scripting language. This is mostly optional for people that have some basic programming knowledge
  2. GDQuest's Make Your First 2D Game with Godot & it's associated GitHub project
  3. KidsCanCode Mobile Game: Circle Jump
  4. BornCG's 3D Roll the Ball
  5. Other useful resources are:
    • Godot step-by-step. Godot's official high-level guide that goes through the interface and features, explaining the most important ideas to get students started
    • GDScript reference. The official Godot to bookmark resource which explains GDScript core concepts. Every Godot game developer will, without a doubt, have to search a thing or two about GDScript and this is the place to find the answerers

Unanswered Questions/Gaps

The following ideas might have a better fit in developers edition #94

  • debunking the misconception that making games is super easy. Yes it can be easy in some cases, if we limit ourselves to some graphic shapes type of game (see KidsCanCode circle jump game), but most times when we think of games, especially nowadays we're thinking of AAA games. So it's important to have a deep understanding of what the game development workflow is and how to create realistic expectations

  • destructuring gamedev: a discussion of what games are made of in terms of systems that aren't provided by the game engine itself. Especially reusable systems so that as we further our careers we won't have to start from scratch each time: save management system, cut-scene system, dialogue system, inventory system, AI system, multiplayer/network system etc. Of course some of these are game specific, for example an adventure game would most definitely have a dialogue system, but not necessarily an inventory system, while for RPGs inventory systems are a must. missing-resource: I don't know of any discussion/article on this topic, just scattered topics and not most not Godot-specific

  • it might be worth noting that OpenRPG could be a good candidate for a step-by-step somewhat complex guide for game creation which includes some of the systems discussed above. missing-resource: I don't know of any complex yet manageable game tutorial/example that would fit in this category

Become a more independent developer

This milestone should help the reader strengthen their programming and game design fundamentals, as well as their understanding of Godot. Start to introduce fundamental design principles

  1. GDQuest's Game Design Tutorial playlist - lots of beginner-friendly examples of how to get started on actual (small) game creation, from a designer point of view
  2. Brackeys' Basic Principles of Game Design - high-level ideas on how to think about objectives that make a game engaging and fun. How to structure the workflow around these ideas

Going further

Give the reader specific places and guides to go further with game design, game development, and Godot

There's a fine line between "going further" and swamping the student in advanced information and resources so I need some help curating and refining the idea here.

The topics/resources below could fit a lot better in the developers edition (#94):

That said I don't have a specific guide/path in mind with these, but we could probably extract some of the info from these books and offer a guided walk-through of the most important systems/algorithms someone should focus on
By this stage we're probably talking beyond just programming and going into tangential topics & domains: general AI/machine-learning programming, art (visual & audio), animation, general design principles, concept-art, general programming algorithms (eg. https://runestone.academy/runestone/books/published/pythonds/index.html), optimization-work, shaders, differences between OOP & FP etc.

Some notable resources for the advanced & curious people (not in any particular order):

  • http://jeffe.cs.illinois.edu/teaching/algorithms/: advanced formal (as in heavily math-oriented) collection of generic algorithms & data-structures
  • https://thebookofshaders.com/, incomplete: one of the best explanations on (fragment) shader programming out there
  • https://en.wikibooks.org/wiki/Haskell: rather unusual being a wikibook, but this is the best place I found to start off with the FP concepts, although it's Haskell-oriented so it does heavily rely on Haskell coding, but the principles presented presented conceptually go from beginner to intermediate
  • https://github.com/dwhitney/purescript-book: the PureScript (FP) book in the process of getting up to date to the latest PureScript version - task taken up by dwhitney, although it's PureScript-focused, it introduces FP principles and so it offers a pretty good intermediate point of view in comparison to OOP

@razcore-rad
Copy link

I'm just copy/pasting what's left over after writing the beginner edition.


The topics/resources below could fit a lot better in the developers edition (#94):

That said I don't have a specific guide/path in mind with these, but we could probably extract some of the info from these books and offer a guided walk-through of the most important systems/algorithms someone should focus on
By this stage we're probably talking beyond just programming and going into tangential topics & domains: general AI/machine-learning programming, art (visual & audio), animation, general design principles, concept-art, general programming algorithms (eg. https://runestone.academy/runestone/books/published/pythonds/index.html - fit for beginners), optimization-work, shaders, differences between OOP & FP etc.

Some notable resources for the advanced & curious people (not in any particular order):

  • http://jeffe.cs.illinois.edu/teaching/algorithms/: advanced formal (as in heavily math-oriented) collection of generic algorithms & data-structures
  • , incomplete: one of the best explanations on (fragment) shader programming out there (fit for beginners)
  • https://en.wikibooks.org/wiki/Haskell: rather unusual being a wikibook, but this is the best place I found to start off with the FP concepts, although it's Haskell-oriented so it does heavily rely on Haskell coding, but the principles presented presented conceptually go from beginner to intermediate
  • https://github.com/dwhitney/purescript-book: the PureScript (FP) book in the process of getting up to date to the latest PureScript version - task taken up by dwhitney, although it's PureScript-focused, it introduces FP principles and so it offers a pretty good intermediate point of view in comparison to OOP

Unanswered Questions/Gaps

  • (this should go into beginner section) debunking the misconception that making games is super easy. Yes it can be easy in some cases, if we limit ourselves to some graphic shapes type of game (see KidsCanCode circle jump game), but most times when we think of games, especially nowadays we're thinking of AAA games. So it's important to have a deep understanding of what the game development workflow is and how to create realistic expectations

  • destructuring gamedev: a discussion of what games are made of in terms of systems that aren't provided by the game engine itself. Especially reusable systems so that as we further our careers we won't have to start from scratch each time: save management system, cut-scene system, dialogue system, inventory system, AI system, multiplayer/network system etc. Of course some of these are game specific, for example an adventure game would most definitely have a dialogue system, but not necessarily an inventory system, while for RPGs inventory systems are a must. missing-resource: I don't know of any discussion/article on this topic, just scattered topics and not most not Godot-specific

  • it might be worth noting that OpenRPG could be a good candidate for a step-by-step somewhat complex guide for game creation which includes some of the systems discussed above. missing-resource: I don't know of any complex yet manageable game tutorial/example that would fit in this category

  • what does it mean to be a Game Programmer? difference between it and Game Developer

  • what other roles are there within a Game Development pipeline? It's a very complex world, there's graphics programming (shaders), art engineers (something somewhat new - people that focus on making tools for game developers to ease development), outright artists, etc.

  • overview of career in gamedev: here would be a good opportunity to include links to interviews of freelancers, gamedevs etc.

@razcore-rad
Copy link

I finished up this part - 1st pass. So I created the feature/learn-godot branch and decided to merge the PR after I finish up the second (developer's edition) part as well. But this beginner edition is ready for proof reading and polish. I'll open a PR and mark it as draft meanwhile.

2019 Kickstarter - Stretch goals automation moved this from In progress to Done Nov 14, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
No open projects
Development

Successfully merging a pull request may close this issue.

2 participants