Home » How can I create borders in an open-world game that don’t feel artificial?

How can I create borders in an open-world game that don’t feel artificial?


Just some quick additional suggestions, that sometimes complement what others have already said.

1) water solution: I never understood why killing the player with a shark or something. Just let him/her swim infinitely (like with a proceduraly generated infinite ocean). That alone would closer resemble the idea of how distant it would be in real life to cross an ocean by swimming. The player would just get tired at some point of going forward and then would decide to reload (because going back all over again would be just as tedious).

Of course, if you have modern boats, ships, jet-skis, etc, and the concept of gas as resource, that works well too and then it becomes part of the item number 4 below, since the player can just sail until running out of gas. Then, if he/she can swim, it becomes again a problem of just letting him/her swim forever.

2) scene barrier: it does not have to be mountains. A dense forest, as someone else told here. A canyon with a beautiful view. A part of a city with too many buildings in the way and the only possible streets blocked. A huge fire destroying parts of a city, or a gas leak, or a radiation accident in part of a city that blocks the way. If the city was invaded by aliens, maybe the gigantic spaceship is itself blocking the path to other parts of the city as it crushed when arriving. Or, why not, you can have flying islands like in Zelda Skyward Sword, where the boundary is given by not-falling-to-death.

3) challenging who tries: you can always increase the challenge exponentially as far as the player goes. Imagine an open-world in the country fields. The player crosses farms in the direction of the inner-lands of your world. More and more enemies show up with no power-up, health kits or something in the way. If you make these field camps procedural and increase the challenge, the player will eventually get killed without having the feeling that he/she was cheated by an artificial border. I like this approach because it even creates in the mind of the players the impression that there might be something hidden ahead (of course, you have to take care and don’t abuse on this illusion, to avoid the players becoming mad at you!).

4) lack of resources: if a player has to eat/take medicine/whatever, and/or if vehicles have gas, you don’t need boundaries. Let the player and/or its vehicles die. That is particularly useful in a space game, where creating a non-artificial barrier is quite difficult. In other words, if that suits your gameplay framework, make the open world finite by not being accessible due to being impossible to accumulate resources to go beyond a give distance.

I won’t keep going with a ton of suggestions based on storyline and gameplay. My reasons: first I don’t know which type of game we are talking about. Second: frankly, as nice as it can be to have a story-line or gameplay related solution such as failing missions because some hostage has died when you tried to get out of the borders, I don’t think that is exactly what you meant and, on the contrary, I found those to be usually harmful for immersion. But if you happen to be interested in these types too, let me know and I can drop some ideas that I have either seen or thought.

Also, as a general point, notice that more than once I touched procedural generation. Really, I think procedural generation is your friend here. You don’t need to use it only for having infinite worlds. I always say we should start using it much more often to make the finite open-games more realistic and diverse. Using it for a fake endless border would be a neat use.

Different games have different requirements in how realistic they are to their genre, e.g. FPS games can constrain to a building, whereas RPG games like Rust / DayZ / Skyrim have larger and more open world maps to suit their style.

Some common ones across games (and examples) include:

  • Constrain to an Island and:
    • Ruin the only bridge out (GTA 3, Vice City, Unturned, etc)
    • The ferry only comes sometimes
    • You’re trapped (Dead Island, Just Cause, Crysis)
  • Forest/Open World games with large continents (parent maps):
    • Blocked by trees except for a few areas (Pokemon, Legend of Zelda)
    • Blocked mountains (Skyrim, as you pointed out)
  • Out-of-bounds areas (A higher governing force controls where you can and can’t go, meaning you are killed when exiting):
    • Turrets shoot you down (Borderlands, Batman: Arkham City)
    • You fail the mission (CoD, probably Battlefield too)
  • Objectives unlock continuation (Literal, not the metaphoric idea embodied by gaming):
    • More enemies spawn until you do and you die eventually (CoD: Zombies, Left 4 Dead)
  • You get moved by a higher power:
    • Picked up / teleported back (Imagine AM from Harlan Ellison’s I have no mouth and I must scream (the story, not the game adaption))
  • Don’t have borders, increase map size until your program cannot handle it
    • Walking and discovering increasing size of world (Minecraft and the concept of program failure at a certain distance from the centre of the map).
  • In a city:
    • Barricades / cars block you from moving (Left 4 Dead)
    • Buildings blocking your path (Pretty much every urban level of FPS games)
  • On a cliff / high place:
    • If you traverse past the edge, you fall off and die (A few Borderlands levels)
  • Your character physically cannot handle the outside environment:
    • Other planets & the moon with an artificial environment (WORLD END ECONOMiCA)

I am a bit hesitant to add this option, but it could work.


When seen in 2D (neglect height for a moment) the inside AND the outside of a torus are endless. They simply wrap around on both axes.

Placing your characters on a shape like that could be tricky. You could always go easy on yourself and get a less exact torus.

Wolfram Torus


Now we’re talking 3D objects, how about a plain old sphere? They don’t necessarily have to be as big as Earth. Make them the size of a small moon, like Dactyl, the moon of 243 Ida. I can imagine writing a story for such a setting can be quite the challenge (same goes for the torus).

Mario Galaxy makes use of this by making very small planetoids. If it works for Nintendo there’s probably some merit to the concept.

Related Solutions

Building a multi-level menu for umbraco

First off, no need pass the a parent parameter around. The context will transport this information. Here is the XSL stylesheet that should solve your problem: <!-- update this variable on how deep your menu should be --> <xsl:variable...

How to generate a random string?

My favorite way to do it is by using /dev/urandom together with tr to delete unwanted characters. For instance, to get only digits and letters: tr -dc A-Za-z0-9 </dev/urandom | head -c 13 ; echo '' Alternatively, to include more characters from the OWASP...

How to copy a file from a remote server to a local machine?

The syntax for scp is: If you are on the computer from which you want to send file to a remote computer: scp /file/to/send username@remote:/where/to/put Here the remote can be a FQDN or an IP address. On the other hand if you are on the computer wanting to...

What is the difference between curl and wget?

The main differences are: wget's major strong side compared to curl is its ability to download recursively. wget is command line only. There's no lib or anything, but curl's features are powered by libcurl. curl supports FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP,...

Using ‘sed’ to find and replace [duplicate]

sed is the stream editor, in that you can use | (pipe) to send standard streams (STDIN and STDOUT specifically) through sed and alter them programmatically on the fly, making it a handy tool in the Unix philosophy tradition; but can edit files directly, too,...

How do I loop through only directories in bash?

You can specify a slash at the end to match only directories: for d in */ ; do echo "$d" done If you want to exclude symlinks, use a test to continue the loop if the current entry is a link. You need to remove the trailing slash from the name in order for -L to...

How to clear journalctl

The self maintenance method is to vacuum the logs by size or time. Retain only the past two days: journalctl --vacuum-time=2d Retain only the past 500 MB: journalctl --vacuum-size=500M man journalctl for more information. You don't typically clear the journal...

How can I run a command which will survive terminal close?

One of the following 2 should work: $ nohup redshift & or $ redshift & $ disown See the following for a bit more information on how this works: man nohup help disown Difference between nohup, disown and & (be sure to read the comments too) If your...

Get exit status of process that’s piped to another

bash and zsh have an array variable that holds the exit status of each element (command) of the last pipeline executed by the shell. If you are using bash, the array is called PIPESTATUS (case matters!) and the array indicies start at zero: $ false | true $...

Execute vs Read bit. How do directory permissions in Linux work?

When applying permissions to directories on Linux, the permission bits have different meanings than on regular files. The read bit (r) allows the affected user to list the files within the directory The write bit (w) allows the affected user to create, rename,...

What are the pros and cons of Vim and Emacs? [closed]

I use both, although if I had to choose one, I know which one I would pick. Still, I'll try to make an objective comparison on a few issues. Available everywhere? If you're a professional system administrator who works with Unix systems, or a power user on...

How do I use pushd and popd commands?

pushd, popd, and dirs are shell builtins which allow you manipulate the directory stack. This can be used to change directories but return to the directory from which you came. For example start up with the following directories: $ pwd /home/saml/somedir $ ls...

How to forward X over SSH to run graphics applications remotely?

X11 forwarding needs to be enabled on both the client side and the server side. On the client side, the -X (capital X) option to ssh enables X11 forwarding, and you can make this the default (for all connections or for a specific connection) with ForwardX11 yes...

What does “LC_ALL=C” do?

LC_ALL is the environment variable that overrides all the other localisation settings (except $LANGUAGE under some circumstances). Different aspects of localisations (like the thousand separator or decimal point character, character set, sorting order, month,...

What is a bind mount?

What is a bind mount? A bind mount is an alternate view of a directory tree. Classically, mounting creates a view of a storage device as a directory tree. A bind mount instead takes an existing directory tree and replicates it under a different point. The...

Turn off buffering in pipe

Another way to skin this cat is to use the stdbuf program, which is part of the GNU Coreutils (FreeBSD also has its own one). stdbuf -i0 -o0 -e0 command This turns off buffering completely for input, output and error. For some applications, line buffering may...

Can less retain colored output?

Use: git diff --color=always | less -r --color=always is there to tell git to output color codes even if the output is a pipe (not a tty). And -r is there to tell less to interpret those color codes and other escape sequences. Use -R for ANSI color codes only....

How do I copy a folder keeping owners and permissions intact?

sudo cp -rp /home/my_home /media/backup/my_home From cp manpage: -p same as --preserve=mode,ownership,timestamps --preserve[=ATTR_LIST] preserve the specified attributes (default: mode,ownership,timestamps), if possible additional attributes: context, links,...

Can I zip an entire folder using gzip?

No. Unlike zip, gzip functions as a compression algorithm only. Because of various reasons some of which hearken back to the era of tape drives, Unix uses a program named tar to archive data, which can then be compressed with a compression program like gzip,...