Memorix101 / SharpQuake

SharpQuake is a GLQuake reimplementation in C# using the OpenTK library
https://memorix101.itch.io/sharpquake
GNU General Public License v2.0
50 stars 18 forks source link

Any plans moving the progs into code? #7

Open IceReaper opened 3 years ago

IceReaper commented 3 years ago

Are there any plans moving the old QuakeC progs into loadable c# gamescript projects? I was investigating this project a while back whether its useful for custom games but found the whole progs implementation to be too much of a pain to struggle with.

optimus-code commented 3 years ago

I'm not sure about the main repo but this is something I intend to do in the SharpQuakeEvolved fork.

I had looked at doing it notionally but it is a fairly big process as it would involve porting the QuakeC code to C#. There are language differences that would need handling. I had thought about potentially writing an interpreter that would convert QuakeC opcodes etc to C#, which may be a less long-winded way to achieve a similar result (albeit probably would still need a lot of manual work) but there are other priorities for myself currently within the project.

IceReaper commented 3 years ago

Okay, sounds great :) As the conversation is going already: I've seen some quake2 and quake3 bsp stuff in here. I've ported quake2 to c# and verified it working properly by finishing the campaign in coop. Are your plans to stick to quake1 or would it be an option to add quake2 (and maybe even quake3) on top? If yes, i would love to hop in and help whereever i can :)

optimus-code commented 3 years ago

Okay, sounds great :) As the conversation is going already: I've seen some quake2 and quake3 bsp stuff in here. I've ported quake2 to c# and verified it working properly by finishing the campaign in coop. Are your plans to stick to quake1 or would it be an option to add quake2 (and maybe even quake3) on top? If yes, i would love to hop in and help whereever i can :)

Yeah a lot of the Q2 Q3 stuff is there but not fully implemented (PVS etc, rendering) etc.

My end goal is really to get my fork to a point where it's "refactored enough" so that I can then fork that to create my own iteration of the engine; removing legacy Quake stuff and bringing in newer technologies. But still maintaining a compatible Quake 1 client. I chose Quake 1 because at the time SharpQuake was the only repo for C#, but your work with the Q2 port changes that up a bit.

As the refactoring already done has meant a lot of code is abstracted and namespaced in SharpQuake, it is theoretically possible to combine areas to create some sort of client compatible with Q1 and Q2, but is it worth the trouble?

In a perfect world there would be a SharpQ3 in existence that would bypass needing to bother with older Quake engines for my purpose but, that is a bigger task than Q1 and Q2.