GMOD: Sourcecraft

https://dl.dropboxusercontent.com/u/54867795/SC_banner.png

Introduction:
Originally I wanted to call this g-craft but the name has been taken by several other attempts so I went for the second most original name: Sourcecraft. The plan for this project so far is to create a block world in Garry’s mod with the intention of an open world PvP/PvE experience.

Some details
Sourcecraft is an infinite randomly generated world of 16x16x16 chunks, most of the world generation and storage is handled by a C++ module with a modified simplex being used to generate the heightmap, biomes, caves and tunnels. The chunks are created using the build from triangles function and physics meshes are built around players as they move. This has been a hugely fun project to work on, especially with a friend and I can’t wait to finish and release it to see what everyone makes it.

Features
Infinite Map - Done
Caves - Done
Chunk Handling - Done
Snow Biome - Done
Forest Biome - Done
Desert Biome - Done
Grassland Biome - Done
Ocean Biome / Water - Not yet started
Lava - Not yet started
Mountain Biome - WIP
Lighting - WIP
Inventory - Done
Crafting - WIP
Block Removal / Placement - Done
AI and Mobs - Not yet started
New texture pack - Not yet started
Railcarts / railtracks - Not yet started
Day / Night cycle - Almost Finished
Torches - WIP
Weapons and Tools - WIP

http://cloud-2.steampowered.com/ugc/612789213485784651/A38ABA2EE686F5662E1EAAC09C99F36C681AAF49/

http://cloud-2.steampowered.com/ugc/612789213485784395/6B32D64C09D84B7EAA9501396CC3C63A06CE45BA/

http://cloud-3.steampowered.com/ugc/612789213485783959/CD2AC4808953AEFBCB0A57F77D317DBEA24144A7/

Credits:
Fudsine and RaZoR
Sphax for temporarily using their textures ( We intend to create our own textures, with support for texture packs )

Source Code:
The common question I expect to see is will we release the source for this, the answer is: most likely yes but we wont include any of the gameplay logic only the framework for world generation this way we hope to see a bit more innovation and different gamemodes spawn from this.

FAQ:
How do you overcome the limitations presented by the map size limit
We use what I can only really describe as instancing where we have split the world up into sectors and each chunk is offset from the sector, when you cross into the next sector everything is then calculated from the origin of the new sector you are in. ( Including physics and meshes )

How is the performance?
There is a slight performance hit but it should go completely unnoticed.

How many players can it support?
We are guessing about 16-20 at the moment but we hope to speed up the physics calculations to allow 26-32 players.

Will there be sandbox features?
Unlikely, due to the speed the physics from mesh runs at creating collisions for each object will slow down the server significantly. Hopefully garry will optimise this function but I doubt it.

Is there an issue with entity limits?
No, because the only custom entity being used is one for the player physics and an additional one to render the map.
Notes:
I will add info to this thread based on the questions people ask, I didn’t really know what to talk about :downs:[HR][/HR]

Update:
Hey Guys.

I have a first and final release for you. We didn’t manage to finish this project but there’s easily enough here for anyone with a little bit of know how to get finished. As much as me and RaZoR have enjoyed working on this, we have other commitments, primarily to our game on steam greenlight. Thank you for everyone who has helped test this along the way and to those who donated to keep it going.

I have included some instructions in the folder on how to setup the gamemode with a few tips for anyone who wants to carry this project on. But if you have any further questions I’l try to answer them here.

Without further ado the link: http://www.mediafire.com/download/p7.../minecraft.rar

And for those who are wondering this is our Greenlight project: http://steamcommunity.com/sharedfile.../?id=276596261 if you feel like voting we’d appreciate it. :wink: ( Remember its a WIP be gentle )

Have fun guys!

neat

How do you deal with map constraints?

What’s the framerate like, lower, negligible?

How many players can it support?

Very interesting. I am gonna check it out soon. Really excited!

I get roughly 150-200fps with a view distance of about 13 chunks in each direction (26x26x8 Chunks) with a GTX 560ti, we haven’t tested how many players it supports but we approximate with the physics mesh build times around 16 but we may try to calculate this in the module aswell to see if we can speed it up a bit.

We use what I can only really describe as instancing where we have split the world up into sectors and each chunk is offset from the sector, when you cross into the next sector everything is then calculated from the origin of the new sector you are in.

You should keep the sandbox freedom.
I would love to have all the sandbox features in this gamemode (if its a gamemode ofc)

And what about the Entity limit ?

The only entity on the map apart from the standard ones like players and SWEPS is the one that renders the map.

Are you going to make it possible to change skin of the models to the original mc skin
And not some skinpack or it least make it optional to choose between skins?

What a fresh and original idea.

Fix the textures

to what? it’s not minecraft

not original, but it looks well done… for once

Some of the textures are nice for a change but equally it makes it look bad. Other than that I like how it has the version number in the corner like minecraft used to :slight_smile:

Guys calm the fuck down about the textures, read the first post. Holy shit…
Good job man, I think releasing just the framework is a great idea. Good things can come out of this.

In my opinion the textures look great, don’t know what the fuss is about really…

Oh, sorry, it contains elements exact to Minecraft, but the textures are different, so it mustn’t be Minecraft. Yes, this is how copyrighting works!

This can go places. Love it.

just wondering, why are you using a C++ module to handle that?