So This is Your First Jam With Godot 4? Here is What You Should Know Beforehand! (2024)

So This is Your First Jam With Godot 4? Here is What You Should Know Beforehand! (1)

A guide to help you choose between Godot 3 and 4 for your game development, as well as some tips and tricks to avoid last-minute problems when using version 4 for a game jam

So This is Your First Jam With Godot 4? Here is What You Should Know Beforehand! (2)

Published in

Better Programming

·

9 min read

·

Jun 1, 2023

--

The GMTK Jam 2023 is around the corner, and many of you may have decided to jump ship and try Godot 4 for the first time. You may be frustrated with Unity, upgrading up from Godot 3.X, or maybe this is your first dive into game development.

Jams are a great opportunity to learn new tools. The stakes are low. It “forces” you to apply your work concretely after fooling around with step-by-step tutorials but without an excessive time commitment. Plus, Godot 4 just released earlier this year with great new and expanded features!

Now, before you go and download Godot 4 at the start of the jam, here are a few things you should know.

Godot is a great choice for Game Jams. It is lightweight (it is just a 50 MiB download, and it will probably open your project instantly); it is open source with a vibrant community and multiplatform (you can even run the editor itself on the web and Android!).

And while Godot 4 included a ton of new features and deep internal refactoring, it’s been just a few months since 4.0 was released, so some issues are still being worked on. Here’s some of these lingering issues:

  • Stability: I don’t remember Godot 3.x crashing for me a single time while using a stable release (it is true that I normally stick to not-very demanding 2d games). Godot 3.5 is rock solid; sometimes stability and not features are what you want for a jam.
    While Godot 4.0 is not prone to crash, it sometimes ends up in a “bad” state, forcing me to restart the editor after a long session. This is not a big deal because opening a Godot project, unlike other engines, takes just one or two seconds, but it is something to consider. In any case, I’ve never had stability issues with the games I made with Godot 4, only with the editor.
So This is Your First Jam With Godot 4? Here is What You Should Know Beforehand! (4)
  • Documentation: Official tutorials and guides have not yet been fully upgraded to work with Godot 4 APIs and workflows, which may be confusing, especially for those using Godot for the first time. This is especially true for localization to languages other than English.
    The class reference manual is complete, but some guides may have gaps that are slowly being covered. You can help fix this! 😊
  • UI weirdness: Like with many open source software, core functionalities are implemented or updated first, and the UI polished and optimized afterward. Due to the rewrite of some internal architecture, some workflows are still not 100% in their final, desired state, requiring a few more clicks than they should. For example, I like the new model for handling 2D tilesets and tilemaps -as it is more powerful and flexible than the old one, but more emphasis must be put on making simple tasks easier and more advanced, more hidden.
So This is Your First Jam With Godot 4? Here is What You Should Know Beforehand! (5)
  • Feature regressions: While Godot 4 is mainly a major release with new features, some old ones have been deprecated or need more work before being re-enabled. While very few people will miss the visual scripting language, other things like the lack of web export when using C# may be a deal breaker for some, especially for a game jam, in which the web export makes your game way more accessible.
  • Community resources: Godot 3 has been out for over five years already — which means multiple issues, workarounds, guides, and tutorials have been created for it by the community. Given, in some cases, how deeply the engine and the API have changed for version 4.0, there are yet not as many community-made resources as with 3.X, and for questions that apply to both, there will be more answers using the 3.X syntax than the latest version.

For example, the following Godot 3 shader code from GDQuest to create outlines (from https://github.com/GDQuest/godot-shaders/blob/master/godot/Shaders/outline3D.shader):

shader_type spatial;
render_mode unshaded, cull_front, depth_draw_always;

uniform float thickness = 0.1;
uniform vec4 outline_color : hint_color = vec4(1.0);

void vertex() {
VERTEX += NORMAL * thickness;
}

void fragment() {
ALBEDO = outline_color.rgb;
if (outline_color.a < 1.0) {
ALPHA = outline_color.a;
}
}

It only needs to change its hint_color keyword to source_color. However, as it is, it will return an error and will confuse the casual or new user that just wants “things to work.”

  • Learning curve: If you are familiar with Godot 3.X workflows, you may be frustrated at first that converting automatically existing projects to Godot 4 is a “best effort” process. Tilesets won’t work without a manual update. The Tilemaps’ new UI will be confusing at first. KinematicBody classes have been renamed and refactored into a new CharacterBody, with different properties. And collision shapes are likely to need adjustment, among many other changes. You will feel dumb for a while because everything will be very, very familiar, but at the same time, almost everything has been touched and optimized.
    You will write yourScene.instance(), and it won’t work because it is now the more correct yourScene.instantiate().

Does that mean you shouldn’t use Godot for the next Jam? Actually, there may not be a better time to jump into it than now because you are spoiled with choice. Here is my advice on how to decide between 3.5 and 4.0:

  • If you are new to game dev, just go directly to 4. 4 is mature enough for you, and you will rarely find issues that advanced users will encounter. Plus, you won’t be kept down by outdated knowledge. Just if you search for help with Google, Stack Overflow, or ChatGPT (which is banned for the GMTK, anyway), please be aware that many of the solutions will still apply only to Godot 3, so either search for “Godot 4” specifically (and drop ChatGPT, which has no Godot 4 knowledge) or stick to the official documentation.
  • If you come from Unity and want to keep using the familiar C#, be aware that you won’t be able to export with Godot 4 from that language to the web, Android, or iOS. You will need to export to a Windows executable (which may reduce the accessibility of your game for potential testers) or stick to Godot 3.5. Otherwise, if you want to use the more native GDScript, I would recommend going directly to 4. Note that Safari is having issues with the web export, too.
  • For people already familiar with Godot 3, it will depend on your goals. The main decision is if you want to have a 100% stable, comfortable, polished experience with no surprises (even at the cost of the new features) and center the Jam around getting things done; or if you want to use it as an excuse to finally upgrade your skill set to Godot 4, even if that means getting yourself uncomfortable a little bit.
    Godot 4 is clearly the future, but again, the above web export outstanding issues will also apply to you, plus the changes on the Node APIs and shader language changes, as well as potentially some additional bugs to deal with.
    Remember that Godot 3.5 is never a bad choice, as some quality-of-life improvements have been backported to it from the 4.0 branch!

Here is someone else’s take with similar opinions to mine, although not just in the context of a Jam:

If you finally take the plunge and go for Godot 4, here are some tips to avoid getting frustrated during a high-pressure 48-hour game jam (applicable to both newbies and veterans):

  • Test the full workflow in advance
    Download Godot 4, quickly program a square (or a cube) that moves over your window (the new built-in templates will help you do that without writing a single line of code), and do the full workflow, including exporting, compressing and uploading your game to Itch.io. You may hit some limitations early (like the lack of working HTML5 templates for C#), and you may be able to workaround it or change your version. There cannot be a more frustrating thing than spending 48 hours developing a game only to realize at the last minute that the platform you aim to export to is unavailable or has performance issues.
  • Web export requires using GDScript and has performance issues in OSX/iOS and Firefox+Linux.
    Sadly, with the move from Mono to .NET 6 — allowing the usage of modern C# features — the web export feature is missing from Godot 4.0 (when used with C# as a language). The GDScript version is not problem-free, though. WebGL 2.0 support (compared to WebGL 1.0, used in Godot 3.X) is lacking in some combinations of browsers and OSs. This is not necessarily Godot’s fault, but something to highlight if non-Windows users are important to you.
    Due to the extra functionalities, it doesn’t also help that the export size of an empty project has doubled (from 13 to 24 MiB without compression), contributing to longer load times.
  • HTML5 exported code uses SharedArrayBuffer, which requires specific headers in your web server
    If you find the following error shown when posting Godot’s 4 web export in an external service:
So This is Your First Jam With Godot 4? Here is What You Should Know Beforehand! (6)

Error
The following features required to run Godot projects on the Web are missing:
Cross Origin Isolation — Check web server configuration (send correct headers)
SharedArrayBuffer — Check web server configuration (send correct headers)”

This means two headers are missing from the web server where the game is hosted. Those are:

Cross-Origin-Embedder-Policy: require-corp 
Cross-Origin-Opener-Policy: same-origin

For Itch.io, SharedArrayBuffer is an option that you can enable when uploading your files just by pressing the right checkbox:

So This is Your First Jam With Godot 4? Here is What You Should Know Beforehand! (7)

If you use another hosting service, check how to set custom headers for that environment. Here is the config I added to my personal web server using Apache HTTP Server (after enabling the headers mod):

# For Godot 4
Header set Cross-Origin-Embedder-Policy: require-corp
Header set Cross-Origin-Opener-Policy: same-origi

This change will require an Apache reload (or a restart if the module wasn’t already enabled).

Despite apparently being a bit negative, I want to set expectations clear about what to expect on Godot 3.5 vs 4.0. As a system administrator, I am a big fan of being conservative about software upgrades. Given 4 is only a few weeks old, some things may affect you (even if some are not due to Godot itself, but the ecosystem still has to adapt to it).

I daily drive Godot 4 since its first official release, and I am not going back (I will use it for GMTK 2023, too!). Otherwise, I would be missing out on so many things! However, as this will be the first time many people download it, I hope these tips and warnings will be useful for everyone to choose wisely and be satisfied.

So This is Your First Jam With Godot 4? Here is What You Should Know Beforehand! (8)

I also want to thank the developers and Godot community members because they are working hard and supporting many people in polishing those last bugs and rough edges, as well as helping people upgrade to make the old LTS version completely obsolete.

And no matter if you use Godot 3.5, 4.0, Unity, or any other engine, see you at the Jam!

Want to connect? I am jynus on Twitter, GitHub, and Itch.io.

So This is Your First Jam With Godot 4? Here is What You Should Know Beforehand! (2024)
Top Articles
A Timeline of Bre Tiesi and Nick Cannon's Relationship, From "Wild N' Out" to "Selling Sunset"
Nick Cannon says ex Mariah Carey 'doesn't want him' — But he's open to a reunion
Z-Track Injection | Definition and Patient Education
Wausau Marketplace
Craigslistdaytona
Remnant Graveyard Elf
3656 Curlew St
Nashville Predators Wiki
7 Low-Carb Foods That Fill You Up - Keto Tips
Directions To 401 East Chestnut Street Louisville Kentucky
Craigslist Panama City Fl
Xxn Abbreviation List 2023
How Much Is Tay Ks Bail
Nhl Tankathon Mock Draft
Walmart Car Department Phone Number
Theater X Orange Heights Florida
South Bend Weather Underground
Intel K vs KF vs F CPUs: What's the Difference?
Lacey Costco Gas Price
The Clapping Song Lyrics by Belle Stars
Publix Christmas Dinner 2022
Shoe Station Store Locator
How to Use Craigslist (with Pictures) - wikiHow
Kacey King Ranch
Parent Management Training (PMT) Worksheet | HappierTHERAPY
Transformers Movie Wiki
South Florida residents must earn more than $100,000 to avoid being 'rent burdened'
Kaiserhrconnect
Bee And Willow Bar Cart
Jr Miss Naturist Pageant
Senior Houses For Sale Near Me
Unlock The Secrets Of "Skip The Game" Greensboro North Carolina
Does Iherb Accept Ebt
Reading Craigslist Pa
Domina Scarlett Ct
Whitehall Preparatory And Fitness Academy Calendar
The Vélodrome d'Hiver (Vél d'Hiv) Roundup
Kazwire
Craigslist Jobs Brownsville Tx
D-Day: Learn about the D-Day Invasion
craigslist: modesto jobs, apartments, for sale, services, community, and events
Firestone Batteries Prices
Craigslist Antique
Gas Buddy Il
The Cutest Photos of Enrique Iglesias and Anna Kournikova with Their Three Kids
Keci News
Actress Zazie Crossword Clue
Bonecrusher Upgrade Rs3
Mmastreams.com
Strange World Showtimes Near Atlas Cinemas Great Lakes Stadium 16
Hcs Smartfind
Asisn Massage Near Me
Latest Posts
Article information

Author: Duane Harber

Last Updated:

Views: 5818

Rating: 4 / 5 (71 voted)

Reviews: 94% of readers found this page helpful

Author information

Name: Duane Harber

Birthday: 1999-10-17

Address: Apt. 404 9899 Magnolia Roads, Port Royceville, ID 78186

Phone: +186911129794335

Job: Human Hospitality Planner

Hobby: Listening to music, Orienteering, Knapping, Dance, Mountain biking, Fishing, Pottery

Introduction: My name is Duane Harber, I am a modern, clever, handsome, fair, agreeable, inexpensive, beautiful person who loves writing and wants to share my knowledge and understanding with you.