Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length

 
Advanced search

1363163 Posts in 63675 Topics- by 55559 Members - Latest Member: timotai

July 20, 2019, 07:12:39 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsDeveloperTechnical (Moderator: ThemsAllTook)Procedural Content Generation on a MOBA prototype game
Pages: [1]
Print
Author Topic: Procedural Content Generation on a MOBA prototype game  (Read 2014 times)
Canotico
Level 1
*



View Profile
« on: November 05, 2013, 08:31:42 AM »

I Recently delivered my thesis project entitled Procedural Content Generation on a MOBA genre videogame and now it's time to share it with the world!

As the title says, the project involved the creation of a MOBA prototype game that uses Procedural Content Generation (PCG). The 2 major features are a map generated procedurally before starting the game, and a system that modifies the characters attributes according to the player's play style.

NOTE: You need to have a basic knowledge about how a MOBA works (games like Dota 2 and League of Legends) in order to fully understand this work.

For the sake of keeping this post short, I will give a brief explanation on how is the map generated and how the Character Adaptation System works. If you are interested in a more detailed version please visit my blog post.

Map Generation

For the map generation I started defining a set of design rules that would be used for the algorithm that would generate the map. The focus of the map generator lies on generating a map that is balanced for both teams, which guarantees that there won't be unfair advantages regarding the topology.

These rules are mostly related to how the jungle's paths are made and how they allow the players to traverse the map (this is because jungles cover a big % of the map and I wanted to avoid overscoping the project by also bringing into the equation the lanes). The generator looks for a map containing jungles that at least contain these paths:
  • Side lane outer turret -> approx 1/3 of the river
  • approx 1/3 of the river -> center of the mid lane
  • center of the mid lane -> side lane outer turret

Having defined these rules, I implemented a genetic algorithm using the Multi-Objective Evolutive Algorithm approach, which basically consists of using multiple fitness functions to evaluate each candidate. I used a fitness function to evaluate if the paths described before are present in each of the 4 jungles on the map, and another fitness function that determined if the difference of the amount of camps on each side of the map exceeded certain threshold.

The candidate maps are created from scratch, creating all the components of the map so that it's similar to Dota 2's. Since the jungles are the places where the real changes are made on the map, they are generated using a fractal function (using the Accidental Noise Library) to make them as random as possible and then the roads they contain are evaluated using BFS functions.

You can read more about this in Part 2

Character Adaptation System

In a traditional MOBA, characters follow the common RPG character paradigm, which consists of having a character composed by a set of attributes, abilities and a level that defines how strong the character is. The Character Adaptation System changes this paradigm by eliminating the level and making the progression of a character continuous.

The progression of a character is no longer limited to gaining enough experience to reach that level-up threshold. Instead, every action performed by a player during combat affects directly their character's attributes, increasing the character's capacities constantly.

Example: If a player likes to play defensively, it's expected that they will act in this way during combat. They will probably be using a shield a lot or even blocking damage for their allies. The system will interpret these actions and then after leaving combat will give the player attribute bonuses that will let them be more effective playing defensively as the game progresses.

The way this is done is by queuing the actions performed by the player during combat, and then after leaving combat this queue is analyzed to determine the intentions the player had, how effective they were and finally what bonuses should be applied to encourage this kind of play style.

You can read more about this system in Part 3.


If you have any questions regarding anything I said or didn't say please ask away! I'm doing my best to condensate a lot of information and I know it may be confusing because of this Sad.

Anyways, thanks a lot for reading!  Smiley
« Last Edit: November 08, 2013, 08:06:54 AM by Zilok » Logged

InfiniteStateMachine
Level 10
*****



View Profile WWW
« Reply #1 on: November 05, 2013, 09:51:54 AM »

Interesting read. From what you wrote am I correct in assuming you DONT mirror the levels? It's an admirable goal but I think without mirroring you'll always have someone complain about map bias.
Logged

Canotico
Level 1
*



View Profile
« Reply #2 on: November 05, 2013, 11:28:58 AM »

Interesting read. From what you wrote am I correct in assuming you DONT mirror the levels? It's an admirable goal but I think without mirroring you'll always have someone complain about map bias.
Yes, the levels are not mirrored.

And yeah I totally agree, I think that actually it's nearly impossible to make a non-mirrored map be perfectly balanced for both teams, there will be always subtle differences that will prove more useful to one team in very specific situations, even if it's a handcrafted map like Dota's. There are just too many variables involved in calculating the strategic implications of a specific path in the map. But then again, I think that's part of the beauty of the asymmetry, at least for me it makes the game more interesting.
Logged

InfiniteStateMachine
Level 10
*****



View Profile WWW
« Reply #3 on: November 05, 2013, 05:14:55 PM »

I definitely agree there. I love asymmetrical maps. I played in a clan for an old halflife mod with asymmetrical maps and the clan tournament would just have both teams play both sides. I can't remember how we handled ties. I think we added up the total wins across a set of different asymmetrical maps.

Cool to see a genetic algorithm used for world generation.

 
Logged

Pages: [1]
Print
Jump to:  

Theme orange-lt created by panic