• Collaborative Project: MARS MINER
    137 replies, posted
I like the look of GPL v3. I'll have to rewrite my LawyerBot that added the licenses into a HippyBot.
[QUOTE=Smashmaster;34225583]Apparently you can't be a programmer until you've gotten a degree in IP law.[/QUOTE] Yeah, what happened to just programming things instead of worrying about licenses (for something that might not even be finished)?
The corporations happened, man
[QUOTE=KillerJaguar;34228396]Yeah, what happened to just programming things instead of worrying about licenses (for something that might not even be finished)?[/QUOTE] You, sir, clearly hail from the mythical programming equivalent of Valhalla, as no such society has ever existed on this mortal earth. As long as people continue to treat information as a physical good, we're going to have to wade through this legal mire.
[QUOTE=KillerJaguar;34228396]Yeah, what happened to just programming things instead of worrying about licenses (for something that might not even be finished)?[/QUOTE] The [URL="http://www.gesetze-im-internet.de/urhg/BJNR012730965.html"]Urheberrecht[/URL] itself is actually pretty straightforward with only 55 pages for all artistic and technical works combined. Programs were always protected by the clauses for literary property, but there's [URL="http://www.gesetze-im-internet.de/urhg/BJNR012730965.html#BJNR012730965BJNG004201377"]a section[/URL] that allows reselling of licensed copies, reverse engineering and, in some cases, decompiling and voids clauses that would prohibit this. The owners of the rights can also demand that unauthorised copies and cracking tools must be destroyed or given to them against compensation, wich is what the GPL uses to enforce the copyleft here. Liability clauses seem to be mostly superfluous under German law, because liability and warranty can't be limited explicitly and are already limited if there's no compensation. The GPL addresses this by limiting the clause to the laws in effect, wich means there is probably no difference to the liability laws. (Wich should mean liability only for deliberate or grossly negligent actions. It [I]may[/I] have an effect on warranty issues caused by "normal" careless, but I think that EU law already takes care of that.) Selling software is a completely different thing though, as there are unvoidable liability and some warranty regulations in EU law. I probably wouldn't do it without opening a limited liability company. It gets worse if you work in a software firm and want to have side projects, because that's [URL="http://www.gesetze-im-internet.de/arbnerfg/BJNR007560957.html"]where the whole IP issue is at[/URL]. I stopped working on that file viewer some time ago because I got a job for a few months and that law is [U]really[/U] restrictive for the employee. I made a pull request that drops a conflict file from the license merge and adds .hgignore (copied from .gitignore). [IMG]http://dl.dropbox.com/u/5013896/forum/Facepunch/Marsminer/LicenseBranchesAndStuff.png[/IMG] I'm so glad we use a versioning system with good branching support right now. This would have been a nightmare in SVN :v:
Sorry about that, I've been struggling with having no internet connection to my dev machine and had to keep ferrying stuff to my laptop back and forth. Apparently I don't get internet to my room until Wednesday. I have 3 exams before then.
[QUOTE=Ziks;34237766]Sorry about that, I've been struggling with having no internet connection to my dev machine and had to keep ferrying stuff to my laptop back and forth. Apparently I don't get internet to my room until Wednesday. I have 3 exams before then.[/QUOTE] It's mostly my fault, I was forking and merging a lot to keep the saving branch up to date. That was the last pull request for a while, the save system will take some time to implement.
I'll try and get the actual (non-test) chunk and world system done in the meantime so you have something to test it on. I may struggle for free time in the next few days though.
You know what might could be a fun little gameplay element? Rare mars rovers that gave players bonuses if salvaged. (Opportunity and Spirit, forever in our hearts!) Could might also be used in some form of competitive multiplayer, the first colony salvaging two mars rovers wins the match. Of course they would still need to salvage other resources too, to keep themselfs alive. Well, I will surely watch this projects progress and help any way I can. Sadly, I've never really been looking too much into game programming. But if there's ever need of donations or morale support, I shall stand ready!
I can't help much with C# as I'm a C++ nerd, but I can help with art assets. What kind of style are we going for? Minecraft-esque or hyper-realistic?
[QUOTE=Naelstrom;34243229]I can't help much with C# as I'm a C++ nerd, but I can help with art assets. What kind of style are we going for? Minecraft-esque or hyper-realistic?[/QUOTE] How about something smooth, metalic and modern so more advanced effects can be added into the game without making it look inconsistent.
I like the relatively smooth styles that Torchlight, Spiral Knights and Skyward Sword use. I'm not 100% sure how to describe it... a bit simplified while highlighting functional detail describes it well, I guess.
We're at the stage where we need some block textures anyway, I'll probably mock up some basic ones until someone with some artistic ability replaces them. One thing I don't like about Minecraft's art is the use of noise. I would prefer something clean and perhaps a bit cartoonish, with only two or three shades per block for terrain. As I said I'll do a mock up now, then we can see what it would look like in-game. [editline]16th January 2012[/editline] I think the style I was thinking of is what you were describing Tamschi. [editline]16th January 2012[/editline] [QUOTE=Deco Da Man;34209173]If you are using numbers to represent block types (which you obviously will), it's a good idea to use per-save-file enumerations. For example (JSON): [code]{ ... "blockTypes": [ "Air", "Dirt", "Rock", "Bananas", "LavaModMainBlockOrSomething", ], ... }[/code] This allows for mods to installed and removed without the need to create new maps. In Minecraft, various mod loaders allocate block IDs at runtime, which causes the block IDs in existing maps to become misaligned and load as incorrect block types. [editline]blah[/editline] Mods (and engine internals?) would simply call: [code] this.BlockType_Cactus = BlockTypeManager::AllocateBlockType("PlantMod_Cactus"); [/code] (no idea if that's valid C#... haven't touched it for years)[/QUOTE] Along with this, block graphics will be given as single 16x16 (or 32x32 or whatever) images, then compiled into a tilemap at runtime based on the order that the block types were allocated.
What kind of non-programming stuff do you need at the moment? I can rite werds for you if you need werds rittan.
I need to brush up on C#. I might give this a go.
[QUOTE=Nigey Nige;34248191]What kind of non-programming stuff do you need at the moment? I can rite werds for you if you need werds rittan.[/QUOTE] Make a mock-up of the art style, I'm sure it'll be brilliant
Man, I wish I knew enough to help with this Sadly, I'm still learning. Hell, it took me two weeks to understand rotations in 3d space. Maybe next time.
I should be getting an internet connection today, so I'll hopefully be progressing a bit faster. I've got the automatic tilemap working, and rendering the blocks with textures, although I'll need to fix it to work on nVidia cards. Does anyone have experience with instancing? I'm sending far too much data to the GPU (6 floats a vertex, or 24 floats a face), and I would like to reduce it to something like: [code]// Start of face: FaceX, FaceY, FaceZ, FaceSize, TextureIndex, // Vertices (FaceDirection is 0 for left, 1 for bottom, 2 for front...): 0 + FaceDirection * 4, 1 + FaceDirection * 4, 2 + FaceDirection * 4, 3 + FaceDirection * 4,[/code] And then each value could be a 16 bit integer, so it would go from 96 bytes a face to 18. I have no idea how to implement this though, the tutorials I looked at on instancing didn't help much.
I'll contribute once I get a few other programming projects done. If you want to have dynamic fonts (generate the glyph sheet at the start of the game instead of loading it from an image), you can (eventually, I haven't finished even the basic bindings yet) use [url=https://github.com/Robmaister/SharpFont]SharpFont[/url] which provides cross-platform FreeType bindings. It's a lot like OpenTK both in the way it will achieve cross-platform support and in the way the code is styled. I'm hoping to have at least the basic bindings done by the end of this week. This would enable you to scale fonts with the screen resolution and more importantly drop in a font file and be able to render non-English characters easily, making language support much easier. Let me know if you're interested.
[QUOTE=Ziks;34271931]I should be getting an internet connection today, so I'll hopefully be progressing a bit faster. I've got the automatic tilemap working, and rendering the blocks with textures, although I'll need to fix it to work on nVidia cards. Does anyone have experience with instancing? I'm sending far too much data to the GPU (6 floats a vertex, or 24 floats a face), and I would like to reduce it to something like: [code]// Start of face: FaceX, FaceY, FaceZ, FaceSize, TextureIndex, // Vertices (FaceDirection is 0 for left, 1 for bottom, 2 for front...): 0 + FaceDirection * 4, 1 + FaceDirection * 4, 2 + FaceDirection * 4, 3 + FaceDirection * 4,[/code] And then each value could be a 16 bit integer, so it would go from 96 bytes a face to 18. I have no idea how to implement this though, the tutorials I looked at on instancing didn't help much.[/QUOTE] Maybe tasselation might be a good idea. I've seen someone make a minecrafty thing using it so it only rendered the faces that were on the surface.
Do you mean tessellation? I wouldn't want to use features that older cards can't support. It currently only renders surface faces too.
[QUOTE=Ziks;34272672]Do you mean tessellation? I wouldn't want to use features that older cards can't support. It currently only renders surface faces too.[/QUOTE] Well I'm not sure how well supported instancing is either... And by only render surface faces do you mean it culls the rest or that the rest isn't even generated?
[QUOTE=Darwin226;34273262]Well I'm not sure how well supported instancing is either... And by only render surface faces do you mean it culls the rest or that the rest isn't even generated?[/QUOTE] Any faces that aren't exposed don't get given to the vertex buffer. Do you think it would be safe to leave the size of the vertex data as it is? It seems to run fine at 96 bytes a face.
[QUOTE=Ziks;34271931]I should be getting an internet connection today, so I'll hopefully be progressing a bit faster. I've got the automatic tilemap working, and rendering the blocks with textures, although I'll need to fix it to work on nVidia cards. Does anyone have experience with instancing? I'm sending far too much data to the GPU (6 floats a vertex, or 24 floats a face), and I would like to reduce it to something like: [code]// Start of face: FaceX, FaceY, FaceZ, FaceSize, TextureIndex, // Vertices (FaceDirection is 0 for left, 1 for bottom, 2 for front...): 0 + FaceDirection * 4, 1 + FaceDirection * 4, 2 + FaceDirection * 4, 3 + FaceDirection * 4,[/code] And then each value could be a 16 bit integer, so it would go from 96 bytes a face to 18. I have no idea how to implement this though, the tutorials I looked at on instancing didn't help much.[/QUOTE] A texture array would be better, as the tiles are the same size anyway. Texture filtering doesn't work properly on tile maps and with an array and you can also move the texture wrapping out of the shader and let the texture sampler do the work. Isn't instancing mostly about using uniform arrays to render many complex objects? Tesselation in the geometry shader should work on all cards that support instancing... The [URL="http://www.starstonesoftware.com/OpenGL/"]OpenGL SuperBible's[/URL] has example code on both. I've read the fifth edition, but I don't remember that much. [editline]18th January 2012[/editline] The current demo uses around 60MB of dedicated VRAM. GPU usage is around 25%. I should be fine at the moment, but it may cause problems with more complex scenes and more textures. For comparison: Minecraft uses around 350MB with a smaller, much more complex world. GPU usage varies between 30 and 50%.
[QUOTE=Tamschi;34273721]A texture array would be better, as the tiles are the same size anyway. Texture filtering doesn't work properly on tile maps and with an array and you can also move the texture wrapping out of the shader and let the texture sampler do the work. Isn't instancing mostly about using uniform arrays to render many complex objects? Tesselation in the geometry shader should work on all cards that support instancing... The [URL="http://www.starstonesoftware.com/OpenGL/"]OpenGL SuperBible's[/URL] has example code on both. I've read the fifth edition, but I don't remember that much. [editline]18th January 2012[/editline] The current demo uses around 60MB of dedicated VRAM. GPU usage is around 25%. I should be fine at the moment, but it may cause problems with more complex scenes and more textures. For comparison: Minecraft uses around 350MB with a smaller, much more complex world. GPU usage varies between 30 and 50%.[/QUOTE] If you really want to do instancing, I'm pretty sure you'll need to look up buffer textures. Good luck. They were a real bitch to get working. For some reason it didn't work when I tried to send in data as ints. Only floats.
I got the texture array working [I]almost[/I] first time (I was casting the pixel data to a UInt16 instead of UInt32 so the red and green components were clipped). Here's what it looks like so far, although I'm not quite happy with the colours: [img]http://i.imgur.com/HbKj3.png[/img] I reasoned that people were eventually going to work out that it's cube based anyway, so why not take that style and run with it. I'll get it working on nVidia cards now. Also, still no internet. [editline]18th January 2012[/editline] [QUOTE=Tamschi;34273721]The current demo uses around 60MB of dedicated VRAM. GPU usage is around 25%. I should be fine at the moment, but it may cause problems with more complex scenes and more textures. For comparison: Minecraft uses around 350MB with a smaller, much more complex world. GPU usage varies between 30 and 50%.[/QUOTE] I guess Minecraft is sending 3 floats of light colour data (unless he's using one float for brightness and tinting lower values blue or something). Related to that, are we going to do lighting, and if we are, what technique shall we use? [editline]18th January 2012[/editline] Also we have a LOD system when the world is generating, I think Minecraft uses the same detail all the way to the edge of the loaded world.
Nvidia is stricter about the specification than ATI. [quote]0(13) : error C7531: global function texture2DArray requires "#extension GL_EXT_gpu_shader4 : enable" before use 0(13) : error C0000: ... or #extension GL_EXT_texture_array : enable [/quote] Does this help?
It looks good, but I disagree that you should stick to cubes. Tell me, how would prospecting rovers work on cubes? Besides, it'll help later to differentiate from Minecraft early on. You don't want people labeling this 'Minecraft in space.'
I wasn't aware of that problem, I was mainly thinking of how nVidia seems to start a new primitive after I send the first attribute, whereas ATI starts a new primitive after I send the last (which makes a bit more sense). It's probably something I've been doing wrong, but it sucks that the two manufacturers handle it differently. [editline]18th January 2012[/editline] [QUOTE=Smashmaster;34274460]It looks good, but I disagree that you should stick to cubes. Tell me, how would prospecting rovers work on cubes? Besides, it'll help later to differentiate from Minecraft early on. You don't want people labeling this 'Minecraft in space.'[/QUOTE] Models and stuff won't be cubes, and geometry will eventually (hopefully) have sloped tiles to smooth terrain. I imagined models to be quite low poly but a bit cartoonishly styled so the low polygon count doesn't look out of place. I was referring to having gridlines.
Now works on my laptop (nVidia). Surprisingly it doesn't work on the integrated Intel card though. [editline]18th January 2012[/editline] You managed to break my automerge while still posting after me. But yes, terrain will be smoothed a bit in the future. [editline]18th January 2012[/editline] What the hell, I can automerge through your post
Sorry, you need to Log In to post a reply to this thread.