Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Stroggos

Voxel Doom Port!

Recommended Posts

Listen, Graf, I hate the GPL at least as much as you do (possibly more, its a really awful license), but a civilized, well-mannered person works within the confines of what they have, instead of ignoring things when it's unsuited to them. It is definitely the responsibility of the person who is implementing others code to try and keep the license bullshit at least sane if not completely straight. I wasn't talking in my first post about the writers of original code, they can do with it what they want, so far as I'm concerned, but if one is a developer adopting the code then it is their duty to respect the various license terms of the code they're adopting should they wish their code to be respected itself.

Share this post


Link to post
Graf Zahl said:

All the problems we are having are not by such 'no commercial use' clauses but by the GPL's insistence to govern the whole program if there's even one line of GPL'd code in it.

It's not Ken who divides developers, it's the FSF with their communist attitude. All these licensing issues only come into play if the GPL is concerned. It's the only license that stands apart and causes legality issues.

I still think that's better than how many engine makers don't even release their source code. Again we have no entitlement to their code.

It's their right to put restrictions on their source code, whether they restrict commercial use, or whether they restrict distributing their source code with the former kind.

Share this post


Link to post

The funny thing with that is that none of the Build game source releases is valid with that reasoning because they *ALL* combine GPL'd game code with Build code. That makes the whole Build dilemma very fishy at best and downright illegal at worst. But since Ken Silverman was heavily involved in these projects he basically approved using his code in a GPL environment. So where are we now?

Anyway, regarding the whold licensing dilemma, where does a license to become valid? How much code needs to be there to have a license any merit?

What about some simple math functions that were ported straight out of a math book? Can they be licensed under the GPL? If yes, it would mean that nobody writing proprietary code would be allowed to use similar code because when it comes down to it it'd look identical to the GPL code, discounting variable names and formatting style.

Take for example the polyobject code in Eternity and ZDoom. Even though I wrote most of it independently of Eternity, in the end I HAD to take one specific (rather trivial) 5-line fragment of code from Eternity to make it work. Quasar was fine with that and he gets proper credit for it but it still begs the question whether such small pieces of code can even be copyrighted.

Anyway, aside from those 5 lines, each other time I had to take a look at GPL'd code to understand something I have been able to reimplement it using original (Z)Doom code only so yes, I took the idea but the code I used came from somewhere else.


The same might be done here. Understand what the code does and then deliberatly go for different sources to find alternatives. Nobody can accuse you of using improperly licensed code if it can be traced back to something 'proper'.

Sometimes it's just unavoidable to study code you can't use directly, especially if you want to implement things in a way that remain compatible between differently licensed implementations.

Share this post


Link to post

Back to the actual voxels themselves, if anyone wants to chip in with the drawing that would be sweet. The timing of all this has been rather fortunate in that it happened to fall on my week off work, so I've had plenty of time to make progress (*). But back to work tomorrow, so things might slow down a bit again. It certainly won't grind to a halt like before, but I won't be able to churn them out as quickly.


* (I did have plans for my week off, but sod's law dictates that the cute ones are always complete headcases)

Share this post


Link to post

Apologies for the double post, but



VOXELS. IN. DOOM.



Special thanks to Exl for compiling the new ZDoom branch. Download link here ( Use at your own risk, possibly unstable ) . And download the test wad here to see them.

Share this post


Link to post
Graf Zahl said:

*stuff*


Thats an awful lot of text to say "I really don't give a shit about licensing issues."

Also, DooMAD those voxels look pretty sexy :)

Share this post


Link to post

Stupid question: could voxels be used to replace HUD sprites? I'm curious what the limitations are.

Share this post


Link to post
DooMAD said:

Special thanks to Exl for compiling the new ZDoom branch. Download link here ( Use at your own risk, possibly unstable ) . And download the test wad here to see them.


Well, it worked for about 5 seconds, then I walked up closer to them and it crashed. It was fun while it lasted :P

It seems it crashes as soon as any of the voxel objects are outside the player's field of view. Just turning to the side from the start position crashes it.

Share this post


Link to post

Hmm, that kinda looks revolutionary :o

Will Tormentor667 accept voxel monsters? Or items? Or props? Or yeah... SFX?

Share this post


Link to post

I think that's up to the author of the monster/weapon/whatever to decide. I'm not sure why Tormentor would term them down since it's an added bonus.

Share this post


Link to post
udderdude said:

Well, it worked for about 5 seconds, then I walked up closer to them and it crashed. It was fun while it lasted :P

It seems it crashes as soon as any of the voxel objects are outside the player's field of view. Just turning to the side from the start position crashes it.


Crashes as soon as zdoom tries to load the level for me.

Share this post


Link to post
udderdude said:

Well, it worked for about 5 seconds, then I walked up closer to them and it crashed. It was fun while it lasted :P

It seems it crashes as soon as any of the voxel objects are outside the player's field of view. Just turning to the side from the start position crashes it.

I find it helps if you don't look up or down with the mouse. It still crashes at certain angles, but much less than lookng up and down. But yeah, still very early in development.

Share this post


Link to post
Snarboo said:

Stupid question: could voxels be used to replace HUD sprites? I'm curious what the limitations are.

Ports which support models usually allow to use HUD models, so there's no reason not to support HUD voxels as well.

If you're talking specifically about ZDoom's implementation, then I don't know if Randy is planning on doing so. HUD voxels would lose some of the advantages of HUD sprites, such as truecolor rendering on Windows.

Share this post


Link to post
Graf Zahl said:

Most 'free' licenses only concern the code they come with. All the problems we are having are not by such 'no commercial use' clauses but by the GPL's insistence to govern the whole program if there's even one line of GPL'd code in it.


That's because Quasar and SoM are cool guys, and when you need GPL code from Eternity they license it to you, otherwise you'd have to make a choice between Ken's BUILD code or their Eternity code. I understand there's been similar arrangements made for some ZDoom code put into Eternity as well. I think it says a lot about the ZDoom & Eternity devs that they're willing to re-license code donations to each other; I think it's a thing they should be proud of and that we the community should thank them for.

Graf Zahl said:

Anyway, regarding the whold licensing dilemma, where does a license to become valid? How much code needs to be there to have a license any merit?


Rofl. Any code at all, that's the whole point of licensing. You can't be like, "bah, that's only 473 lines instead of the requisite 474, I will steal it all!"

Graf Zahl said:

What about some simple math functions that were ported straight out of a math book? Can they be licensed under the GPL? If yes, it would mean that nobody writing proprietary code would be allowed to use similar code because when it comes down to it it'd look identical to the GPL code, discounting variable names and formatting style.


When stuff like this happens in the real world (as in, SCO vs. Novell), it gets laughed out of court. Experts are called in to declare certain routines common or non-innovations.

Graf Zahl said:

Take for example the polyobject code in Eternity and ZDoom. Even though I wrote most of it independently of Eternity, in the end I HAD to take one specific (rather trivial) 5-line fragment of code from Eternity to make it work. Quasar was fine with that and he gets proper credit for it but it still begs the question whether such small pieces of code can even be copyrighted.

Anyway, aside from those 5 lines, each other time I had to take a look at GPL'd code to understand something I have been able to reimplement it using original (Z)Doom code only so yes, I took the idea but the code I used came from somewhere else.


Actually in projects that aren't ignorant or dismissive of licensing, they don't even look at code they can't legally use, and their developers sign commitments (see the WINE project) saying so and indemnifying the project. Because while trying to license something like "for (i = 0; i < MAX; i++)" is silly, licensing something like a technique for properly rendering polyobjects in a software renderer is quite sensible as it's a very patentable idea.

Graf Zahl said:

Sometimes it's just unavoidable to study code you can't use directly,


Nah it's real easy. Just don't do it. Don't double-click on the file, don't click on the link. Bam. Easiest thing you ever didn't do.

Graf Zahl said:

especially if you want to implement things in a way that remain compatible between differently licensed implementations.


Oh you mean "if I want to gobble up every feature in any piece of software ever". Then yeah, you might have to ignore a few licenses here and there. The correct way to handle issues like this is to define a standard and then implement it. There can even be a standard implementation under a liberal MIT/BSD license, in fact this is a great idea.

===

Finally I want to address the idea that the DSL/BUILD license is somehow more permissive than the GPL. This is false on its face, as code with more permissive licenses is rolled into GPL codebases all the time, generally with due credit and a link to where the original code can be found (under the original, more permissive license). So if DSL/BUILD were more permissive there would be no problem rolling that code in. Thus, DSL/BUILD have to at least be as permissive (if not less permissive) than the GPL.

Furthermore, DSL/BUILD code cannot be used for commercial purposes. Most people probably wouldn't think twice about that, Doom is a pretty old game and relatively few people play it or are interested in it. However, because the license doesn't allow for commercial use, websites with advertisements are unable (legally) to use content generated by ZDoom-derived ports, so no screenshots and no videos. This, as you can imagine, is kind of a big deal (see this Red vs. Blue wikipedia section where Bungie allows Roosterteeth "to use Bungie's game properties without license fees."). On the other hand, the GPL has no non-commercial use clauses; it actually encourages the commercialization of GPL software.

But most of all, the GPL empowers the users of the software. Should the developers change the software in a way they don't like - or even close the project down - users are free to fork the project and carry on. With DSL/BUILD software, users are out of luck unless the project was open source in the first place and there are copies around.

===

Last word I promise. Copyright and patents and licensing are all very complex legal issues that haven't been fully handled by the courts yet. I'm the first one to admit I don't know it all and that what I think I know might be incorrect. However, sitting at home thinking about how ridiculous the GPL is and how it "allows you to hoard simple math routines" is pretty irresponsible arm-chair lawyering Graf. I'd encourage you to read up on some of the bigger cases involving those issues.

Share this post


Link to post

See, that's precisely the thing I'm worried about. If you can copyright trivialities and put them under a restrictive license you pretty much have any competition under control, just like the rampant patent abuse that's going on in the software industry.

The math functions I mentioned are a perfect example. What copyright does someone own who merely copies a formula from a book and puts it into a C function? In my opinion none. If the author of the book was the creator of the formula it's clearly his copyright, not the coder's and if the formula is common knowledge nobody should be able to claim it in any way.

Anyway, it's easy for you to talk like this from an outside position. But in a world where compatibility between ports is important it won't work like that. Sure I can do my own implementation of said features (in fact I did) but in the end I still have to make sure that what I wrote has any actual use in projects that are supposed to target multiple ports - so I have to inevitably cross-check my code with the one I want to be compatible with.

Because while trying to license something like "for (i = 0; i < MAX; i++)" is silly, licensing something like a technique for properly rendering polyobjects in a software renderer is quite sensible as it's a very patentable idea.


... and nobody is disputing his entitlement to copyright for that code. But what's to copyright here is not the idea but the implementation of said idea. Yes, he could patent the idea itself (it's bad enough that this is even possible) but the copyright only concerns his actual code. However, from a brief outline of it and good knowledge of how the Doom engine works it's rather easy to reproduce the idea itself without ever bothering to look at the code.

Share this post


Link to post

You can't copyright trivial things. Try enforcing a copyright on the words "red" and "tall", it won't work. Just the same as enforcing a copyright on trivial code doesn't work - such as math functions or basic computer science stuff like iteration, tail recursion, mutexes, ad nauseum. In SCO vs. Novell (if I remember right), SCO even had trouble enforcing their copyright of very "UNIX" things in Linux because of the POSIX standard and the fact that BSD had been around for so long; so even stuff like Sys V IPC, shared memory or signals were thought to be commonplace and not protected under copyright. The same thing applies for songs; you can't copyright the I-IV-V chord progression, but you can copyright "Wild Thing".

Compatibility between ports would be much easier if ZDoom incorporated no BUILD code and was BSD/GPL instead of DSL. I think what you and Randy (and the rest of the ZDoom-ers) do is great and I'm very appreciative of it, but that license sucks and everyone hates it. The DSL's only slightly better, but IIRC there's still a non-commercial clause in there. And if the only way to achieve compatibility is shared code (which I don't believe but let's just go with it for the sake of argument), it's easy to keep a repository of standard feature libraries, like voxels or UDMF. It would work like ZDoom/Eternity use snes_spc. License 'em as MIT, done and done.

FWIW I also hate software patents, and agree the whole thing is absurd. Owning copyright & licensing your code as you see fit is one thing - creators need to have control over their creations - but patents are like owning ideas or actions; it's way too 1984 for me.

Share this post


Link to post

Those look excellent DoomMAD. Even better than I thought they would. Good work to you and to the guys who got it working in ZDoom :D

Share this post


Link to post
Mechadon said:

and to the guys who got it working in ZDoom :D

That's entirely Randy's doing. (Well, and Ken Silverman. :p)

Share this post


Link to post
Gez said:

That's entirely Randy's doing. (Well, and Ken Silverman. :p)


Haha you beat me to it.

Share this post


Link to post
DooMAD said:

Apologies for the double post, but

VOXELS. IN. DOOM.



Special thanks to Exl for compiling the new ZDoom branch. Download link here ( Use at your own risk, possibly unstable ) . And download the test wad here to see them.


Awesome work! Which utilities do you use, and how do you do it? Now that there's engine support, I'm considering starting a Heretic/Hexen voxel project, if there isn't one already.

Share this post


Link to post
Ladna said:

Compatibility between ports would be much easier if ZDoom incorporated no BUILD code and was BSD/GPL instead of DSL.



If it was that easy...
Build is just one issue, and to be honest, if push came to shove, the one that's most easily challenged due to precedent (Build code being released with Duke3D's GPL source with Ken Silverman's approval.) and for GZDoom I could just rip it out, along with all the ugly Build code.

Personally I think that ZDoom's renderer is a monster (meant in the most negative sense of that word.) I'd happily replace it with Eternity's Cardboard if the license would allow it.

The much bigger issue is the sound library. ZDoom uses FMod and heavily relies on its features. Now think about the alternatives if that had to go away: SDL Mixer (puke^2) or OpenAL. Let's just say that the first is not an option and the second one suffers from lack of programmers willing to work with it. So we are stuck with it for the time being.



FWIW I also hate software patents, and agree the whole thing is absurd. Owning copyright & licensing your code as you see fit is one thing - creators need to have control over their creations - but patents are like owning ideas or actions; it's way too 1984 for me.

Share this post


Link to post
Graf Zahl said:

The much bigger issue is the sound library. ZDoom uses FMod and heavily relies on its features. Now think about the alternatives if that had to go away: SDL Mixer (puke^2) or OpenAL. Let's just say that the first is not an option and the second one suffers from lack of programmers willing to work with it. So we are stuck with it for the time being.

This is admittedly somewhat of a tangent, but it's a shame there isn't more developer interest in OpenAL. With all the shortcomings and flaws of SDL_Mixer, some sort of cross-port cooperation between developers to get Doom's audio running under OpenAL could be a great boon to a lot of sourceports if it could be organized the right way.

Share this post


Link to post
DooMAD said:

Use at your own risk, possibly unstable


Yeah, unstable would be a word for it, I can't even get near the voxels without it crashing. :P

Share this post


Link to post

This RL stuff isn't going away in any great hurry. It's so bad that I've barely written a single line of C code in well over a week. I'm glad that I bought this project to peoples attention I I hope it gets implemented rather soon in Eternity although it's not going to be done by me.

Share this post


Link to post
Spleen said:

Awesome work! Which utilities do you use, and how do you do it? Now that there's engine support, I'm considering starting a Heretic/Hexen voxel project, if there isn't one already.

You can either use Slab6 or Voxel3D to draw them. I find the interface of Voxel3D more intuitive, but it doesn't have the ability to load a palette, so you have to waste alot of time typing in the RGB values for each colour you want to use. Slab6 might be better in that respect, but I haven't really tried playing with it that much. I find it handy to have your image editor of choice open in the background with the original sprite for quick reference.

You'll need Slab6 either way, as any files you save with Voxel3D need to be converted to VOX with a conversion utility and then from VOX to KVX with Slab6. It's all a bit time consuming, but it works.

Share this post


Link to post
DooMAD said:

You can either use Slab6 or Voxel3D to draw them. I find the interface of Voxel3D more intuitive, but it doesn't have the ability to load a palette, so you have to waste alot of time typing in the RGB values for each colour you want to use. Slab6 might be better in that respect, but I haven't really tried playing with it that much. I find it handy to have your image editor of choice open in the background with the original sprite for quick reference.

You'll need Slab6 either way, as any files you save with Voxel3D need to be converted to VOX with a conversion utility and then from VOX to KVX with Slab6. It's all a bit time consuming, but it works.

Well, that sucks. It doesn't seem like there are decent utilities out there, from what you are saying - the one with a decent interface can't even load palettes! Are you seriously saying I have to type in all the palette colors each time I open it?? Or is there some way I can type in all 256 palette colors once and never have to do it again? Thanks for info, anyways.


I've also looked into commercial ones like Paint3D and 3D Coat. What do you think about them?

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×