EDIT: We are now in very early Alpha testing. If you enjoy Art Role Playing games, we are currently testing the initial stages of our ARPG system! Please do come and join us and help us to test the game! https://wayaupets.com/
____________________________________________________
I've been pouring hours into coding for a new game concept. Building every system from the ground up is a challenge but very fun!
The project is nameless at the moment (Lost Fables being my collection of projects)
There's a lot I can talk about during this experience so I guess this will serve as a 'Dev Log' of sorts to show what's done, what challenges I've run into/overcome and updates being made.
Concept
The idea came from being around people in ARPG communities, pet communities, Animal Crossing fans and the like. - I have always had my foot in these communities, doing coding work for some of them from time to time, I got more exposed to what they are, how they work and the amazing people in these communities that come together.
I noticed a lot of stuff while coding that really bothered me however, the way some things are done, the processes people use, the frameworks that are recycled. Most of them seem like patchwork versions of each other. I would often bring up ideas to people I was helping but they were always set on being just like the competition and not wanting to rework their entire game (understandable)
So I wrote down the things that annoyed me about the other games and began working out ways to possibly (in my opinion) improve upon them. I have some unique ideas about what I would like to see in a game which (honestly now that I look at my plans) is much more than just a pet game!
So I have been working hard on getting a lot of the base code and structure in place to build upon. From here on you will be getting details about the things I've been working on, things I have failed at, things I have reworked.
Pet Link
An idea I liked (but thought should be a minor feature) is sharing your pet and letting strangers help you with raising them/leveling them etc.
In my case I wanted it to be something that can be done but wouldn't affect your game performance (It's not fair on other players if someone gets everything because they have a lot of friends or good at marketing/getting clicks) so the reward is after x-amount of clicks or 'praise' then the pet gets a small amount of exp and a fame point. - Fame simply shows how popular that pet is (As it has received a bunch of clicks). (I will be using fame in other aspects of the game too).
I wanted this page to be simple and attractive while also customizable. Users choose the background colors to display.
The idea behind this is players are able to promote the site in a fun/interactive way and those who click the links are able to help the player without registering, and are now already on a website which may fuel their curiosity and encourage them to try it out too! - I think of it as a way of rewarding players for advertising the game.
Pet Colors/Markings
I wanted the pets of the same breed also have a little more personality. Changing the colors and adding in patterns/markings is something I think helps to bring a bit of life into the game. I notice a lot of games do this, yet they all create images (this is done by taking several layers, the base color, overlaying the markings and then exporting it to an image). This is a proven way to do it but this can lead to thousands of images on the server, taking space and costing more to host. Instead the database holds the coat color, the marking color and marking type. CSS overlays these elements right there on the screen. Want to share it with someone? No problem. Instead of exporting the image as a file on the server, I print the image to the screen and the player can save the image to their desktop! or share the link which contains the variables needed to 'draw' the image on the screen. - Easy!
Breeding
Breeding took time. A lot of time. A stupid amount of - 18 hours...
This wasn't all coding. In fact a lot of it was "How do I want to do this?" a LOT of balancing the rarity of the various colors and markings, trying different methods of coding, rebalancing, coding it more efficiently, rebalancing.
I'm not sure I'm happy with it 100% and this is something I will be revisiting consistently throughout development. It works right now and it works really well. But I am one person testing it and the balance of rarity is likely going to be crazy different at scale. Code-wise it's probably mostly where it needs to be but those numbers are tough to nail down.
Here's a psudo-breakdown of how I handle things (This does not reflect the real code or values in any way).
The Backend Stuff
Beyond pet systems the rest of the site are things I am very familiar with and have an admin panel which I've been working on for several years to manage. Logins, session handling, user management, ticket system, bug reporting etc..
All of this I could probably create an entire dev blog about so I won't go in depth with any of the non-pet related backend stuff here, even if that does take up about 90% of the project thus far ^^
Going Forward
I will update this thread as I go, detailing different systems and how I plan to approach them and what the end results might be. This will be interesting for myself to look back on in the least to see where things started and where things end up. - If you like this post and would like to see more, please let me know as it may motivate me to post more often ^^
Also if you have any questions, need help with something feel free to ask (Though I code my own stuff from scratch in PHP and procedurally so I won't be much help with framework issues).
____________________________________________________
I've been pouring hours into coding for a new game concept. Building every system from the ground up is a challenge but very fun!
The project is nameless at the moment (Lost Fables being my collection of projects)
There's a lot I can talk about during this experience so I guess this will serve as a 'Dev Log' of sorts to show what's done, what challenges I've run into/overcome and updates being made.
Concept
The idea came from being around people in ARPG communities, pet communities, Animal Crossing fans and the like. - I have always had my foot in these communities, doing coding work for some of them from time to time, I got more exposed to what they are, how they work and the amazing people in these communities that come together.
I noticed a lot of stuff while coding that really bothered me however, the way some things are done, the processes people use, the frameworks that are recycled. Most of them seem like patchwork versions of each other. I would often bring up ideas to people I was helping but they were always set on being just like the competition and not wanting to rework their entire game (understandable)
So I wrote down the things that annoyed me about the other games and began working out ways to possibly (in my opinion) improve upon them. I have some unique ideas about what I would like to see in a game which (honestly now that I look at my plans) is much more than just a pet game!
So I have been working hard on getting a lot of the base code and structure in place to build upon. From here on you will be getting details about the things I've been working on, things I have failed at, things I have reworked.
Pet Link
An idea I liked (but thought should be a minor feature) is sharing your pet and letting strangers help you with raising them/leveling them etc.
In my case I wanted it to be something that can be done but wouldn't affect your game performance (It's not fair on other players if someone gets everything because they have a lot of friends or good at marketing/getting clicks) so the reward is after x-amount of clicks or 'praise' then the pet gets a small amount of exp and a fame point. - Fame simply shows how popular that pet is (As it has received a bunch of clicks). (I will be using fame in other aspects of the game too).
I wanted this page to be simple and attractive while also customizable. Users choose the background colors to display.
The idea behind this is players are able to promote the site in a fun/interactive way and those who click the links are able to help the player without registering, and are now already on a website which may fuel their curiosity and encourage them to try it out too! - I think of it as a way of rewarding players for advertising the game.
Pet Colors/Markings
I wanted the pets of the same breed also have a little more personality. Changing the colors and adding in patterns/markings is something I think helps to bring a bit of life into the game. I notice a lot of games do this, yet they all create images (this is done by taking several layers, the base color, overlaying the markings and then exporting it to an image). This is a proven way to do it but this can lead to thousands of images on the server, taking space and costing more to host. Instead the database holds the coat color, the marking color and marking type. CSS overlays these elements right there on the screen. Want to share it with someone? No problem. Instead of exporting the image as a file on the server, I print the image to the screen and the player can save the image to their desktop! or share the link which contains the variables needed to 'draw' the image on the screen. - Easy!
Breeding
Breeding took time. A lot of time. A stupid amount of - 18 hours...
This wasn't all coding. In fact a lot of it was "How do I want to do this?" a LOT of balancing the rarity of the various colors and markings, trying different methods of coding, rebalancing, coding it more efficiently, rebalancing.
I'm not sure I'm happy with it 100% and this is something I will be revisiting consistently throughout development. It works right now and it works really well. But I am one person testing it and the balance of rarity is likely going to be crazy different at scale. Code-wise it's probably mostly where it needs to be but those numbers are tough to nail down.
Here's a psudo-breakdown of how I handle things (This does not reflect the real code or values in any way).
First I determine how rare something is. These are not my actual numbers but an idea of how it works
$roll = rand(1,100);
if ($roll >= 1 AND $roll <= 10) {$color = “Red”;}
if ($roll >= 11 AND $roll <= 50) {$color = “Blue”;}
if ($roll >= 51 AND $roll <= 100) {$color = “Green”;}
The above makes a roll between 1 and 100. Red has a 10% chance of being passed while Green has a 49% chance
Now each male and female gene is passed through to determine which one has the rarer gene. In this case the make has Blue where as the female has the rarer red.
$check= rand(1,$male);
if ($check<= $female { $dominantgene = $female; } else {$dominantgene = $male; }
Again, the above is not the actual code but this gives you the idea. We take the rarity of each. If the female is rare then we use her as the low number between 1-female number (10) and we roll against the higher number male (50)
if the result is between 1-10 the female gene wins, where as between 11-50 the male wins.
The female is still harder to pass with a 20% chance where as the male has a 80% chance.
Getting the right balance for this will be difficult and not something that I can’t truly achieve without heavy testing. That’s probably going to be refined more as the game is developed and the first users begin playing. However from my few tests, taking a rarity of 0.01% against a 59% creature, I can tell you, it’s near impossible for a user to get. However if breeding a rarity of 10% the rarer 0.01% becomes closer to 10% while the other is more like a 90%. (Sounds weird right? It may not make sense but the take away is breeding a rare with an ultra-rare makes the odds more like breeding a common with an uncommon. = easier to do.)
$roll = rand(1,100);
if ($roll >= 1 AND $roll <= 10) {$color = “Red”;}
if ($roll >= 11 AND $roll <= 50) {$color = “Blue”;}
if ($roll >= 51 AND $roll <= 100) {$color = “Green”;}
The above makes a roll between 1 and 100. Red has a 10% chance of being passed while Green has a 49% chance
Now each male and female gene is passed through to determine which one has the rarer gene. In this case the make has Blue where as the female has the rarer red.
$check= rand(1,$male);
if ($check<= $female { $dominantgene = $female; } else {$dominantgene = $male; }
Again, the above is not the actual code but this gives you the idea. We take the rarity of each. If the female is rare then we use her as the low number between 1-female number (10) and we roll against the higher number male (50)
if the result is between 1-10 the female gene wins, where as between 11-50 the male wins.
The female is still harder to pass with a 20% chance where as the male has a 80% chance.
Getting the right balance for this will be difficult and not something that I can’t truly achieve without heavy testing. That’s probably going to be refined more as the game is developed and the first users begin playing. However from my few tests, taking a rarity of 0.01% against a 59% creature, I can tell you, it’s near impossible for a user to get. However if breeding a rarity of 10% the rarer 0.01% becomes closer to 10% while the other is more like a 90%. (Sounds weird right? It may not make sense but the take away is breeding a rare with an ultra-rare makes the odds more like breeding a common with an uncommon. = easier to do.)
Beyond pet systems the rest of the site are things I am very familiar with and have an admin panel which I've been working on for several years to manage. Logins, session handling, user management, ticket system, bug reporting etc..
All of this I could probably create an entire dev blog about so I won't go in depth with any of the non-pet related backend stuff here, even if that does take up about 90% of the project thus far ^^
Going Forward
I will update this thread as I go, detailing different systems and how I plan to approach them and what the end results might be. This will be interesting for myself to look back on in the least to see where things started and where things end up. - If you like this post and would like to see more, please let me know as it may motivate me to post more often ^^
Also if you have any questions, need help with something feel free to ask (Though I code my own stuff from scratch in PHP and procedurally so I won't be much help with framework issues).
Last edited by a moderator: