Create an account


Thread Rating:
  • 2 Vote(s) - 3 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Xonotic port/reboot in Godot - roadmap

#51
[Image: 9aucg06.jpeg]

So here is just an example of 2 days of work, I'm probably going to finish this bsp_loader plugin to work with Q3 and Xonotic and possibly many more games. So people can use it to make whatever game they want to load all the old community maps directly from BSP and pk3 files. Perhaps I can also make some sort of functionality, that you can carve holes in walls or split the map so people can just load the BSP file and then extend it and modify it to make sense to the game they want directly in editor without Netradiant.

It is not 100% done. But it is much more than what you get from Qodot and such. Like you see it respects all the entity definitions and creates collision boxes for items and triggers and such, also loads _normal, _gloss etc maps.

I would have done this with Grok-3 and ChatGPT-o1 in just one day, but they removed o1 and so I was hitting walls with Grok-3 and couldn't just paste it to the other AI to fix it instantly. So I needed to waste like 3 hours to write horrible regex parser for texture matching by hand, really nasty bullshit that AI should have done on its own. Like sometimes the names are for example exomorphx/light/metal_light08ared but the file on disk could be exomorphx/light/metal/light08ared.png or exomorphx/light/metal/light/08ared.png or exomorphx/light/metal/metal_light08ared.png or exomorphx/light/metal_light08ared-1.png or exomorphx/light/metal/metal_light08ared-5.png or whatever, really horrible naming scheme that no one understands and probably eats like 500 lines of C code that has grown historically.

Anyway, so because ChatGPT-o1 was gone in the end I tried out Gemini 2.5 but this AI is a load of horseshit as well. It totally destroys your code if you ask it to return back full files. However what's good about it is that it can eat like 5MB of codebase, and then it understands the code and it can suggest how to fix your code. So then I made it write instructions for Grok-3 and with those instructions you can pull Grok-3 out of it's misery. Not as comfortable as just pasting it to ChatGPT-o1, but it works as an alternative. Just a bit more hassle. Gemini 2.5 is good at reasoning, but not at returning full code.

But yeah, if you fail using those AI tools it is just a skill issue on your end. Those tools are extremely powerful, just a matter of using them correctly.

Unfortunately there is no full DDS support in Godot at this point in time, you have to run a primitive convert script on DDS to convert the pk3 to PNG. Luckily only the base pk3s use DDS but not the community maps.

https://github.com/ballerburg9005/godot-bsp-map-loader
Reply

#52
(04-23-2025, 11:40 AM)ballerburg9005 Wrote: [Image: 9aucg06.jpeg]

So here is just an example of 2 days of work, I'm probably going to finish this bsp_loader plugin to work with Q3 and Xonotic and possibly many more games. So people can use it to make whatever game they want to load all the old community maps directly from BSP and pk3 files. Perhaps I can also make some sort of functionality, that you can carve holes in walls or split the map so people can just load the BSP file and then extend it and modify it to make sense to the game they want directly in editor without Netradiant.

It is not 100% done. But it is much more than what you get from Qodot and such. Like you see it respects all the entity definitions and creates collision boxes for items and triggers and such, also loads _normal, _gloss etc maps.

I would have done this with Grok-3 and ChatGPT-o1 in just one day, but they removed o1 and so I was hitting walls with Grok-3 and couldn't just paste it to the other AI to fix it instantly. So I needed to waste like 3 hours to write horrible regex parser for texture matching by hand, really nasty bullshit that AI should have done on its own. Like sometimes the names are for example exomorphx/light/metal_light08ared but the file on disk could be exomorphx/light/metal/light08ared.png or exomorphx/light/metal/light/08ared.png or exomorphx/light/metal/metal_light08ared.png or exomorphx/light/metal_light08ared-1.png or exomorphx/light/metal/metal_light08ared-5.png or whatever, really horrible naming scheme that no one understands and probably eats like 500 lines of C code that has grown historically.

Anyway, so because ChatGPT-o1 was gone in the end I tried out Gemini 2.5 but this AI is a load of horseshit as well. It totally destroys your code if you ask it to return back full files. However what's good about it is that it can eat like 5MB of codebase, and then it understands the code and it can suggest how to fix your code. So then I made it write instructions for Grok-3 and with those instructions you can pull Grok-3 out of it's misery. Not as comfortable as just pasting it to ChatGPT-o1, but it works as an alternative. Just a bit more hassle. Gemini 2.5 is good at reasoning, but not at returning full code.

But yeah, if you fail using those AI tools it is just a skill issue on your end. Those tools are extremely powerful, just a matter of using them correctly.

Unfortunately there is no full DDS support in Godot at this point in time, you have to run a primitive convert script on DDS to convert the pk3 to PNG. Luckily only the base pk3s use DDS but not the community maps.

https://github.com/ballerburg9005/godot-bsp-map-loader

Ohhh thats really interesting. As for coding -at least with VBA- Gemini 2.5 pro is great. I build a programming language loaded from excel cells at runtime with it. (With syntax highlighting etc.; 30+ Files, approx 10000+ lines of code)
It was really great for me but after a certain time it loses focus and makes more errors at which oint I ask it to summarize the project, my instructions and things gemini falsely took for granted that I had to tell it to do differently as prompt for a new chat.
Another thing I told it was to "Always repeat my instructions/commands and their status at the start of all of your messages to help keeping track of them". That made it give a list on top of each answer which helped us keep track of the next steps and make fewer mistakes for longer.

[Image: 0nb7StQ.png]
Reply

#53
Hello!  I've had a long-standing passion for Xonotic and used to contribute significantly back in the hay-day of the project.  Life got busy and pulled me away from the project for many years, but I've always felt that modernizing Xonotic to a newer engine would allow much easier implementation of modern features and potentially could bring renewed interest to the game.  Unfortunately, it always seemed that converting ~220k lines of code AND writing a compatibility layer to emulate Darkplaces functionality would be a monstrous task which would require very significant engineering effort.

Through my career I've worked on a few projects to convert production applications from one language/framework to another, and with recent advancements in AI coding tools I realized it's likely doable for a single person to port Xonotic to another language/engine without too significant of engineering investment now... So I gave it a shot.

I've got a semi-functioning game after just a weekend of work, though there are numerous issues and it's in an early state.  Maps load rather well (I've solved almost all of the problems you were running into Ballerburg), player physics are almost perfectly matching, netcode is mostly functioning, client side prediction is functioning with some minor glitches, etc.  AI tools are impressive at understanding complicated challenges when porting, but you need to provide very specific tasks and instructions otherwise they simply can't focus or discern enough to deliver quality outcomes... It involves quite a bit of whack-a-mole.  I plan to build feature parity with the original Xonotic as a starting point, and then perhaps moving on to integrating modern features and cleaning up the design and presentation of the game for more modern players. 

Some notes:
  • The language I chose for this port is C# as it's the language I'm most familiar with and it has a great deal of support and familiarity in the game development industry.
  • We can support modding and replace the CSQC VM-downloadable compat functionality with Wasm.  This will allow modders to host their own servers with custom game code/assets and any client can join it and play it just the same as someone could with Xonotic today.
  • It would not be incredibly difficult to build a compatibility mode with our own QC VM in XonoticGodot which allows people to play on the original Xonotic servers with the Godot-based game.  This should help prevent any split in the community from a compatibility/playability perspective.

I believe doing this will provide a great deal of opportunities for improvement in the game-- All of the following features will be significantly easier to implement:
  • Steam support via pre-built Godot Steam toolkits
  • In-game voice communication (again via pre-existing toolkits for Godot)
  • Matchmaking and NAT traversal solutions to allow people to host private servers on their own PCs to play with friends without significant setup
  • Client-side prediction of the weapon-system/interactable map objects
  • Netcode improvements leveraging modern technology
  • Modern rendering capabilities (lighting improvements, shader improvements, better particle effects, etc)
  • Smoother/enhanced player animations

Here's my Git repository.  For now I'm just hosting the source code on GitHub and the assets are downloaded with a script, but we could later migrate this to GitLab to store all the assets (which appears to be better for large storage-heavy repositories).

https://github.com/bryankruman/XonoticGodot

A final note:  I know there is a sizeable portion of this community which frowns upon AI software development tools.  I hear you and understand why you dislike them, however they are undeniably productivity multipliers and we have an opportunity to bring more life back into this game we love.  This kind of re-write would be unthinkable without many months or possibly years of full-time engineering work prior to AI coding tools.  Additionally, I don't feel that these tools diminish human expression in the slightest, I assert they are simply a more advanced chisel with which to carve ones work.  I will say I am personally frustrated with AI slop as well, but a great deal of the problem with AI slop is a lack of follow-through and a poor eye for quality.  You can take a half-step in slapping something together with AI, but you can also go the extra mile and refine the product to be production quality.
Reply



Possibly Related Threads…
Thread Author Replies Views Last Post
Exclamation Xonotic Roadmap cushinga 2 3,750 03-18-2023, 11:09 PM
Last Post: cushinga
  [META] Xonotic reboot/port in modern engine ballerburg9005 32 26,255 02-22-2022, 05:11 PM
Last Post: ballerburg9005
  Samual's Personal Development Roadmap Samual 40 68,588 11-10-2021, 03:18 AM
Last Post: chooksta
  Emscripten port for Xonotic ctbur 2 5,057 05-06-2020, 12:26 AM
Last Post: ctbur
  Ongoing port to the Unvanquished engine? poVoq 9 18,016 11-05-2015, 11:09 PM
Last Post: Danfun64
  0.1beta roadmap FruitieX 9 14,382 08-12-2010, 04:00 AM
Last Post: Mr. Bougo
  Mac OS X, NSGL (Cocoa) based port of Nexuiz Ender 11 27,413 06-14-2010, 02:46 PM
Last Post: merlijn

Forum Jump:


Users browsing this thread:
1 Guest(s)

Forum software by © MyBB original theme © iAndrew 2016, remixed by -z-