popcar.bearblog.dev

amio, (edited ) to godot in Switching from Unity to Godot: Tips and What You Should Expect

You can use C# (don't)

C# users are second-class citizens in Godot. Many features such as web exports don't work with C# projects, and C# often has bugs specific to it and often lacks tutorials/documentation

... welp. So... any more details on this? I'm not learning a single-purpose language.

Edit: yes, GDScript seems nice, I know. Please stop recommending it though :P

Ategon, (edited )
@Ategon@programming.dev avatar

The C# version of the project is separate from the main one. It is possible to entirely code a game in c++ though in the main one (you can use both c++ and gdscript in it in one game interchangeably). Gdscript is a really easy language to learn though and is similar to other scripting languages (the only things you really need to learn is some keywords godot added to make coding in it easier when using things in the engine. Stuff like node names etc you would have to learn regardless of the language you’re using)

popcar2,

Honestly GDscript is really easy to learn if you’ve got a programming background. The concepts are mostly the same so you can head over to the GDScript reference and learn to use it in less than a day. As soon as you get used to the syntax you basically know it already.

amio,

I'm sure you're right, and it looks serviceable. It's not really about that, though. I've done the "learn a new language" thing many, many times. It gets old and I'm sort of over it - it's not as fun as it once was, particularly now I have my favorite that I know well and am good at.

ICastFist,
@ICastFist@programming.dev avatar

GDScript works almost 1-1 like Python. Any experience with Python almost instantly translates into knowing what to do in GDSCript, but not necessarily the other way around, as their script has a couple more builtin features.

circuitfarmer,
@circuitfarmer@lemmy.sdf.org avatar

Was going to say this but you beat me to it: if you know Python, you pretty much already know GDScript. It’s not at all like needing to learn another language from scratch.

AdmiralShat,

I don’t understand why people are so afraid of GDScript, so many are literally refusing to even look at it. It’s baffling.

Rodeo,

If you’ve done it a lot then you know how easy it is to get up and running with a new language.

Really, it’s not that hard. GDscript is not some archaic clunker like COBOL with outdated paradigms, nor some esoteric joke language like Brainfuck that’s just pointlessly difficult. You’re going to be fine with it inside of a day.

lorty,
@lorty@lemmygrad.ml avatar

You can do most stuff with C# just fine, unless you run into one of the C# specific bugs and lack of beginner friendly tutorials.

That said what made me make the jump to GDscript was just how seamless it is to use compared to C#.

tshannon,

I’ve been working in Godot for about 3 years now, and have never touched GDScript. I personally haven’t felt like a second class citizen, and have rarely run into C# specific bugs, or found the documentation was missing for C#, other than when I was using the GD4 betas.

That being said, I’m not currently targeting web or mobile with my hobby projects, and I know those are open issues with the C# support.

My 2c.

swordsmanluke,

C# works fine, lots of Godot projects are using it.

That said, consider learning GD Script? Even if it’s only used by Godot, it’s simple, well integrated with the editor and is awesome for quickly building out your game.

Besides, it’s very Python-esque. Whether you know Python or not, it’s syntax is very straightforward and easy to work with.

captain_aggravated,
@captain_aggravated@sh.itjust.works avatar

GDScript is very similar to Python; if you know Python, learning GDScript takes about an hour.

  • declaring a function uses the func keyword instead of def
  • there’s an actual concept of variables and constants, in python you’d just say number = 3 but in GDScript you do var number = 3 or const number = 3.
  • the constants “true” and “false” aren’t capitalized like in Python
  • "match" is switch…case but slightly more terse.
  • No lists, just arrays. There are also enums. There are also several built-in data types like vector2 or vector3 which are handy for storing position and velocity data in 2D or 3D space.
  • There isn’t a module/library system; some things like random number generation, timing, math etc. are provided by the base language because they’re ubiquitous in game making, others, such as functions for audio playback, are provided by the node that your script extends. Right about here we get into territory where it’s more about how Godot works and less about how GDScript works, and concepts such as onready, signals etc. would be required learning no matter what language you use with Godot.
Vipsu,
@Vipsu@lemmy.world avatar

C# works fine with Godot and with the changes in Godot 4.x its better than ever with Godot.

Here’s a pretty good blog post comparing the two:

Personally I dislike using scripting languages as the primary language for any bigger project. The lack of proper static typing commonly causes issues with linting, code-completion, error highlighting and refactoring tools. Lack of namespaces can lead to name clashes with type names and such especially ones you start adding bunch of 3rd party plugins.

Also using having to include/preload any script files using string references like this: const Rifle = preload(“res://player/weapons/rifle.gd”) is not just plain bad in my books. Its just plain dirty compared to Namespaces in C# or Packages in Java.

I do like Python and I use it quite a bit at work to automate things as you can install and import bunch of ready made libraries for almost anything and just write script that is like sub 500 lines and does whatever. But the moment I need to make anything that contains multiple files and some object oriented practices things will get increasingly more annoying very fast.

Having interfaces is quite nice as well as it allows me to keep my code more loosely coupled. I try to keep my code as portable as possible by keeping much of my code in a separate project that has no dependencies to Godot. This way I can use nUnit in another separate project to do unit tests for the code and just write wrappers and whatever in Godot project. If Godot API changes I generally only need to fix the code in the wrapper classes.

ArmoredThirteen, to godot in Switching from Unity to Godot: Tips and What You Should Expect

“and it even adds the .gitignore for you!” I’m sold I hate trying to figure out what version of base gitignore I need for what version of Unity. Thank you for making this!

popcar2,

It’s definitely a big point for me too, using Git with Unity is a big pain. Even using the right gitignore I often have to upload large Unity-generated files to my github which might’ve pushed me to using Git LFS. Having something that just works is liberating.

onlinepersona,

As a non gamedev adding a .gitignore is a feature? 😮

ArmoredThirteen,

.gitignore is an amazing thing all but my simplest projects use them

wccrawford, to gamedev in Switching from Unity to Godot: Tips and What You Should Expect

I’m looking to switch and this is a very timely article. Thanks!

Potatos_are_not_friends, to linux_gaming in [Guide] Everything you need to know about gaming on Linux

A few years ago I would say gaming on Linux isn’t worth it.

This was me in 2021.

I ate my hat when SteamDeck came out.

I’m really excited for the future of Linux!

Thad,
@Thad@brontosin.space avatar

@Potatos_are_not_friends Two things happened that changed everything: Proton and the open-source AMD graphics stack.

entropicdrift,
@entropicdrift@lemmy.sdf.org avatar

Let’s not forget VKD3D and DXVK. Absolutely earthshattering impact

goatbeard, to gamedev in Switching from Unity to Godot: Tips and What You Should Expect

I made this switch as well and would definitely recommend it, especially considering Unity’s enshitification

makingStuffForFun, to godot in Creating GodotOS - Devlog 1
@makingStuffForFun@lemmy.ml avatar

GODOS. GOD OS. GO DOS.

popcar2,

Go-dows

HobbesHK, to godot in Switching from Unity to Godot: Tips and What You Should Expect

You may want to change the fact that web exports don’t work on macOS. MacBook Pro M1 user here. I’m happily running my Godot 4.1 as web exports on my server. Setting the headers is required for any browser / operating system, but things seem to work fine for me on Mac.

popcar2, (edited )

Weird, you may be an outlier. The issue for Mac web exports not working is one of the most upvoted on their Github: github.com/godotengine/godot/issues/70691

According to that, you have to manually set the renderer to Metal* or it might freeze/crash your browser (or take minutes to load). I’ve personally had many mac users tell me that my web projects aren’t loading for them, I’m pretty sure the issue is still not resolved.

HobbesHK,

That is weird! Once my project is in a shareable state, I’ll post the link here. Maybe it’s because (so far) it’s not awfully complex…

nnullzz, to godot in Switching from Unity to Godot: Tips and What You Should Expect

Great post! Definitely helpful with the Unity drama going on now. I had initially started my game dev journey on Godot, but recently switched to unity bc of console support. Really thinking about switching back, especially now that v4 is out.

Rodeo,

Godot has console support now. I think it has for a couple of years, actually.

Kaldo,
@Kaldo@kbin.social avatar

The linked article literally says it is not officially supported though, so which one is right? Are you talking about W4 which sounds like some unofficial WIP workaround?

Ategon,
@Ategon@programming.dev avatar

theres no official support currently but thats what W4 will become. Theres a lot of unofficial support currently though

kryllic,

Iirc, console development requires signing an NDA or something, which is why there are no official docs on porting a Godot game to Xbox, PlayStation, or Switch. There are, however, third party companies that Godot vouches for that have a good track record of specializing in porting Godot games to consoles.

AdmiralShat,

W4 isn’t unofficial, it’s literally the core engine devs who started a private company for the purpose of doing things the Godot Foundation can’t.

W4 doesn’t own Godot in anyway, but they can sign the required NDAs and gain access to the SDKs, which cannot legally be given out with an open source software like Godot.

ConorVernon, to gamedev in Switching from Unity to Godot: Tips and What You Should Expect
@ConorVernon@kbin.social avatar

Thank you, this was a very informative read :)

oldlamps, to linux_gaming in [Guide] Everything you need to know about gaming on Linux

The NTFS warning is a little disingenuous. I wouldn’t recommend people go with it if they’re choosing Linux only obviously, but I’m going to say with years of personal testing about 99.9% of things work just fine using an NTFS drive. I think it’s been years since I had any kind of issue with game data that I attributed (and maybe falsely) at the time to the NTFS filesystem.

In steam you’ll need to symlink your compatdata folder to a linux filesystem, but that’s about it.

Weazel,

I don’t even symlink compatdata and haven’t run into any problems. The whole NTFS thing is wild :D

CarlosCheddar,

I switched to BTRFS and used a Windows plugin that allows it to read/write to it. It solved all my NTFS and EXFAT issues and works great.

oldlamps,

I’ve tried this also. It works alright unless you write files in Windows, it will set the UID to the Windows SID. WHen you use a Steamlibrary and move back and forth, games that are updated in Windows can give you permission errors in LInux, etc.

It’s all workable and definitely an option, but WinBTRFS has a performance overhead, and the dualing permissions made it not a perfect solution.

CarlosCheddar,

Yeah I remember having permission issues that were easily fixed with chown but they were hard to notice. I haven’t booted to Windows in over a year now so I must’ve forgotten lol.

soupermkc,

I’m pretty sure WinBTRFS’s readme has a section about properly setting up the user and group permission stuff. Essentially just providing the Windows UUID to Linux POSIX equivilant, which generally ends up fixing all the permission related problems. The only real caveat is it not working with SuperFetch, so files aren’t cached in memory and have to be loaded from disk with every read.

Weazel, (edited ) to linux_gaming in [Guide] Everything you need to know about gaming on Linux

I see that you dedicated a paragraph to NTFS. There are quite a lot of people saying there are problems with gaming on Linux using an NTFS drive but I’ve rarely (never?!) seen anyone actually having problems with it. I myself have been dual booting for years and some games are on an NTFS drive shared between Linux and windows for convenience and I never had any issues besides the fact I had to disable fast reboot in Windows.

popcar2,

I’ve heard a lot of varying experiences but for me personally I just couldn’t get it to work, and I tried most of the workarounds like disabling fast reboot. It worked for a while but every now and then I’d constantly have to reset permissions for the entire drive, and even then games would not run sometimes. If someone knows more about this I’d love some info on it, but in general most of the Linux community agrees that NTFS causes more trouble than it’s worth.

Montartemis,

When I still had a ntfs drive some games would play fine off of it but some would barely run or fail to launch completely. ESO didn't care about being on an ntfs partition and ran fine. I think it was Doom 2013 that didn't like it for me.

UkaszGra,

I used ntfs while ago and the driver included in kernel corrupted my drive :p It was also very annoying when almost every single boot windows was forcing sfc scan and linux had problems mounting with write permisions.

CarlosCheddar,

It’s been a while since I switched to btrfs but I do remember the permissions being an issue with NTFS. It was quite annoying because Steam wouldn’t trigger an error so it was hard to debug when the game never opened.

DaleGribble88, to gamedev in I made a Solitaire game called Red Queen's Dungeon
@DaleGribble88@programming.dev avatar

Board/card game development has been allowed here ever since the great “Board Games?” post of 2023 by @UhBell.

I’m trying to make it seem like this community has deep cuts of lore instead of a random ass post from like a month ago.

Ategon, to gamedev in I made a Solitaire game called Red Queen's Dungeon
@Ategon@programming.dev avatar

Tabletop games are fine to post, else we would be something like video game development as opposed to game development

Always nice to see some tabletop games getting made

Yerbouti, to godot in Switching from Unity to Godot: Tips and What You Should Expect

I recently realized that Unreal is Open-source. I’m curious why it doesn’t seem to get any love from the FOSS community? I would personnaly glady ditch unity, but I heavily rely on video tutorials for my very amateur projects . So I was actually moving to Unreal…

popcar2,

As far as I know Unreal’s source code is available but the licensing isn’t, so the company still owns it and can still charge you for using it.

NocturnalMorning,

This is correct. If you took code from Unreal source and plopped it in Godot, you’d be in deep crap.

Player2,

Open source is not necessarily FOSS

Yerbouti,

Indeed.

nybble41,

Unreal is “source available”, not Open Source. There’s a big difference. With any Open Source project you can legally fork the project, distribute your custom version of the code, create a community around your variant… “source available” has none of that. The Unreal EULA is more permissive than most game engine licenses (with the obvious exception of Godot) but it still comes with plenty of restrictions. For example:

You are permitted to post snippets of Engine Code, up to 30 lines of code in length, online in public forums for the sole purpose of discussing the content of the snippet or Distribute such snippets in connection with supporting patches and plug-ins for the Licensed Technology, so long as it is not for the purpose of enabling third parties without a license to the Engine Code to use or modify any Engine Code or to aggregate, recombine, or reconstruct any larger portion of the Engine Code.

Which pretty clearly does not satisfy the Open Source Definition.

Yerbouti,

That’s a really informative reply, it clarifys things for me. Thanks a lot!

GreenMario, to linux_gaming in [Guide] Everything you need to know about gaming on Linux

Bookmarked for later. Right now my aging PC is Windows 10 but been seriously thinking going OpenSuse with my next build, since Proton is magic according to my Steam Deck.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • random
  • uselessserver093
  • Food
  • aaaaaaacccccccce
  • test
  • CafeMeta
  • testmag
  • MUD
  • RhythmGameZone
  • RSS
  • dabs
  • KamenRider
  • Ask_kbincafe
  • TheResearchGuardian
  • KbinCafe
  • Socialism
  • oklahoma
  • SuperSentai
  • feritale
  • All magazines