{"id":1031,"date":"2019-10-10T08:56:31","date_gmt":"2019-10-10T06:56:31","guid":{"rendered":"http:\/\/www.thelins.se\/johan\/blog\/?p=1031"},"modified":"2019-10-10T08:56:31","modified_gmt":"2019-10-10T06:56:31","slug":"playing-with-godot","status":"publish","type":"post","link":"https:\/\/www.thelins.se\/johan\/blog\/2019\/10\/playing-with-godot\/","title":{"rendered":"Playing with Godot"},"content":{"rendered":"\n<p>I guess it is quite common to start the path towards programming by making games. I started with a simple guess the number on my dad&#8217;s zx81 back in the day. He must have written most of it, but I felt proud of the result, so I will claim that it was mine.<\/p>\n\n\n\n<p>I&#8217;ve experimented with various ways to get my kids into programming. Everything from <a href=\"http:\/\/www.robotturtles.com\/\">board games<\/a>, <a href=\"https:\/\/code.org\/minecraft\">online resources<\/a>, <a href=\"https:\/\/scratch.mit.edu\/\">scratch<\/a>, <a href=\"https:\/\/github.com\/e8johan\/roboten\">building shitty robots<\/a>, and so on. They get it, but it is hard to move on from the basics to being able to start from a clean sheet of paper and create something.<\/p>\n\n\n\n<p>During the summer, I decided to look into the various options and tried using <a href=\"https:\/\/unity.com\/\">Unity<\/a> and <a href=\"https:\/\/godotengine.org\/\">Godot<\/a>. After a couple of experiments, I settled on using Godot. Partly because of its <a href=\"https:\/\/godotengine.org\/license\">open nature<\/a>, but also because as a tool, it does the job I need it to do just as well as Unity.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"64\" height=\"64\" src=\"https:\/\/www.thelins.se\/johan\/blog\/wp-content\/uploads\/2019\/10\/icon.png\" alt=\"\" class=\"wp-image-1032\"\/><\/figure><\/div>\n\n\n\n<p>From my perspective, Godot is interesting, as it is a tool that is based around a visual editor. You do write code, but you add the code to the visual model, and not the other way around. This is somewhat backwards to me, as I come from a <a href=\"https:\/\/www.qt.io\/\">Qt<\/a> background, but I&#8217;m positively surprised over how well it works.<\/p>\n\n\n\n<p>Another positive surprise to me is that Godot also comes with <a href=\"https:\/\/docs.godotengine.org\/en\/3.1\/getting_started\/workflow\/export\/exporting_projects.html\">export presets<\/a>. These are pre-built run-time environments for common targets such as Windows, Linux\/X11, Android, iOS, HTML5. Using these, it is trivial to cross compile and distribute your project &#8211; from any platform, to any platform. Very convenient. You can even build your own export presets.<\/p>\n\n\n\n<p>When it comes to the not-so-good, Godot comes with its own language, GDScript. It does the job, and I quite enjoy working it it. You can use VisalScript as well, or C# with external tooling &#8211; you can also use GDNative to interface with the engine using your language of choice, but that is less straight forward. I do understand that there is <a href=\"https:\/\/docs.godotengine.org\/en\/3.1\/getting_started\/scripting\/gdscript\/gdscript_basics.html#\">some history<\/a> that explains the choices, but to me it does feel like Python, without the huge library of Python libs.<\/p>\n\n\n\n<p>Next up, I&#8217;ll blog about some of the games I&#8217;ve made, so prepare yourself for boardgames, classic game remakes as well as my humble experiments into VR.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I guess it is quite common to start the path towards programming by making games. I started with a simple guess the number on my dad&#8217;s zx81 back in the day. He must have written most of it, but I felt proud of the result, so I will claim that it was mine. I&#8217;ve experimented &hellip; <a href=\"https:\/\/www.thelins.se\/johan\/blog\/2019\/10\/playing-with-godot\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Playing with Godot<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16],"tags":[],"class_list":["post-1031","post","type-post","status-publish","format-standard","hentry","category-godot"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/www.thelins.se\/johan\/blog\/wp-json\/wp\/v2\/posts\/1031","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.thelins.se\/johan\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.thelins.se\/johan\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.thelins.se\/johan\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.thelins.se\/johan\/blog\/wp-json\/wp\/v2\/comments?post=1031"}],"version-history":[{"count":1,"href":"https:\/\/www.thelins.se\/johan\/blog\/wp-json\/wp\/v2\/posts\/1031\/revisions"}],"predecessor-version":[{"id":1033,"href":"https:\/\/www.thelins.se\/johan\/blog\/wp-json\/wp\/v2\/posts\/1031\/revisions\/1033"}],"wp:attachment":[{"href":"https:\/\/www.thelins.se\/johan\/blog\/wp-json\/wp\/v2\/media?parent=1031"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.thelins.se\/johan\/blog\/wp-json\/wp\/v2\/categories?post=1031"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.thelins.se\/johan\/blog\/wp-json\/wp\/v2\/tags?post=1031"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}