Mapmaking thread: procedural terrain generation

Hey! If people were able to create a manual map editor, then can its functions be automated? I want to create a program that will execute my procedural code and create so many maps that each entry into my specific mode is new for the players and that exploration is really important.

What is Starcraft? This is a simulator of a paramilitary expedition to the terrain, in which there is a clash of interests with another force. But the set issued by the Blizzard in the form of several critters walking around the map is not necessarily the gold standard of pvp. No card is balanced like clockwork, you know that. Flamethrowers inflict many times more damage when shooting diagonally, tanks after deployment look in one direction, bunkers and buildings land infantry downward from them, not all ramps can be built up, and even on the most balanced FS map - left spawns put an early expansion 10 seconds later right (I took a daunting amount of measurements to get a feel for the game). And this is not to mention the random chance of missing when shooting at the cliff, and the random spread of the attack speed of units, which makes esports somewhat dishonest.

What do I suggest? Create a program that will add an RPG element to a Starcraft match. Agree, the flow of units even from a dual-base economy is frighteningly cannibalistic and even unaesthetically cruel, not to mention how many units a-click on the enemy from 3-4 bases. For a long time, according to the manuals, like all of us, I got used to the fact that the units do not need to empathize, that you need to concentrate on timings and obey the meta.

Creating a map that modifies the gameplay in broodwar seems impossible, and even silly, given the potential in sc2. But I love sc1 and want to try one curious project. Honestly, there are several of them, for example, I am working on translating good campaigns, like LifeOfAMarine, into a cooperative, perhaps this violates copyright, but I was not going to appropriate them for myself, and interfere with the plot too.

Another idea was what other people are already gradually driving: the opportunity to play as an antagonist in a campaign. Only in my case, this is multiplayer, and a huge number of balancing triggers are needed to make everything fair. For example, the side of the antagonist-zerg is very limited in technology and the maximum allowed limit, which grows with time or enemy forces, for example, you cannot build your overlords, but when the enemy builds a depot, you have an overlord. This is an option. Further, to diversify the gameplay for the antag: instead of direct extraction of resources, the zerg has, for example, a detachment that resurfaces at the base, whose size depends on how many troops the enemy lost, how much time has passed, and for example in what technologies the zerg invested. For example, forbid him to build drones, so that he does not drain the bases too quickly, and minerals are invested in groups of units, as in several ums maps like sandWarriors. This simultaneously limits the antagonist, and at the same time gives him the opportunity to snowball in front of the protagonist.

Further, it can be a 3v3 map, where each player has his own way of gaining this advantage, which helps to expand the limit. For example, an expandor specializes in defensive buildings and siege units, its limit and small ticking of resources may depend on the success in holding / capturing areas on the map, so the Raynor team expander for the blitzkrieg, and the antag expandor mobilizes his resources and technologies to hold the beak points.

Another player, let’s call him an antag-harasser, gains advantage points by killing workers and destroying buildings, but so that he does not feel of little use - come up with a feature for the benefit of direct confrontations. And, of course, combat specialization, unexpectedly characterized by the fact that its advantage points are equal to the average number of other classes. For example, a zerg may not have an expander at all, but if their harasser has achieved good results in battle, then the next attack of the entire zerg will be stronger in the next wave.

This system is needed so that the antagonists do not exploit what they have at the start of almost the entire map and a huge garrison. For example, an allied passive bot will be responsible for the infrastructure on the map, and after a while some of its buildings will gradually come under the control of the player. It’s easy to do, even I’ve done it before. So, under the guise of passing an RPG storyline, we create a cool pvp site where players are encouraged to cooperate instead of competing. There should be a balance in this, for example, in the MOBA genre, the importance of the cooperative is so high that the genre is highly aggressive towards newcomers. To prevent this from happening in Starcraft, you need to grope so that the players have a reserve of mistakes and time to adapt.

For example, in some other games, it has been helpful to give a successful team a handicap by copying a share of their income to the troubled team. But this handicap disappeared over time if the losing team did not win back its initiative. You can consider this as a mode of capturing points - for this you need to hold its tangible time, and this very command advantage must be kept. Therefore, on each map transferred to the cooperative, you can create slightly your own subclasses, special rules and advantages for small victories on the map.

Note that I am in no hurry to interfere with the economic balance, but only want to compensate for the fact that the protagonist needs to recapture the map and break through to the defended goal, and the antagonist must be weak enough so that the protagonist, if desired, can win several resource positions that the protagonist should not drain too much.

That was the idea until that day, but today I realized that these triggers and areas can be associated with procedural map generation, literally spreading unpredictable events on it that the player’s squad may face. Since the map is huge, that is, it makes sense to widely use dropships, and warp the command center to teleport to the operatively deployed beacon, we can consider this as a request for a new one from orbit. I have long dreamed of writing a game that expands the expeditionary setting of Starcraft onto a huge map, but it will be juicy to present some of the ideas to the game itself, motivating the next generation of players to also create something of their own.

I would figure it out myself, but this can be greatly simplified if I use your advice. You can simply express your wishes, what kind of quests you think are appropriate in Starcraft. For example, I want it to be problematic to take and build a bunch of soldiers at once. If I interfere with the economy, then I want to make the depot x20 times more expensive and stronger, the units are also more expensive (and longer to build), and the bases are more compact. This will slow down the growth process, and will make the factor of intelligence and unit savings more important, and their losses - dramatic and memorable.

Of course, I cannot slow down the frequency of the appearance of zerg larvae, but in return you can change other indicators without turning the game into a mod of course. By the way, it would be nice if the developers introduced the ability not to see the map landscape from the lobby, if the host has such a preset or in the map itself. But I have already seen an image somewhere instead of a mini-map, maybe we can handle it that way.

More specifically, I will express the scale of the idea: if you do not interfere with the economic balance, then you can simply create unexpected obstacles and an unexpected landscape on the map. Interference can be a space pirate camp, a confederation laboratory, an independent zerg cluster, an independent expedition / protoss temple.

Now I will blow your imagination: certain achievement points, player interactions and his relationship with the faction can be exported after the game and used in the generation of the next map. For example, the quest completed for the confederation sharply worsened relations with the mercenaries from neutrality to hostile, so much so that their bot can start sending troops at you, and after your destruction you can use the glasses to land new troops somewhere in the location.

It may resemble a Rimworld game in the sense that it is a simulator of adventure and work for a specific faction that can afford to lose a few outposts before losing. Alternatively, if you managed to build a factory, and not lose it until the end of the game, then it can fly into orbit, like other terran flying buildings, not to mention the fact that the depot can be dismantled, and resources are saved. Therefore, calling a ready-made plant can simplify further games, and moving the player’s base on a large map can be designed like this: the building disappears from the map, the sound of the “first space speed” is played, after a conditional minute the building will land at another point on the map, not far from the command center, as a network point for guidance.

Protoss, of course, can warp buildings in the same way, and zerg, for example, dismantle their buildings to a state of biomass, returning resources and (possibly) a drone, which may resemble spineCrawlers.

This is so that it would not be boring to play on a large map, and if necessary, move bases closer to resources, further from enemies. But nothing prevents us from creating procedural quests for team play, for example, from AOE3, we can copy treasures under the guise of neutral abandoned buildings that can be disassembled for resources, destroying by workers, which should be tastier than usual collecting ore, and by storming the base of independent scientists, you can break pens experimental zerg, and a bot will appear on the map, inclined to attack the team of your enemies. Or something in the ground is destabilized, and periodically troops in areas where there is a lot of lava will die if, after a warning, the enemy player does not move away from the lava. Another quest can stabilize this again, if, for example, you build a depot in a certain area and transfer a pair of SCVs to the neutral faction, which in fact will mean the transfer of equipment, and not people of course.

So, you can make fanatical full RPG modes, or you can just add variety to ordinary battles. For example, if in the editor you can dispel the fog of war in certain areas for the player, then you can auto-explore the map for the player around the landing point. Moreover, I know how to set flags around the landing point of the building from orbit, and if any unit is between them at the time of landing, it will die.

It is a little more difficult to work out in triggers so that SCVs can climb into the CC, and the marines can climb into the barracks, and tanks, for example, can be repaired near the factory, while the player is deducted the same cost that would have been deducted for manual repairs. So, I would like the trigger to remember how many SCVs are inside the SS, and so that they come out after a trans-orbital movement.

And now I will tease your imagination again: the procedural generator can take an existing map and make adjustments to it, for example, the player chose to stay on the map but the session had to be closed because the event changing the landscape requires improvement. A specific command in the chat is sent to the host of the game, he enters it into the generator and he uses this cipher to change the landscape in a specific way, if of course it cannot be changed online. For example, a hole in the center of the space platform as a result of shelling with an enhanced nuclear charge, and a large amount of debris in the vicinity that can be collected in the form of minerals. Everyone understands that on the space platform, minerals symbolize metal debris and equipment, perhaps asteroid ore?

The most interesting task here is to create interaction between players so that it does not turn into a massacre, where one is often guaranteed to be stronger than the other, and so that there is no opportunity to purposefully spoil the other’s game. Diplomacy is important, since RPGs are designed to save the progress of different players and drop them onto the map, and if they disconnect, the game will write their data into triggers and delete them from the map itself, it remains only to write the code issued to the gamemaster into the program, which will be easy if you come up with a system logging the result, as a last resort, configure the screenshot analyzer to read data and instantly convert it to text.

That is, the program can read the game master’s chat online from the screen and recognize the instructions encoded in the code that issues the chat. This will allow not only to make adjustments to the landscape, but also to throw new players into the lobby to replace those who dropped out.

Here are the simple changes: the player invests gas to excavate the plateau. The generator receives instructions in the next iteration to create a funnel and scatter resources on it, and simply move the displaced units further, or put them on the bottom of this funnel, making sure to create ramps.

To search for valuable rocks, the generator inserts triggers into the map that are triggered in certain areas if an SCV carrying a psi disruptor (rock scanner) passes there, reporting the value of that area. Third parties can observe that the area is being excavated, and after restarting, attack it.

So, the program can allow you to keep the history of the whole sector, remembering the processing statistics of several maps. Moreover, I will surprise you once again: many processes can be taken out of the game and processed by the program, for example, in real time, the progress of the outpost that you left on the moon for excavation is processed in the program memory, and you can send / request something from there, this will affect map generation when your lobby decides to move to the moon.

In a multiplayer game, this is certainly difficult to implement, but as a single mode it would also be fun. But truly insane - in multiplayer. I hope you have already seen maps, where textures of different tilesets are combined at the same time, this means that in a certain sector of the map you can create a miniature that characterizes the monitoring of your outpost, actions in it are synchronized with the program memory, and if an event occurs, for example, there will be a connection with the outpost. lost, and the program will process that a rescue expedition should be sent there.

Depending on how much time has passed, how quickly you managed to react - it depends in what state you will meet the expedition. Perhaps you will arrive in the midst of a battle with the zerg, or it may turn out that they had to change their place and need to be found somewhere on a large map, perhaps they will be captured by local authorities or they will rebel against you, but you can still seize equipment and resources from them …

In addition to ideas, I would like advice from you on how to implement this easier. Mostly I’m not clear on how to get started creating my own map editor. I’ll try to get in touch with the scmdraft developers, but the forum help is unpredictably valuable. You can write to me at denlazval @ gmail com, but most reliably in discord Господин Офицер (#3771)

It will be easiest to work with those who speak Russian, but people from our cultural sector are rarely interested in such things. The choice is small, I usually work myself, but such projects are almost never completed. I want to see XpeSim working. Next, we can try to create interesting maps for team play. 4v4 is usually very laguchi, besides, they like to rush in a crowd against one, and it’s deadlier than usual. Therefore, I see 3v3 that is optimal for playing Starcraft, but despite this, we have introduced support for 12 players. Observer players could also take part in the game, for example, the game responds to their chat commands, and they affect the game world through them or the program client, which will enter the required code for them.

These 4 players can be a kind of game masters even if they are not allowed into the game by the editor, or indirect control through the same chat is possible, where players subordinate to their faction are obliged to obey in order to receive their reward. Chatting can be part of a role-playing system.

Yes, I play SS13 sometimes, it’s funny. People manage to push role-playing elements anywhere, some like more actions, others want to open up and become politicized. What if you create a whole project, where, based on a role-based chat, it is decided who, for whom and for what reasons will be generated on the map? The generator will create each player his own quests and will adjust if the player takes a completely different path in the process.

The main weakness is the need to restart the map after terrain changes. I will look for more information on this topic, but I want to get your feedback on what you think is the most delusional about this idea. I hope that it is obvious to you that the usual mode in Starcraft is not the gold standard, but only a suggested version of which plot to play out.

You are playing a rapidly developing colony, where it is very close to the neighboring base, and the landscape has the same advantages and disadvantages: chokepoints, plateau, landscape wall around natural, 8 minerals at the base and 1 gas. extraction ~ 50 per minute or 40 in two, gas is three times easier to extract than mineral. We are accustomed to the fact that the Terran can easily fight off early attacks by simply leading the workers in a diamond formation onto the ramp. We are accustomed to the fact that each ZvT is a muta with the transition to lurkers, which drag on until the appearance of the hive. It’s hard to watch TvP confrontations, because everything goes according to the same pattern.

What if the protoss had no psi technology from the start and they needed to power a beacon somewhere on the map from the start? What if all sorts of improvements could not be developed, but only received as a reward for a quest? Can’t build relationships with pirates to get vultures upgrades? Get them by force by destroying the outpost, if it’s worth it.

Perhaps, after the destruction of enemies, samples of technologies appear, let’s mark them with portable Chrysalids. They must be brought to a scientific laboratory using workers, and it will allow adapting some of the technologies already researched by the enemy. It is clear that different Terran factions need to discover already known technologies over and over again, because they are developing a specific way to collect something from resources, and possibly from other resources. Marines of one faction can increase the damage of rifles to compensate for the recoil, that is, fewer bullets fly past the target, and the marines of the other faction are given thorium ammunition. Therefore, the study of already known things can be justified.

The same stim can be made from the flora found on the planet, or it can be the establishment of ties with local factions, here’s the discovery of the stim. More interesting is whether it is possible to take the improvements already known to the player from the player, I cannot give examples because I am already tired of thinking.

The history of the game dev knows countless crazy ideas that will only harm the game, and it, in turn, will quickly bore people. There should be a way not only to immerse a person in a new sensory environment, but also to be able to outplay another person, using the tactics of strata and psycho. As an example, it is appropriate to enter a prolonged war on the map, as in the second mission of the LOAM campaign. Where the player does not spend his resources, but uses what the faction gives him, taking command of the troops. This turns into a card like microUMS Tournaments. Winning several of these skirmishes against, it is very possible that the other player provides some advantages, but not for long snowballing the player.

Another at this time uses more flexible methods, for example, travels around the map and interferes in small battles that are arranged by neutral factions with the aggressors, while there are terminals through which you can try to establish cooperation with the aggressors, becoming enemies to neutrals. The hardest thing is if the client of the game master programmed the appearance of some players not immediately, but when the time comes for a certain event. For example, players are given a few minutes of head start, and then suddenly a rebel ship that hijacked the psi emitter falls from the sky, other forces unfold after them on the map, players are immediately offered to join someone, and most likely take command with new forces in microTournament, or use your own strength to break the rules.

This should be interesting according to the laws of FFA games, where several ordinary players can rally against strong players, and observing this trend, the program can create stories of a long struggle between several players against one such strong one.

1 Like