1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
  2. To chat with the GameOgre community, you need to have at least 100 posts. Once you have the 100 posts, post at Become A New Ogre
    Dismiss Notice

Otherworld - a game I'm working on

Discussion in 'Online Game Development' started by Tariel, Jul 14, 2016.

Thread Status:
Not open for further replies.
  1. Tariel

    Tariel Big Brute New Ogre

    Messages:
    170
    Likes Received:
    70
    Trophy Points:
    28
    Credit:
    9,829.77
    Here's some info on a browser game I'm currently working on. I originally started on it back in 2012 but I took a long break from it because I felt like I didn't know enough programming. It's in php/mysqli. The working title is Otherworld.

    The premise is a world simulation that starts from the stone age. There are over 100 natural resources that are placed on different areas of the map, which consists of multiple islands and continents. It was originally text-based but now it has evolved partially into tile-based. The map is free roaming and has two levels, local and global. Because storing hundreds of thousands of local maps might take too much memory, I'm counting on the likeliness that the players won't bother to explore each local map because it costs 100 action points per location and every 5 by 5 block shares the same resources. So instead of creating 12.5 million local maps (okay, actually there would be less than half of that because there are no local maps in water), I'm only creating them based on elements of the global map when someone explores a location. I have graphics of each terrain type, a chart of soil types, an altitude map, a water map and an organic matter map. Based on these, it generates a random local map upon request. Having a local map allows clearing away trees to make room for fields and buildings. A local map is 1x1km, divided into 100x100 squares, so one square is 10x10 meters. However in the database, the location of an object can be measured with the accuracy of 1 meter. It's possible for several objects to exist in one square. Currently there is a tile map that has icons for trees, bushes, low plants, swamp and open water, as well as buildings and people. A tree symbol can represent more than one tree and so on. It's mainly a marker that you can't put a field or a building here unless you fell the tree(s) first. Currently movement inside the local map doesn't cost anything but it's slow because you can only move three squares at a time. If I displayed more than 7 by 7 squares, I would need a side-scrolling bar because the tiles are 100x100 pixels to ensure they have enough room for the symbols inside.

    The main focus of the game is on farming and cross-breeding plants found on different regions to create more efficient crops. Most fruit and vegetables found in the wild will be like their ancestors on earth, and will be rather unpleasant to eat, so people will have motivation to improve them through cross-breeding.

    The game is based on action points (AP) and if you have accumulated a lot of action points, you can complete a whole month worth of actions in just a few clicks. One month in game is one day in real life. It should be possible to set up routines so you can do repetitive actions automatically.

    The game will also have NPCs, so locations can have more population than just PCs. NPCs can be hired to do menial tasks that PCs don't want to do. There will be no global money system, and players will need to create their own currencies ingame. If enough PCs accept something as a solid currency, NPCs will also start recognizing it. But if a currency crashes, NPCs will stop respecting it and will start demanding something of more solid value, such as food. At minimum, NPC laborers will expect to be fed and clothed. It will also be possible to enslave them, but they may escape or rebel if the slavers aren't firm enough.

    The game will assume that everybody besides the first people are somebody's children. Most people will appear as adults and will have NPC parents, who give them some starting equipment based on the tech level of the current location. It's also possible for PCs to mate with each other (or with NPCs) and create children that can be taken over by real players. At first I thought it would be good if new players had to start out as a child, but that would lead into a lot of children becoming mindless zombies as newbies are more likely to quit, so now I've started thinking that playing a child should be a privilege that needs to be earned. So only established roleplayers would be allowed to play children.

    There should be a forum where people can present their own ideas of culturally different societies. If the ideas are different enough from existing societies in the game, the group will be allowed to start their own town on an otherwise uninhabited region. It's encouraged to have societies that have different morals and opinions about things such as slavery, to create diversity.

    The combat system will allow people to choose how they react if they log in within 18 hours (real time) of when the attack happened. If they take longer than that, the attack will be automatically resolved. To avoid fights dragging on for days, the rest of the fight will be calculated at that moment according to the preferences of the participants. If one of them has set to flee or surrender if they reach a certain damage level, they will do just that, but if they have chosen to fight until death then unless one person caves in once their pain threshold is exceeded, eventually one of the participants will die. It will be possible to set up training fights that don't aim to kill, and it will also be possible to aim to knock out or disable the opponent without killing them. I chose 18 hours because if someone checks the game before going to sleep, then spends about 8 hours sleeping, 1 hour going to work, 8 hours at work and 1 hour coming back from work, they might still have time to make their choice once they get home. This will remove the forcing need to check the game in the morning or during lunch break. Yet it will be necessary to check the game daily to ensure your character has enough food.

    The game will have different zones based on temperature. Currently it's possible to travel between them unlimited, but I'm planning it so that the people from the tropical zone won't be able to enter the cooler zones, at least not until they develop clothing. The temperate and cool zones will be limited to players who have been around a while, so they will enable an environment where they can avoid newbies if they so wish. The cooler environments will be more challenging and characters will need to wear clothes to avoid hypothermia. They will also need to build shelters and farm for food instead of foraging, because the wild resources will be mainly berries, nuts and mushrooms, and won't be enough to keep a person alive indefinitely.

    Comments?
     
    ogreman likes this.
  2. Admin Post
    ogreman

    ogreman Ogre In Charge Staff Member GameOgre Admin

    Messages:
    51,981
    Likes Received:
    8,869
    Trophy Points:
    113
    Credit:
    497,141.69
    Excellent post, Tariel:). In fact, gave you a medal because your posts have been of so high quality thus far.

    I like the farming aspect as Star Dew Valley has become one of my recent favorite games:). Cross breeding fruits and vegetable should be very interesting,

    We used to have a game with actions, turns, seasons, etc called Ogre Wars. However, it did not have any NPCs. We ran this until we switched forum software. The current Ogre Wars is not the same, but does use a nice dice plugin for this forum. We are basically make this one as we go:). Basically want to flesh out the whole game in stages. If we ever did NPCs like you have I guess I would need to roll for them:). I do think NPCs help a lot, especially at first for most games, so that is a possibility at some point.

    The currency system where the players introduce their own currencies could be very tricky especially at the very beginning. Some may find it too complicated. Have you seen this before in other games? If so, which ones. I don't believe I have ran across that yet:).

    Hmmm, the children concept will also be interesting to see.

    Yes, a forum for the game is a great idea. Giving different groups a town is even better.

    18 hours does make sense if that is how you handle combat. The best thing is that they don't have to be on at the exact same time. We know around here from tournaments how hard that can be to accomplish sometimes:).

    If we can help get the game going, just let us or even myself know:). For example, you could use a section in our forum until you got a dedicated one going yourself. Could also probably help on a domain if you ever decide to launch the game on a site.
     
  3. Tariel

    Tariel Big Brute New Ogre

    Messages:
    170
    Likes Received:
    70
    Trophy Points:
    28
    Credit:
    9,829.77
    Thanks for the medal. I hope I can keep up a level of quality.

    As for the currency system, Cantr has this thing that they have the possibility of building coin presses, and people have to convince other people to recognize the value of their currency. Generally it means that a town will always have to be ready to swap coins into resources, otherwise they become worthless. If you're low on a resource, you can change the trade rates and say you get less per a coin, but you can never say "you get nothing with that coin" because that would be the end of your system.

    In ancient Finland, people used squirrel skins as currency. In my game, it will be possible to get the skin of any animal from hunting, assuming you have enough skill to skin it without tearing it. I can see pelts developing value. It only becomes an issue if everybody starts hunting for squirrels instead of doing what they normally do. That's why in an optimal system, the currency is something that cannot be acquired from nature by the masses, but instead something released by the government.

    In Fallout 1, the built-in currency is bottle caps. Then in Fallout 2, a treasure is found in a well and it's bottle caps, but they have lost their value because a new currency has replaced it. So a currency is based on a mutual agreement, and if everybody who knows the value of the agreement dies, the medium will lose it's value.

    I need to test battle scenarios once I have the mechanics fleshed out. It's pretty straight-forward once there are only two participants, but once it runs into a situation where person A is attacking person B and then person C starts attacking person A, if we wait 18 hours for B's response, do we need to wait another 18 hours from the moment person C joined in? Or if person A logs in after C initiates their attack, but before B resolves their response, can A pick how to react to C's attack even though the situation might change if B's retaliation severely wounds A? Of course assuming the system is sophisticated enough, A can say "retaliate against C if health>X, otherwise flee." The system will also allow queuing targets, so if A manages to kill or neutralize B, he can set to attack D next. D won't know that he's being targeted, but he will be able to just walk away while he's nobody's primary target because A being engaged in a fight with B (or C after that) means that he's too busy to stop D from leaving the scene.

    I feel it's still a long way before I will be ready to get beta testers. Currently all you can do is walk around and chat.

    I also have this thing that time is flexible, so you can organize what your character does within the timespan of the ongoing month. This leads into a problem, however. In order to join scenes (chats), the character needs to be in the vicinity of the scene during the time it happens (or at least during a moment between it's start and end points). It might be hard for a person to arrange that they will be there, even if they could see in advance that this scene will take place in the future. When a person starts a scene, it will be timed based on what the current time is on their internal timeline. Another player starts their day from the beginning of the month and they look at the scene page "oh, Billy's birthday will be on the 3rd, I'd better make sure that I be there". So they play days 1 and 2 according to their normal routine, then make sure that on day 3 during the hour when the party starts, they will be in this location and ready to participate. They can go ahead and play the things that happen after the party as well, but they will reserve the time of the party on their timeline so that their character remains there during that time. Likewise, if somebody travels through a town, they can set up a scene that takes say, 1 hour, during which they might cook and relax, after which they continue their journey. When the other players at the stop wake up, they can join the scene and chat with the person, even though technically he has already left, because in that moment in the past he was still there. This will eliminate the need to stick around for months waiting for people to wake up.

    Of course there might be situations where somebody wants to follow a person that has already left. If the person left within 18 hours realtime, the other player can click a button to follow, and assuming they're fast enough, they can catch up, but they will spend the same amount of AP as the first person. But if the chaser is slower, they won't be able to catch up, unless the person being followed only traveled a short distance, then stopped. Also the chaser can't do this that first they tend to their fields for a day, then decide to follow. The decision to follow needs to be made pretty much as soon as the other player wakes up. They might have time to grab some rations for the road, but they won't have time to work on any activities or they will lose the chance to catch up.

    Also, one peculiarity of the game is that it will be possible to play gender-neutral characters, called neuters. They won't be able to breed with anybody. This might be a relief for people who think having characters mate in a game is wrong. Of course if a player chooses, their male or female character can also be infertile. But the difference with neuters is that they literally don't have sexual organs, so they cannot have sex, at least not in the traditional way. Also some of the NPCs will be neuters.
     
    ogreman likes this.
  4. Admin Post
    ogreman

    ogreman Ogre In Charge Staff Member GameOgre Admin

    Messages:
    51,981
    Likes Received:
    8,869
    Trophy Points:
    113
    Credit:
    497,141.69
    You deserve it and this post is definitely that same quality:).

    The hunting and skins could do well and would like to play a game with that myself:).

    Ah, when do you feel the other systems will be ready to be tested?

    Hmmm, that would be peculiar. Don't think I have really seen that either like the currency. Will be especially interesting to see how that gender system is received by players:).
     
  5. Tariel

    Tariel Big Brute New Ogre

    Messages:
    170
    Likes Received:
    70
    Trophy Points:
    28
    Credit:
    9,829.77
    I haven't set myself any deadlines. I don't even work on this every day. Some days I don't know where to start. It's such a big project and there are so many ares to cover.
     
  6. Tariel

    Tariel Big Brute New Ogre

    Messages:
    170
    Likes Received:
    70
    Trophy Points:
    28
    Credit:
    9,829.77
    I ran into a problem. I hadn't rebooted my computer in a while but it apparently rebooted itself, because xampp was running when I left and when I came home, it was no longer running. After that it refused to connect, saying it cannot bind to port 80. I changed the port to 1234 after which it starts without complaining, but I can't open my game or phpmyadmin. It only loads a blank page. I changed the vhosts file to say :1234 instead of :80 but it didn't change anything.
     
  7. Tariel

    Tariel Big Brute New Ogre

    Messages:
    170
    Likes Received:
    70
    Trophy Points:
    28
    Credit:
    9,829.77
    Problem solved. It appears now I need to write otherworld.loc:1234 instead of just otherworld.loc. I'm not sure why it was working without the port number when it was in port 80.
     
  8. Admin Post
    ogreman

    ogreman Ogre In Charge Staff Member GameOgre Admin

    Messages:
    51,981
    Likes Received:
    8,869
    Trophy Points:
    113
    Credit:
    497,141.69
    Ah, glad you got that solved:).

    Believe me, I know what you mean:). Besides having a similar focus issue with the site on occasion, I have a hard time setting myself on one game project. Have a lot of ideas, but the hardest thing is committing to just one and fleshing it out to its fullest. You can kind of see that by some of the games we have on GameOgre. It is a hodgepodge of different ideas and genres. The one overriding factor is that nearly all involve an Ogre in some way hahaha. They can be seen and played from Ogre Games Archives

    How often do you normally work on yours?
     
  9. Tariel

    Tariel Big Brute New Ogre

    Messages:
    170
    Likes Received:
    70
    Trophy Points:
    28
    Credit:
    9,829.77
    I try to work every day but sometimes I can go a couple of days without doing anything or much of anything. Looking at the file dates, it seems I actually started in 2011 rather than 2012. I worked on some designing text files in January, then took a break and started working again near the end of June. I've been working pretty solid ever since then.

    Today I finished entering the natural resources into the database. I ended up with 194 at this point. I might still end up adding some more in the future, but at this point it's plenty.

    Here's the list:

    allspice
    almond
    aloe vera
    amaranth
    amber
    amethyst
    ancestral tomato plant
    anise
    apricot
    arrowroot
    asparagus
    avocado
    bamboo
    banana
    baobab
    barley
    basalt
    bauxite
    beans
    beech
    beets
    bell peppers
    birch
    black cherry
    blackberries
    bladder cherries
    blueberries
    bok choy
    burdock
    cabbage
    cacti
    camphor
    caraway
    carrot
    cashew
    castor beans
    cattails
    celery
    cherry tomatoes
    chert
    chickpea
    chickweed
    chicory
    chili
    chives
    citrus fruit
    climbing heath
    clover
    coal
    cocoa
    coconut
    coffee
    cola plant
    coral
    corn
    crabapple
    cranberries
    cress
    cucumbers
    daffodil
    dandelions
    date
    diamonds
    eucalyptus
    ferns
    fig
    fir
    fireweed
    flax
    flint
    ginger
    ginseng
    gneiss
    gold
    granite
    gypsum
    hazel
    heather
    hematite
    hemp
    hops
    indigo
    jackfruit
    jade
    jimsonweed
    johncrow bead
    jute
    kidney beans
    lichen
    limestone
    linden
    lingonberries
    lotus
    lychee
    magnetite
    mahogany
    manchineel tree
    mango
    mangosteen
    manioc
    maple
    marble
    marijuana
    mushrooms
    mustard plant
    myrrh
    nettles
    nickel
    nightshade
    nutmeg
    oak
    oats
    obsidian
    okra
    oleander
    olives
    opals
    opium poppy
    orchid
    papaya
    parsnips
    peach
    pear
    peppermint
    peridot
    persimmon
    pine
    pistachio
    pitcher plant
    plantain
    pomegranate
    prickly lettuce
    pumice
    pumpkin
    radish
    rambutan
    rapeseed
    raspberries
    red cherry
    red pineapple
    reeds
    rhubarb
    rhyolite
    rowan
    rubies
    sage
    salt
    sandstone
    sapphires
    sassafras
    sea-buckthorn
    seaweed
    shale
    shellfish
    shrubs
    silk cocoons
    silver ore
    slate
    snakeroot
    snowdrop onion
    sorghum
    sour orange
    soybeans
    spelt
    spinach
    starfruit
    sugarcane
    sweet potato
    tamarind
    tangerine
    taro
    thistles
    thyme
    tobacco
    turnips
    walnut
    vanilla
    water chestnuts
    water hemlock
    watermelon
    wheat
    wild apple
    wild cotton
    wild grapes
    wild licorice
    wild onion
    wild rice
    wild strawberry
    wild yam
    vines
    winter squash
    wolfsbane
    yew
    zucchini
     
  10. Tariel

    Tariel Big Brute New Ogre

    Messages:
    170
    Likes Received:
    70
    Trophy Points:
    28
    Credit:
    9,829.77
    I also added this thing that shows how many trees are in a square. If the blue value is 57, there is 1 tree. If it's 255, there are 100 trees. Something in between it's round(($blueValue-55)/2) trees. If it's 56 or less, it doesn't count. There might be some saplings but they do not count as real trees. I'm thinking of wood resources only being acquirable by felling trees in the local map view, so if a location hasn't been explored, it's impossible to cut down trees. It's hard to say how much timber a single tree should yield. Of course trees of different species greatly vary in size.
     
  11. Aaddron

    Aaddron Moderator Staff Member GameOgre Moderator

    Messages:
    42,963
    Likes Received:
    3,053
    Trophy Points:
    113
    Credit:
    277,410.13
    It's interesting to me how much goes into this, even as a browser game it takes so much thought to design it all... an so much work to actually make it happen. Sounds like you've already got a pretty good start on it too. I like the little details your aiming for like temperature playing a role. The character system, I don't think I've ever seen that in a game before. The idea the kids could become players characters... that's pretty cool.

    I'm not very good at visualizing so I have a hard time picturing it all but it does sound like it could make for a interesting game. Hope you are able to get it to where you want it.
     
  12. Tariel

    Tariel Big Brute New Ogre

    Messages:
    170
    Likes Received:
    70
    Trophy Points:
    28
    Credit:
    9,829.77
    Here are some screenshots.
    [​IMG]
    [​IMG]
    The one below shows most of the local map grid. This location doesn't have much vegetation.
    [​IMG]
    The one below shows a multitude of resources even before a location has been explored. I should make some of them more rare to keep the suspense, especially things like diamonds and gold.
    [​IMG]
    The one below shows what happens if a mountainside is too deep to travel without a rope. I haven't implemented rope yet so at this point it means there's no way to travel in that direction. It's good to know that such steep mountainsides even exist because I wasn't 100% sure. This was the first time I ran into one.
    [​IMG]

    One thing I should do is differentiate between rivers, lakes and seas. Currently they're just generic water so there's no way of telling what you're looking at. I'm not quite sure how I'm going to program currents. I might leave that for later when I have a clearer idea about it. I wouldn't want to program something only to have to rewrite it later.
     
    ogreman and Aaddron like this.
  13. Tariel

    Tariel Big Brute New Ogre

    Messages:
    170
    Likes Received:
    70
    Trophy Points:
    28
    Credit:
    9,829.77
    So I'm considering to do rivers like this: There will be spots on the map that have a directionality and intensity. They will be affected by differences in elevation. Each spot will have a sphere of influence that extends 5 map pixels in every direction. On the edge pixels, the current will be less intense and will get gradually stronger towards the center. If there are two or more spots affecting a pixel, the intensity of the current will be their average. If there are no current spots within a 5 point radius, the water will be stagnant. There can also be currents in the seas, but I haven't implemented boats yet, so that's not a current issue (no pun intended).
     
  14. Aaddron

    Aaddron Moderator Staff Member GameOgre Moderator

    Messages:
    42,963
    Likes Received:
    3,053
    Trophy Points:
    113
    Credit:
    277,410.13
    Makes sense and is easy to understand. Sounds like a good way to do it. Stagnant water always seem to be a no go in real life, maybe you can do something with that... like it's not as good as flowing water or something. Dunno something that just came to mind.
     
  15. Admin Post
    ogreman

    ogreman Ogre In Charge Staff Member GameOgre Admin

    Messages:
    51,981
    Likes Received:
    8,869
    Trophy Points:
    113
    Credit:
    497,141.69
    Thinking about giving this thread special recognition since it has so many details:).

    Yes, that is a long time. I hope you do it get it launched someday:).

    Wow, that is a lot of resources. I agree, that is plenty

    I like the water system. Hmm, what do you have in mind for boats if you ever implement them?
     
  16. Tariel

    Tariel Big Brute New Ogre

    Messages:
    170
    Likes Received:
    70
    Trophy Points:
    28
    Credit:
    9,829.77
    Boats will be objects like buildings. When a character is inside a boat, the character's x and y are ignored and instead it inherits the boat's x and y. Boats can only go in squares that are water but harbors and piers can be build on land squares that border water. People board the boat in the pier/harbor and pick a direction that is water. The boat will be moved to the next spot on the grid in that direction. After this it can move freely in any direction that is water. If it hits a sea current or if it's in a river, it will drift in the direction of the current spots unless steered. Boats will require some power source, either sails, oars, paddle wheel or steam engine. Big ships will need a crew, this is mostly accomplished with NPCs. I'm considering this thing that if your PC crew member dies in the middle of the sea, you should be able to pick up an NPC like in Puzzle Pirates because otherwise you're stuck with less than minimum crew and can't return to land. Another option would be to allow some sort of sailing as long as there is at least one person on board, even if the person is just rowing, but it would be highly ineffective if the ship is too big for a crew of 1. Once a ship returns to the shore, it needs a pier or a harbor, but dinghies, rowboats and canoes can go directly to the shore, so if you've come to a new land and there is no harbor, you can go ashore in small boats, build a harbor, then dock your big ship.
     
    Aaddron and ogreman like this.
  17. Tariel

    Tariel Big Brute New Ogre

    Messages:
    170
    Likes Received:
    70
    Trophy Points:
    28
    Credit:
    9,829.77
    Today I finished the current system, or at least the first version. Currently a given point gets affected by the nearest current point as well as the one behind it. It doesn't take into account the next point downstream if the nearest point is upstream from the observation point. I'm a bit concerned that the page takes several seconds to load. It must mean that it's doing a lot of work in the background. It could probably be optimized but I'm not very good at that. If there is an upstream point within the range, the speed of the water is calculated based on the distance of the points. Speed has 8 visual categories, so small changes are undetectable. In the background it's measured in km/h. In the database the speeds are integers, but between two current points the result can be a float. So technically if the point upstream has a higher speed and the speed in the closest point is right on the edge of a speed category, if you move one point upstream, it will fall into the next speed category because it's not rounded. I hope this wasn't too confusingly explained.
     
    ogreman and Aaddron like this.
  18. Tariel

    Tariel Big Brute New Ogre

    Messages:
    170
    Likes Received:
    70
    Trophy Points:
    28
    Credit:
    9,829.77
    Next I should enter the maximum deposit sizes for wild resources and figure out how many deposits are allowed per square kilometer. For things like wood and rocks, the numbers are understandably huge. Even wild vegetables and fruits can be tens of kilos per deposit. Things like gems are easier because they tend to be rare, but I'm having a hard time coming up with the numbers for common resources. A resource can be common in two ways: Either it has a lot of material per deposit, or a lot of deposits per local map.
     
    ogreman and Aaddron like this.
  19. Tariel

    Tariel Big Brute New Ogre

    Messages:
    170
    Likes Received:
    70
    Trophy Points:
    28
    Credit:
    9,829.77
    I could use a second opinion on this one thing: should resource commonness be based on a density map or be completely random within given bounds? I currently have the completely random system. To get the density I would need something like this: PHP multi dimensional array search Is it worth it or is it better to have complete randomness?
     
  20. Admin Post
    ogreman

    ogreman Ogre In Charge Staff Member GameOgre Admin

    Messages:
    51,981
    Likes Received:
    8,869
    Trophy Points:
    113
    Credit:
    497,141.69
    I would say unless it is a resource driven game like oil drilling, to stick with complete randomness:).
     
Thread Status:
Not open for further replies.

Share This Page