← Back to context

Comment by WildWeazel

21 days ago

Hi all, OpenCiv3 founder here. Thanks for the support! Check us out on Civfanatics or Discord to keep up with the project.

Any interesting insights about using Godot with C#? I love C# and I'm happy using it in Godot even though it's not as seamless as in Unity: in Godot 4 we still can't export to Web if the project is C#, and there's the whole conversion between C# types and Godot types that adds inefficiencies and extra allocations, etc.; it feels like it's a second-class language in Godot.

I'm always interested in seeing what people find when developing larger projects in C#.

  • The founding developers were all software engineers with .NET experience, so it was the natural choice even though at the time it was Godot 3.x with Mono. I had used Unity before but not Godot. The project is structured as mostly plain C# DLLs with a relatively thin Godot UI layer controlling it, so the Godot type system is fairly encapsulated. We haven't really seen any issues with those decisions beyond just working out the communication between Godot and DLL. But again we were just working from what we knew so I can't really say if this was the best way to go about it.

  • We were building on C# Godot and I think it is a second class citizen in the sense that 1) you can't export to wasm and 2) they are moving the interface to be handled by gdextension.

    That said, I think once you get the gist of it and understand the landmines, it is really nice to use vanilla dotnet rather than unity's fork.

  • I have this principle of "5% scripting". If the high level scripting on top of C++ consumes about 5% of frame time, then the language of the script does not matter.

Oh my, this brings me back! One of my fondest gaming memories involves a massive Civilization 3 PBEM match between a number of Civilization fan sites, where we all had private forums and ran these virtual nations against each other. This was way back in 2002 or 2003!

I believe Civfanatics was in it (run by “Chieftess” if I recall), Apolyton (which I was a member of — elected in as Minister of Public Works and had to come up with a plan to clear our pesky jungles) and a number of other sites.

It was such an awesome time. Real diplomacy and trade negotiations between the fan sites while waiting to play our turns. Man, it was fun.

  • I was also there at Civfanatics watching from the sidelines. Fond memories indeed, and some of those same people laid the foundations for this project.

  • I didn’t do that stuff but I remember…was it Kryten? Making a multi unit graphic utility, I used it to make and publish some multi units. Fun times. CivFanatics was great.

Would it be feasible to add an API to OpenCiv3 (or run it as an SDK) so we can script up actions?

  • There will certainly at least be (technically already is) a Lua scripting interface for mods. We've hand-waved some talk of a proper C# SDK but have no concrete plans yet.

Good to see you around here! I remember some of your posts way back in the day. I don't recall, did you hang around the civfanatics IRC much back in the day?

This is great stuff! Civ3 is still by far my favorite Civ. And a nice use of Godot.

Have you considered adding LLM features for the negotiations? Could be cool.

  • From what I've seen with projects like this, the successful ones do a good job of 'sticking to the mission' of faithfully recreating the original game in a modern engine (openMW, daggerfall unity, all my points of reference are TES related)

    The neat part is that they are open source, so anyone who wants to take it in a different direction can fork it. The multiplayer version openMW being a great example of this.

  • You are getting downvoted, but this is a cool idea. Diplomacy has historically been a weak part of the series, and being able to shore that up may be a lot of fun to play against.

    • I would say diplomacy is the most misunderstood feature of the series. Players constantly say they want a stronger AI that's smarter at diplomacy. But whenever they have built an AI like that, their play testers complained that it doesn't behave like a real world leader (too ruthless).

      This experience led Soren Johnson (co-designer of Civ III and lead designer of Civ IV) to the realization that Civ AIs are supposed to "play to lose" [1].

      [1] https://www.youtube.com/watch?v=IJcuQQ1eWWI

      4 replies →

  • not sure if serious...

    • Lifelong Civ player. I have always felt the negotiations part of the game is laughably bad, and a huge missed opportunity. The ability to use language as a tool -- diplomacy, but also rhetoric, veiled threats, etc -- is something I excel at, and I would love the chance to test my mettle against an enemy in an imaginary nuclear war context, because when else do you get to play high stakes games like that with words in real life? Civ is the perfect venue for it, but the game designers are extremely boneheaded about how they executed that particular part of the game.

    • Even if you don't want an LLM for the actual functionality of negotiations, LLM-generated text would be neat. As-is, the text becomes irrelevant, "Our words are backed with nuclear weapons" is just "nukes = true" - letting an LLM tell you the AI has nukes seems like harmless fun.