Skip to content

Setting a clear design goal for the demo projects #390

Open
@NathanLovato

Description

@NathanLovato

The code and quality of the demos in this repository vary a lot. Some are done with quick and dirty code, some have nice graphics, some have programmer art, and a lot teach poor programming practices when working with Godot.

At the last GodotCon, we talked with @akien-mga and @reduz about setting a clear design target for these demos, in the hope to bring them to a higher quality standard. We'd like to contribute (or keep contributing) towards that with @johnnygossdev, @razcore-art, and @henriiquecampos

To me, the goals of the demos are to:

  • Showcase engine features, that is to say, give a sense for what Godot can do. In that sense, the demos are a communication asset and may contribute to giving a positive or a negative image of the engine.
  • Help people learn these features. So the demos have an educational purpose.

Users can get a feel for Godot's power with these demos. If an experienced developer may see the value of a feature showcased through code, a casual user or hobbyist may wrongly feel that Godot sucks because some of the demos are really bare-bones.

Teaching-wise, I'd argue that a lot of demos offer counter-productive examples of how you're meant to use Godot. That is due in particular to the fact that a lot of demos were coded to "just work".

Below is a proposal to set some guidelines for this repository, start to frame a target to collectively move towards, and help increase the quality of the demos here. We would also like to contribute demos as part of the GDQuest project, with the team.

Design proposal

The demos' design

Each demo should clearly focus on one feature. The scope of the feature can be one node, one game mechanic, or one system.

For example:

  1. KinematicBody2D, make a simple game with a side-view platform character, and another scene with top-down movement, and obstacles, including moving ones.
  2. Touch gestures, a demo that shows how to detect a gesture, generate an input event from that, and consume it in another node.
  3. User interface anchors and margins, showing the effect of various layout and anchor menu options.

To make this clearer, the idea is to have a clearer scope for the demos. We could avoid having tiny demos with several lines of code, that leave some more insights to be desired, or entire game projects that should rather be in a dedicated repository.

The target

Update existing demos to:

  • Show good practices when it comes to Godot and game creation. Starting with following the official GDScript guidelines
  • Make the demos feel and look both better and more consistent.

Having an art direction, or a visual language

We'd like to suggest using a simple, yet consistent visual language for the demos that don't have a game world and art of their own. An art style that:

  1. Make the visuals appealing, yet fast to make.
  2. Make the art creation process accessible to non-artists or unexperienced artists who'd like to contribute.
  3. Use vector whenever possible so the assets are git-friendly.

@henriiquecampos is working on a style guide for that, based on the work he did with @razcore-art on our beginner platformer course

Here is an example of how that could look:

Proof of concept

@johnnygossdev rewrote the 2D platformer demo, with @razcore-art and I as reviewers, as an example for the kind of programming practices we'd like to promote, and the kind of work we'd like to contribute. You can download and inspect it here: https://github.com/GDQuest/godot-demo-projects-remake

We're here to answer any questions you might have about this proposal, and we're leaving this for the community to review and to discuss.

I'll add a final precision: we're talking about setting a goal and guidelines, not hard rules. Like with the docs and programming guidelines before, we're making this proposal in the hope to be able to gradually remake or improve the demos, but also to help make reviews clearer and faster.

Without that, saying which contributions are wanted or not, or what code is good or not is up to the reviewer and can be arbitrary: we all have our own taste and experience as devs and designers, after all.

Discussion and critiques are more than welcome!

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions