CraftCraft is a co-op mining, construction, and exploration map with mostly defensive combat. Its development is still in progress, but there's already a great deal to show you.
Features
Procedurally generated, epic-sized map with a minable object on nearly every tile
Co-op for 1-4 players against computer controlled, randomly spawning enemies
Action-packed gameplay for one to two hours with always something useful to do for everyone
One controllable worker per player, with the ability to mount vehicles: Goliath for agile combat, Science Vessel for support and exploration, and Thor for total destruction
Power grid system to make base management interesting
Resource management system with three functionally distinct resources
All buildings and resources with shared control between all players, giving high value for teamwork
Randomly placed objects around the map to make mining more than just grinding of rocks
Various interesting researches to enable powerful, infinite-range abilities for the worker
Primary objective to activate three xel'naga vaults scattered across the map by using the power system
An older video (followed up by an older post, skip to the last couple of pages for up-to-date news):
What's seen on the video is a small portion of the entire map. I have plans for a lot of content, but implementing it all will take time. The main idea is to explore the map and uncover new technology from protoss relics and terran wreckages while the enemy forces keep getting more and more devious. The ultimate goal is to find the reason for the zerg presence, and deal with it. I can't say more without spoiling the story.
The larger areas the players start to control on the map, the more difficult it will be to maintain the base against the enemies. Gaining access to new technology will help with this. By researching protoss relics, the players will eventually be able to build a teleportation system. Destroying zerg structures will provide the players with organic researches, and allow them to upgrade structures with regenerative materials. Coming across uranium will be useful once nuclear reactor research is complete...
The entire map is procedurally generated, but for now it's just noise in the rock types. Later on, the locations of different research enabler objects will also be randomized, and hopefully I can come up with other interactive world objects as well.
CraftCraft is about an epic team effort where everyone will have something useful to do all the time, be it building or managing the base, mining for resources or exploring, or using battle tech to attack or defend your base. However, the map might be difficult to play in public games, because all the resources and buildings are shared among the players. It will be easy to ruin the game for everyone, and I'm only aiming to prevent it being easy to do so by accident. To be safe, play it with people you trust to have fun with.
I'd very much appreciate your feedback, and especially any ideas on how to make CraftCraft even more interesting and entertaining than it already is.
@A1win: Go I like the idea of a long game where players share control over the same base/army. The idea of additional resources such as uranium is awesome too. The more upgrades/research and units to be unlocked the better. I don't think you're over your head, it can take time but its totally possible.
I see more than potential, if the map continues the way it's going, this'll be really cool, not to mension, fun! The only thing is, I'm a slow player, could it be possible to input an easy mode where enemies are weaker and sent in less numbers? That'd be nice. :D Hardcore players would simply just build really far away...but easy is a bit hard to be...easy...
Perhaps I can find underground caves where I can gather all resources slowly for a long time? :O
Nice map! Can't wait for it to reach NA when it's finished!
In any case, Considering the black friday sale, Which fortunately does not end before saturday (when I actually get back to *civilization*, and am actually able to buy the several copies of starcraft for half price, one of which will be an EU copy, I imagine I will have to find something else to complain about, XD.
Anyway, For some more serious comments.
Looks like a really good concept already. You have to worry about logistics, as well as having the facilities to process what you mine. Am I correct in thinking each player gets an SCV, because otherwise I do not see any way it would work.
Having the buildings process/generate resources over time with storage, with the SCV having a large (but limited) inventory is clever, as it makes most of the work be done without player intervention (you only have to take the processed Vespene to the CC, rather than basically sit there while it extracts, apparently with the SCV manually extracting the gas, or something in melee games, But rather just taking it back once the refinery actually refines it.
Lets see, Power system is interesting, Although I am not sure about how the blackout feature works. It appears to disable all power consuming structures if power consumption exceeds production. I would expect it to either slow down the rate of the processing buildings or somthing similar. If the blackout system is kept, I think requiring an SCV to be close to a building to toggle it, might be a good idea, although I cant think of how to word my explanation as to why.
How does the vespene get to the Turrets, and Do they use power or vespene, or both? it is hard to tell, and since they have that alternate cable type, I imagine that might be a vespene pipe, except it does not connect to the command station.
The protoss tech addition you mentioned for later would be interesting. I imagine things like, Pylons, which could work as a power teleporter, A global version of the relay towers, as well as photon cannons (use energy only, ranged, as defense, although energy only might be how the flamer turrets work already, As I said above) and maybe shield addons for structures. (shield generator building that applies a shield capacity aura, and uses an ability to automatically recharge other building's shields via transferring it's own, which ofc uses power to regenerate)
This mod makes me think of Minecraft, and Lego Rockraiders.
Anything that consumes resources takes it directly from the common resource pool. I had it previously so that the players had to manually fill the turrets and power generators with vespene, but that turned out to be extremely boring and annoying. Power generator consumes vespene when it generates power, and that consumption scales down if the full potential of the generator is not in use.
The power cable connected to the turrets is just an alternate graphic for the cable, because the default one would look bad. The turrets don't need power while idle, but they need to be connected to an active grid to unburrow. They require a small amount of power when they fire and for ten seconds afterwards (to cool down), and they consume a bit of vespene on each shot. The black out system is not very realistic, but it is required for the gameplay. If everything just slowed down instead of shutting down completey, turrets would still be able to fire at enemies even while underpowered, which is not what I want.
And yes, each player gets one SCV, and can only control one movable unit (the SCV or a mountable vehicle) at a time during the entire game. This is a technical limitation because of the amount of minable rocks. The rocks are spawned around the players and unspawned when the players move away, so that there aren't too many units (which the rocks are) on the map simultaneously. This also means that areas the players can't see must be hidden in black mask, even around the buildings, because otherwise the minable rocks would seem to appear out of thin air.
I'll worry about difficulty levels later on, since the map will already be very difficult to balance for the different numbers of players. I'll try not to make the initial versions too difficult, though. On the video it seems quite hectic at times, but that's just because I hadn't had a chance to test the balance after making some changes.
It is co-op for 1-8 players, but I'm not sure it should be called "survival" since it's about progression as well, not just defending in one place. Players respawn when they die as long as there's at least one Command Center up. If all structures die, or if all players die and there are no Command Centers, the players lose.
When a player dies, his cargo is dropped on the ground as a Discarded Cargo item that can be recovered by any player. The item disappears after a couple of minutes. The dead player loses all upgrades he has, but can easily just craft them back after respawning. The upgrades don't cost a lot to craft, but the tech to get those upgrades takes time and resources.
To scale the game for different numbers of players, movement speed, mining speed, attack speed, and cargo capacity of the SCVs changes depending on the number of players. Enemy spawn rate also varies slightly. I'll also need to scale the Goliaths and other mountable vehicles.
I added a close-up screenshot of the power cables to the first post.
In case anyone is interested in the technical details on how the minable tiles work:
Spawning multiple units at the same time can be very heavy for performance. I've spent a lot of time optimizing this and it now works very smoothly. When a player moves from one tile to another, a function is called that despawns all rock units that are now far enough from the player, and spawns new rock units in the direction where the player is moving to. This means despawning and spawning about 17-34 units at a time (depending on whether the player moved diagonally or not). Additionally, since a player can't move across a tile in less than 0.5 seconds, I have spread the tile spawning so that on one script engine frame (0.0625 seconds) it only spawns and despawns tiles for one player, and because the player limit is 8, all players are handled within 0.5 seconds. This means that at most 34 units are despawned and at most 34 units are spawned during one frame, causing no performance issues.
It would be possible to have more than 8 players (or player units), and just handle rock spawning for more than one player per server frame, but that'd then cause issues with the number of simultaneously existing units on the map. To not have too many units in the map with 8 players already, I have solved this by only spawning the minable rocks around the players, and not spawning rocks that are completely surrounded by other rocks. A player can see on a radius of 7, and the rocks are spawned in a 17*17 square around the player (8 tiles to all four directions around the player).
In worst case, this approximates to about 2000 rock units existing at the same time, but the worst case is not very likely to happen because there's almost always some empty space near the players as well. This means a bit more rocks than there can be supply-using units in a normal 4v4 melee game (unless everyone's a zerg and only uses lings), but since the rocks don't move and no pathfinding needs to be computed for them, this amount should be alright for performance.
One last point: how the positions of the rocks are stored in memory. Well... they aren't. I have a function that generates random noise based on a fixed random seed, and I call that function to get the rock type on a specific tile. When a rock is despawned and then spawned again, it is randomized in the same way every time during a game, because the random seed is only randomized when the map is loaded.
When a rock is mined, I save a boolean value "true" in the global data table for those coordinates. When I'm about to spawn a rock, I check whether that value exists in the data table, and if it does, I don't spawn the rock. This means the data table needs to store around 200*200=40000 booleans if the entire map is mined empty. I have tested setting all tiles as mined when the map starts, and this works just fine.
Ok, That is pure evil, Design-wise. Using a fixed random seed to generate the map the same way each time, I mean, that is almost cheating, XD.
A possible issue is that you mentioned a teleporter. If you teleport, You move *slightly* faster than normal, and hence I think you might have some trouble spawning the rocks, unless you use more evil there, such as cutting the player's sight after teleporting, and slowly regaining it, so as to make it load at a reasonable rate.
Minecraft, for example, also uses fixed random seeds to generate its maps. Procedural generation has been used since the early days of computer game development.
Don't worry about the teleportation, it should be simple enough to just give it a small delay during which the environment can be spawned.
I'm currently working on enemy base system and tying it up with the enemy attack wave system.
The idea is that each attack wave has a (slightly randomized) number of enemies which increases over time, and additionally each enemy base gives a small bonus to that number, which also increases over time for each active base. The closest enemy bases to the players are active early in the game, and the more time elapses, the more bases become active and start increasing the number of enemies to attack. When the players destroy an enemy base, it stops adding that bonus to the number of enemies in the attack waves. This way destroying the bases is beneficial, but isn't absolutely necessary either, since it only helps by a small factor.
Destroying the bases has other benefits too, however, possibly allowing the players to harvest "zerg biomass" or some similar resource which can then be used to create regenerative materials, for example (any ideas for zerg tech, by the way?). To destroy the bases, the players need to build battle tech, since it's not possible to build turrets near the zerg structures as they are surrounded by creep.
Each enemy base also has defensive waves of units, which spawn when players are standing on creep near the base. The defensive waves have a cooldown on each enemy base. Enemy units move faster on creep, making it impossible to destroy the bases by using only SCVs.
Enemy bases aren't visible on the map (at least not at first), but since they are surrounded by a large area of creep, they are rather easy to find.
This looks good!! kinda reminds me of a map I wanted to make...
When I was a kid i played this Lego Game Called Rock Raiders or something like that.. I really enjoyed it. I was going to try to make something like that.
Greetings!
CraftCraft is a co-op mining, construction, and exploration map with mostly defensive combat. Its development is still in progress, but there's already a great deal to show you.
Features
Follow the development process on my blog at a1win.blogspot.com
Update on January 24, 2012:
An older video (followed up by an older post, skip to the last couple of pages for up-to-date news):
What's seen on the video is a small portion of the entire map. I have plans for a lot of content, but implementing it all will take time. The main idea is to explore the map and uncover new technology from protoss relics and terran wreckages while the enemy forces keep getting more and more devious. The ultimate goal is to find the reason for the zerg presence, and deal with it. I can't say more without spoiling the story.
The larger areas the players start to control on the map, the more difficult it will be to maintain the base against the enemies. Gaining access to new technology will help with this. By researching protoss relics, the players will eventually be able to build a teleportation system. Destroying zerg structures will provide the players with organic researches, and allow them to upgrade structures with regenerative materials. Coming across uranium will be useful once nuclear reactor research is complete...
The entire map is procedurally generated, but for now it's just noise in the rock types. Later on, the locations of different research enabler objects will also be randomized, and hopefully I can come up with other interactive world objects as well.
CraftCraft is about an epic team effort where everyone will have something useful to do all the time, be it building or managing the base, mining for resources or exploring, or using battle tech to attack or defend your base. However, the map might be difficult to play in public games, because all the resources and buildings are shared among the players. It will be easy to ruin the game for everyone, and I'm only aiming to prevent it being easy to do so by accident. To be safe, play it with people you trust to have fun with.
I'd very much appreciate your feedback, and especially any ideas on how to make CraftCraft even more interesting and entertaining than it already is.
@A1win: Go I like the idea of a long game where players share control over the same base/army. The idea of additional resources such as uranium is awesome too. The more upgrades/research and units to be unlocked the better. I don't think you're over your head, it can take time but its totally possible.
this looks sweet
NOOOOOOOOOO
Maker is in EU, So most likely It will be a long time before any possiblity of my testing/playing this map Is possible
I mean, So much Epic.... And Considering it is clearly in an early stage.....
I will try to get the early releases on NA as well when the time comes. I can poke some people around... But I can't yet say when that will be.
I see more than potential, if the map continues the way it's going, this'll be really cool, not to mension, fun! The only thing is, I'm a slow player, could it be possible to input an easy mode where enemies are weaker and sent in less numbers? That'd be nice. :D Hardcore players would simply just build really far away...but easy is a bit hard to be...easy...
Perhaps I can find underground caves where I can gather all resources slowly for a long time? :O
Nice map! Can't wait for it to reach NA when it's finished!
@A1win: Go
Well, That makes me feel better.
In any case, Considering the black friday sale, Which fortunately does not end before saturday (when I actually get back to *civilization*, and am actually able to buy the several copies of starcraft for half price, one of which will be an EU copy, I imagine I will have to find something else to complain about, XD.
Anyway, For some more serious comments.
Looks like a really good concept already. You have to worry about logistics, as well as having the facilities to process what you mine. Am I correct in thinking each player gets an SCV, because otherwise I do not see any way it would work.
Having the buildings process/generate resources over time with storage, with the SCV having a large (but limited) inventory is clever, as it makes most of the work be done without player intervention (you only have to take the processed Vespene to the CC, rather than basically sit there while it extracts, apparently with the SCV manually extracting the gas, or something in melee games, But rather just taking it back once the refinery actually refines it.
Lets see, Power system is interesting, Although I am not sure about how the blackout feature works. It appears to disable all power consuming structures if power consumption exceeds production. I would expect it to either slow down the rate of the processing buildings or somthing similar. If the blackout system is kept, I think requiring an SCV to be close to a building to toggle it, might be a good idea, although I cant think of how to word my explanation as to why.
How does the vespene get to the Turrets, and Do they use power or vespene, or both? it is hard to tell, and since they have that alternate cable type, I imagine that might be a vespene pipe, except it does not connect to the command station.
The protoss tech addition you mentioned for later would be interesting. I imagine things like, Pylons, which could work as a power teleporter, A global version of the relay towers, as well as photon cannons (use energy only, ranged, as defense, although energy only might be how the flamer turrets work already, As I said above) and maybe shield addons for structures. (shield generator building that applies a shield capacity aura, and uses an ability to automatically recharge other building's shields via transferring it's own, which ofc uses power to regenerate)
This mod makes me think of Minecraft, and Lego Rockraiders.
Anything that consumes resources takes it directly from the common resource pool. I had it previously so that the players had to manually fill the turrets and power generators with vespene, but that turned out to be extremely boring and annoying. Power generator consumes vespene when it generates power, and that consumption scales down if the full potential of the generator is not in use.
The power cable connected to the turrets is just an alternate graphic for the cable, because the default one would look bad. The turrets don't need power while idle, but they need to be connected to an active grid to unburrow. They require a small amount of power when they fire and for ten seconds afterwards (to cool down), and they consume a bit of vespene on each shot. The black out system is not very realistic, but it is required for the gameplay. If everything just slowed down instead of shutting down completey, turrets would still be able to fire at enemies even while underpowered, which is not what I want.
And yes, each player gets one SCV, and can only control one movable unit (the SCV or a mountable vehicle) at a time during the entire game. This is a technical limitation because of the amount of minable rocks. The rocks are spawned around the players and unspawned when the players move away, so that there aren't too many units (which the rocks are) on the map simultaneously. This also means that areas the players can't see must be hidden in black mask, even around the buildings, because otherwise the minable rocks would seem to appear out of thin air.
I'll worry about difficulty levels later on, since the map will already be very difficult to balance for the different numbers of players. I'll try not to make the initial versions too difficult, though. On the video it seems quite hectic at times, but that's just because I hadn't had a chance to test the balance after making some changes.
So is this intended to be like a Survivor type map?
Player co-op vs the oncoming Swarm.
It is co-op for 1-8 players, but I'm not sure it should be called "survival" since it's about progression as well, not just defending in one place. Players respawn when they die as long as there's at least one Command Center up. If all structures die, or if all players die and there are no Command Centers, the players lose.
When a player dies, his cargo is dropped on the ground as a Discarded Cargo item that can be recovered by any player. The item disappears after a couple of minutes. The dead player loses all upgrades he has, but can easily just craft them back after respawning. The upgrades don't cost a lot to craft, but the tech to get those upgrades takes time and resources.
To scale the game for different numbers of players, movement speed, mining speed, attack speed, and cargo capacity of the SCVs changes depending on the number of players. Enemy spawn rate also varies slightly. I'll also need to scale the Goliaths and other mountable vehicles.
@A1win: Go
That answers my questions quite nicely.
I understand the reasoning behind blackouts now, as well as the resource usage mechanics.
Gee, are you serious? Making those power lines float in mid air above the turret would look bad? I suppose I ought to have thought of that, XD
Awesome!
I added a close-up screenshot of the power cables to the first post.
In case anyone is interested in the technical details on how the minable tiles work:
Spawning multiple units at the same time can be very heavy for performance. I've spent a lot of time optimizing this and it now works very smoothly. When a player moves from one tile to another, a function is called that despawns all rock units that are now far enough from the player, and spawns new rock units in the direction where the player is moving to. This means despawning and spawning about 17-34 units at a time (depending on whether the player moved diagonally or not). Additionally, since a player can't move across a tile in less than 0.5 seconds, I have spread the tile spawning so that on one script engine frame (0.0625 seconds) it only spawns and despawns tiles for one player, and because the player limit is 8, all players are handled within 0.5 seconds. This means that at most 34 units are despawned and at most 34 units are spawned during one frame, causing no performance issues.
It would be possible to have more than 8 players (or player units), and just handle rock spawning for more than one player per server frame, but that'd then cause issues with the number of simultaneously existing units on the map. To not have too many units in the map with 8 players already, I have solved this by only spawning the minable rocks around the players, and not spawning rocks that are completely surrounded by other rocks. A player can see on a radius of 7, and the rocks are spawned in a 17*17 square around the player (8 tiles to all four directions around the player).
In worst case, this approximates to about 2000 rock units existing at the same time, but the worst case is not very likely to happen because there's almost always some empty space near the players as well. This means a bit more rocks than there can be supply-using units in a normal 4v4 melee game (unless everyone's a zerg and only uses lings), but since the rocks don't move and no pathfinding needs to be computed for them, this amount should be alright for performance.
One last point: how the positions of the rocks are stored in memory. Well... they aren't. I have a function that generates random noise based on a fixed random seed, and I call that function to get the rock type on a specific tile. When a rock is despawned and then spawned again, it is randomized in the same way every time during a game, because the random seed is only randomized when the map is loaded.
When a rock is mined, I save a boolean value "true" in the global data table for those coordinates. When I'm about to spawn a rock, I check whether that value exists in the data table, and if it does, I don't spawn the rock. This means the data table needs to store around 200*200=40000 booleans if the entire map is mined empty. I have tested setting all tiles as mined when the map starts, and this works just fine.
@A1win: Go
Ok, That is pure evil, Design-wise. Using a fixed random seed to generate the map the same way each time, I mean, that is almost cheating, XD.
A possible issue is that you mentioned a teleporter. If you teleport, You move *slightly* faster than normal, and hence I think you might have some trouble spawning the rocks, unless you use more evil there, such as cutting the player's sight after teleporting, and slowly regaining it, so as to make it load at a reasonable rate.
@Ranakastrasz: Go
Minecraft, for example, also uses fixed random seeds to generate its maps. Procedural generation has been used since the early days of computer game development.
Don't worry about the teleportation, it should be simple enough to just give it a small delay during which the environment can be spawned.
I'm currently working on enemy base system and tying it up with the enemy attack wave system.
The idea is that each attack wave has a (slightly randomized) number of enemies which increases over time, and additionally each enemy base gives a small bonus to that number, which also increases over time for each active base. The closest enemy bases to the players are active early in the game, and the more time elapses, the more bases become active and start increasing the number of enemies to attack. When the players destroy an enemy base, it stops adding that bonus to the number of enemies in the attack waves. This way destroying the bases is beneficial, but isn't absolutely necessary either, since it only helps by a small factor.
Destroying the bases has other benefits too, however, possibly allowing the players to harvest "zerg biomass" or some similar resource which can then be used to create regenerative materials, for example (any ideas for zerg tech, by the way?). To destroy the bases, the players need to build battle tech, since it's not possible to build turrets near the zerg structures as they are surrounded by creep.
Each enemy base also has defensive waves of units, which spawn when players are standing on creep near the base. The defensive waves have a cooldown on each enemy base. Enemy units move faster on creep, making it impossible to destroy the bases by using only SCVs.
Enemy bases aren't visible on the map (at least not at first), but since they are surrounded by a large area of creep, they are rather easy to find.
great... Hhhhh.... and i thought my map's Power grid system was awesome... but after watching this... Hhhhhhhhhhhhh.................. map cancelled.
Looks like an awesome version of Mineralz. Nice one. Reminds me vaguely of Simcity too. Want to see the final product :D
This looks good!! kinda reminds me of a map I wanted to make...
When I was a kid i played this Lego Game Called Rock Raiders or something like that.. I really enjoyed it. I was going to try to make something like that.
- Which someone else also noted... ;)
Keep up the good work!!!
How did you add those cables between buildings? Does it do that dynamically? I've never seen that before!
@Ranakastrasz: Go
He is in the EU?
Snif :,( Whatever, just got access to DIABLO III Beta TODAY!!!!!! Still installing :D