Jump to content

Would you be interested in a procedurally generated pokemon game?


Recommended Posts

Are you tired of replaying the same pokemon games over and over again? Pokemon Safari is a fangame still under development which is unique because the areas and quests in the game are all procedurally generated, this means that you'll never run out of new areas to explore. It will feature all existing official pokemon, game mechanics such as breeding and battling based on those used by the official games, shiny pokemon at their normal 1/8192 encounter rate, online battling/trading, and many other features.

A lot of features are still under consideration but not confirmed such as the following:

  • An available "balanced" game mode where all pokemon have similar stats allowing you to train your favorite pokemon without worrying about their normal downfalls.
  • All pokeballs used by the player are either found or crafted with apricorns.
  • Ability to choose between good and evil. (Work with team rocket and help them steal pokemon/sell them or defend against them)
  • A lot of others I can't remember at the moment.

Skip to last few pages if you want to see the most recent information about this game. You can find my original post inside this spoiler:

I've been entertaining the idea of making a procedurally generated pokemon game. You would be able to give a seed when you started the game which would determine how the game generates, if you put in the same seed it would always generate the same world, different seeds would give different worlds(I might make it have a default seed and you would unlock more seeds when you reached certain goals). It would probably be less story driven and more about exploration and finding all the different pokemon. Perhaps I would allow the player to build their own towns and stuff similar to creating secret bases or find outposts in the wilderness with stuff like poke centers. There's no reason I couldn't code in multiplayer stuff as well other than it would take time. This would be coded in java rather than made in a program like RPG maker.

The name I was thinking of was "Pokemon Safari".

I have a lot of programming experience and I've made procedurally generated games before so I could do it but it would take a lot of time to do by myself.

Here's a few screenshots of the world map for a procedurally generated game I made a couple years ago:

Overworld:

XikClZ6.png

Map of a procedurally generated Large Cave

pecoqSH.png

In game(not world map)

7R5tIDt.png

I made all the sprites for this game so it took a lot longer than it would take me to make something where I already have the sprites like pokemon. I like writing the code a lot more than spriting. For a pokemon game I would most likely make it generate more like traditional pokemon games where you go from area to area rather than any direction you want. Each area would have a few pokemon you could find in it with some rarer than others. Obviously legendaries would be generated in specific area types and only once. (Like only one groudon which spawns in the depths of a volcano). If I got multiplayer working I'd probably make it so you could only find 1 or 2 different random legendaries on each playthrough to encourage trading other players.

Edited by KingCoin
  • Upvote 5
Link to comment
Share on other sites

  • Global Mods

Sounds like a really interesting concept. would there be any sort of story or would it just be wandering around catching and battling? Story is pretty important for pokemon games usually, but there's always a bit of a thrill when you know what you're finding is essentially random and others haven't just walked the same path before you. I would like to think there would be towns generated too, with a chance of gyms in them? because of the open nature of the world, the gyms could either be scaled to the player (so they can fight them the moment they get there) or have them have an independent level, so that if a player finds a gym that's too tough for them, they can adventure around some more, train up, fight some weaker gyms, and come back when they are strong. this could also apply to dangerous areas/areas with legendaries maybe? just spitballing ideas here.

Link to comment
Share on other sites

Sounds like a really interesting concept. would there be any sort of story or would it just be wandering around catching and battling? Story is pretty important for pokemon games usually, but there's always a bit of a thrill when you know what you're finding is essentially random and others haven't just walked the same path before you. I would like to think there would be towns generated too, with a chance of gyms in them? because of the open nature of the world, the gyms could either be scaled to the player (so they can fight them the moment they get there) or have them have an independent level, so that if a player finds a gym that's too tough for them, they can adventure around some more, train up, fight some weaker gyms, and come back when they are strong. this could also apply to dangerous areas/areas with legendaries maybe? just spitballing ideas here.

I haven't had time to think about the story for it yet. I'd probably make it generate the starting area first, then generate each zone after that zone one at a time, every time it generated a zone maybe add 3 or 4 to the level of pokemon in the area.

Link to comment
Share on other sites

I wrote some code to generate possible layouts for the world (how the areas in the game connect). The area you start in is represented by a green square, the final area is represented by a red square, every area is represented by a square. Here's a few screenshots of different randomly generated world layouts:

5RwPwRb.png

390g1u2.png

W1gCORy.png

KrDQK5B.png

6VNXs5N.png

This code could easily change. One other idea I had for layout was having the player spawn in a central town and make it so the further from that town you go, the higher level pokemon you encounter. It would generate areas all around the starting town branching out from it in all directions.

Edited by KingCoin
Link to comment
Share on other sites

but don't make it too linear, like you have on the posts above...

have it have some branches and stuff

I can do that. The question is how do I determine the level of wild pokemon in each area though. If an area has for example, a level 21 zone leading to it and it branches off into 2 other zones. What level should the two other zones be? Should one be like lvl 24 and one be like lvl 40 or should they both be lvl 24ish?

Also, if I make the zones branch out like you suggested. Wouldn't the player have to backtrack a bit through the zones to get to the next area when they hit a dead end? Perhaps the best solution would be to give the player early access to the Fly HM.

Edited by KingCoin
Link to comment
Share on other sites

I've improved the world layout quite a bit. I'll post newer screenshots when I finish getting area levels working properly. I'd like to make it so the first area is around level 4 and the highest level areas are like level 60. I almost have it working now but I need to work out a couple issues.

Link to comment
Share on other sites

  • Global Mods

One other idea I had for layout was having the player spawn in a central town and make it so the further from that town you go, the higher level pokemon you encounter. It would generate areas all around the starting town branching out from it in all directions.

This sounds like a better Idea IMO. a more open word where you can just choose a direction and explore. Levels increasing as you get further away sounds like a good idea, but some variation would be cool it might be fun to find a high level area, and have to turn back and come back later.

Link to comment
Share on other sites

This sounds like a better Idea IMO. a more open word where you can just choose a direction and explore. Levels increasing as you get further away sounds like a good idea, but some variation would be cool it might be fun to find a high level area, and have to turn back and come back later.

I think it would be cool to have it so you can find an area that's too powerful for you and have to come back. The only issue is: what stops you from catching a high level pokemon there and being able to skip half the game by using your level 54 onix you caught when your team was level 20. Edited by KingCoin
Link to comment
Share on other sites

Here's a few screenshots of world layouts using my new method for generating them. The light grey square is the starting town, light brown squares are towns(or could be something else like small camps/outposts with basic things like poke centers and marts), darker brown squares are routes. The numbers on the squares represent the average level of the pokemon that would be found in that area. Keep in mind this is all subject to change. This part of making the game is probably the easiest part there is to make/modify.

77gPC2H.png

Q2rDxmk.png

JOR80w9.png

Link to comment
Share on other sites

  • Global Mods

I think it would be cool to have it so you can find an area that's too powerful for you and have to come back. The only issue is: what stops you from catching a high level pokemon there and being able to skip half the game by using your level 54 onix you caught when your team was level 20.

well you could take a leaf out of reborns books and have level caps, maybe based on the strength of the strongest gym you've beaten, rather than the amount of gyms. or, just change the catching formula so that difficulty to catch starts to rapidly increase as the pokemon gets stronger than your own.

With the map, is it possible to have the areas generate more interconnectedly? that way it feels more open-world than linear-branching.

Link to comment
Share on other sites

well you could take a leaf out of reborns books and have level caps, maybe based on the strength of the strongest gym you've beaten, rather than the amount of gyms. or, just change the catching formula so that difficulty to catch starts to rapidly increase as the pokemon gets stronger than your own.

With the map, is it possible to have the areas generate more interconnectedly? that way it feels more open-world than linear-branching.

I could implement level caps or change the catching mechanics like you said. I'm not sure if that's an ideal solution though. Changing game mechanics from the official games seems like a controversial subject among different players so I'd like to avoid it as much as possible. One change I'd like to implement is I might make it so you can both find pokemon in the grass and sometimes find them wandering around in the world. It's just an idea I had but I think it would be cool if pokemon could spawn at the edge of grass/water rarely and walk around a bit, if you interacted with them you'd enter a battle with them, after a while they'd walk back into the grass/water and disappear.

There are a couple options I thought of for making it more interconnected.

1. I can make each branch shorter. Instead of having areas where you go linearly through for 5 areas in a row without it branching off it would be more like 1 or 2 areas before each branch.

2. I could make it so a percentage of nearby areas connect to each other but have a ledge or HM requirement so you can only go from the higher level area to the lower level ones through these connections and not the other way around.

Which of those is better or would a mix be better? Also, I couldn't connect any areas that weren't adjacent to each other. I could but the map wouldn't make sense if I did.

In the mean time, I've made it have a 50% chance to connect adjacent areas that are within 3 levels of each other and shortened the branch length. This is how it looks now.

ZFN3Xth.png

wqE8YsV.png

Another thing, it currently is set to keep generating more branches of 1 to 4 areas until it generates one with an area that has an average level greater than 50. As a result it's generating a huge amount of areas compared to traditional games. I'm not sure if that's a bad thing or a good thing. I could make it so each level generates higher level relative to nearby areas than it currently does if I wanted to make it so there were less areas overall. I don't think I should have too many areas because there's only so many pokemon and I'd like each zone to have like 5-10 different pokemon in it without too many repeats between zones. It's currently set to generate new areas within 2-4 levels higher than the area they connect to.

Edited by KingCoin
Link to comment
Share on other sites

  • Global Mods

I think that map in the screenshot looks pretty good! (maybe the towns are a little frequent, depending on how big the areas are?) also wouldn't it make sense to have HM's bar the way into areas with higher level/rarer pokemon, rather than the other way round? Edit: nvm that's what you meant (right?) but it would be nice to have fairly unrestricted traveling. (except for of course not being able to progress easily through harder areas because you get defeated easily, which if there are trainers generated too, could also be part of a way to discourage roaming around areas that are too tough for you)

Wandering overworld pokemon sounds like a cool idea that would add more life into the world, as long as there weren't too many that it felt cluttered.

on the subject of changing game mechanics from the original games; in my opinion the idea of the game itself diverges somewhat from the traditional formula already, so minor mechanical changes are fine. as long as the gameplay still feels like a pokemon game (which it definitely should with just levelcap/catchrate changes) that's fine by me for the sake of balance. I dunno what other people think though.

Edited by DreamblitzX
Link to comment
Share on other sites

I think that map in the screenshot looks pretty good! (maybe the towns are a little frequent, depending on how big the areas are?) also wouldn't it make sense to have HM's bar the way into areas with higher level/rarer pokemon, rather than the other way round? Edit: nvm that's what you meant (right?) but it would be nice to have fairly unrestricted traveling. (except for of course not being able to progress easily through harder areas because you get defeated easily, which if there are trainers generated too, could also be part of a way to discourage roaming around areas that are too tough for you)

Wandering overworld pokemon sounds like a cool idea that would add more life into the world, as long as there weren't too many that it felt cluttered.

on the subject of changing game mechanics from the original games; in my opinion the idea of the game itself diverges somewhat from the traditional formula already, so minor mechanical changes are fine. as long as the gameplay still feels like a pokemon game (which it definitely should with just levelcap/catchrate changes) that's fine by me for the sake of balance. I dunno what other people think though.

I can easily make towns less frequent. Currently an area has a 33% chance to be generated as a town with the restriction that it can't generate as a town if there's already an adjacent town. What percentage of areas do you think should be towns? The areas are currently set to default to 100x100 tiles however they aren't being generated as anything other than a giant grid of grass tiles yet so that could easily change. As far as what I meant about the HM's, I meant I could make it so a lvl 10 area might be connected to a level 40 area but you'd need strength or surf to get between them.

The wandering overworld pokemon wouldn't be very common, there would probably only be one or two in an area at any one time.

I really like the idea of using a trainer as a way to prevent low level people being able to catch high level pokemon in a high level area they find. I could just put a trainer with pokemon high level like the area at the entrance to the area such that you can't get into the area without fighting them.

Link to comment
Share on other sites

well the problem with having a trainer to prevent low level people from being able to catch low level pokemon is that the trainer could be a death trap.

i mean what if you are just exploring at lvl 40 and find a lvl 50 pokemon, you would know its time to get the fuck off.

but if you are exploring at that level and find a trainer with even higher level pokemon, it would be too late since you can't run from them and that could be a game over

Link to comment
Share on other sites

well the problem with having a trainer to prevent low level people from being able to catch low level pokemon is that the trainer could be a death trap.

i mean what if you are just exploring at lvl 40 and find a lvl 50 pokemon, you would know its time to get the fuck off.

but if you are exploring at that level and find a trainer with even higher level pokemon, it would be too late since you can't run from them and that could be a game over

I could just have it auto-save before the trainer so you could load afterwords.

I've started to write some of the code for generating the individual areas in the game bit this part of the process will take a lot of time to perfect.

Link to comment
Share on other sites

  • Global Mods

well the problem with having a trainer to prevent low level people from being able to catch low level pokemon is that the trainer could be a death trap.

i mean what if you are just exploring at lvl 40 and find a lvl 50 pokemon, you would know its time to get the fuck off.

but if you are exploring at that level and find a trainer with even higher level pokemon, it would be too late since you can't run from them and that could be a game over

this is a very valid point tbh. maybe when you enter an area, a box appears in the corner (like area names in the normal games) that has the area level, then it's their fault if they progress. the trainers don't have to be at the start of every area guaranteed though, that would feel too unnatural. but with a few scattered around, it would ideally be hard to really explore an area without fighting the trainers

Link to comment
Share on other sites

this is a very valid point tbh. maybe when you enter an area, a box appears in the corner (like area names in the normal games) that has the area level, then it's their fault if they progress. the trainers don't have to be at the start of every area guaranteed though, that would feel too unnatural. but with a few scattered around, it would ideally be hard to really explore an area without fighting the trainers

Yeah, I'll probably do something like that or make it ask you to confirm entering any zone more than 10 levels higher than your highest level pokemon or something like that. There's a lot of things to work on so this probably won't get coded for a long time. I still need to code all of the game mechanics, all the pokemon, animations, etc. At the moment I'm working on code for generating route's which will take some time to perfect because I want them to be interesting and not super repetetive. I should probably get a list started that has all the features I plan to add. I like that you guys are giving me some feedback on the forums here because it gives me a good reference I can look back on when I'm deciding what to do next.

Link to comment
Share on other sites

I had an idea for how to generate the routes which involved the following steps:

1. Generate exit positions in each area edges at random positions corresponding to the layout of the areas on the world map.

2. Find all paths between the exits that are shorter than a certain length.

3. Pick a random path from the list of paths.

4. Set any tiles that are greater than X distance from the path to be non-passable tile types like trees.

5. Add grass, ledges, water, etc to the path.

I've run into a problem though where finding all paths in a map uses more memory(RAM) than is normally allocated to java which causes the game to crash while generating these areas. I haven't thought of a solution for this yet but I'm working on it.

Link to comment
Share on other sites

I saw that in one of your newer maps, it is possible for the player to go from lv 39 to lv 44 by going through a town, as shown here http://prntscr.com/c1bp0b

If you do continue in this fashion, I would suggest a blocking access to the town from the lower of the connecting nodes so that the player wouldn't be able to do this. That means the town would be the reward for travelling through the lv 44 region rather than the lv 39 one.

Link to comment
Share on other sites

I've written the code to line up cliff tiles automatically and some basic code to connect zone exits. Obviously this code could use some improvement but the basics are there. Here's a few randomly generated routes with my current code.

ZCcccca.png

sboAiXd.png

Edited by KingCoin
Link to comment
Share on other sites

Here's a few routes generated with my latest code. There are some texture issues which still need to be resolved but I've made good progress. I forgot to mention this in my previous post but the red squares represent where area exits/entrances will be spawned.

2oPovLd.png

hnNUNDQ.png

nN7Fq9K.png

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...