Happy new year anyone who is reading this.
Nothing again today (of course) but the time to pick up work again is near, so near i can taste it. Look forward to it even.
Today i learned something cool, my athlete cousin openly disrespected my introverted lifestyle. Just because she doesn't understand, this is quite common for people like gamers, or people who for other reasons spend most of their time on the computer, they just don't understand. A lot of us might get angry over it, but i didn't. I think there is no such thing as a "better" lifestyle, just the one you're suited for, and my way of acting superior was simply not to speak down to her own lifestyle in return.
Keep that in mind, if someone insults you, don't insult them back, don't fuel the flames. They have the right to their opinions. You should voice your disagreement, but you shouldn't start an argument over it.
Tuesday, 31 December 2013
Sunday, 29 December 2013
Nothing Today Either
Woke up at 5, had "breakfast" and some quality white tea after finding out i've caught an illness. I hear it can help with that.
Then i had a movie night starting at like 9. And it finished well.. just now (6 hours later).
And by this time much like yesterday when i should be "fresh" since it's practically the equivalent of afternoon or maybe evening for me now i'm just super tired.
When you're tired you make mistakes so even if now would be a perfect time to work, i'm on sick leave ^_^
What to do i wonder, i'd really like to pick up emilie autumn's book again. I'd also like to play long live the queen which i dropped out of hatred for the soundtrack recently.
But when i'm tired, reading makes me more tired, and hurts, and can easily lead to headaches. So no reading.
Then i had a movie night starting at like 9. And it finished well.. just now (6 hours later).
And by this time much like yesterday when i should be "fresh" since it's practically the equivalent of afternoon or maybe evening for me now i'm just super tired.
When you're tired you make mistakes so even if now would be a perfect time to work, i'm on sick leave ^_^
What to do i wonder, i'd really like to pick up emilie autumn's book again. I'd also like to play long live the queen which i dropped out of hatred for the soundtrack recently.
But when i'm tired, reading makes me more tired, and hurts, and can easily lead to headaches. So no reading.
Saturday, 28 December 2013
Nothing today
Absolutely nothing done today, i had a party with my family which took up most of today, the rest was spent in Prison Architect. I also assembled that table i got for christmas, damn it's nice to finally have a table for my tv so i can use my other table for feet, food and drinks!
Friday, 27 December 2013
Almost Forgot
Almost forgot to make a log today, i didn't make any progress today even if i could have, instead i chose to use this part of the holidays to finish off breaking bad and play some Record of Agarest War.
But.
Yesterday i did slightly touch the code i've been working on, just a little bit but i only had 5 minutes with it so i didn't get much done.
But i also did some work on the story for (codename)Riye's Game. Not a lot of it is done, but i guess i can share some of it. You start in the middle of a dragon attacking the town you live in, and in the chaos that ensues you get knocked out (undefined how you get knocked out though). Next thing you know your head hurts like hell and someone is carrying you, you start screaming and you get knocked out (again), obviously you weren't saved by a kind stranger.
Next up you wake up in a prison cell with another girl your age. A demon (undefined how she got there, i'll work on that soon) and to your delight, a health potion. It's a cold night in the desert and for fun you'll get a choice to curl up next to the demon girl for the heat, or to stay in the bunk you were placed in, which will have some minor consequences. *Insert option to remember the protagonists history so far, and her relation to Yrja*
Then as the two of you wake up, she updates you on the situation you're in and not all too thrilled about being enslaved for a second time, together you start planning your escape...
That's not all i've got, but all i will share at this point. Wouldn't want to spoil anything.
Thing is, before i progress much with the story i need to more clearly define the races, their culture, and the Kalhiri continent which the game will take place in.
So far i only have high concept of the races and continents. I need to detail it a lot before i can detail this story, truth be told i'm looking a lot more forward to planning out and writing this story just as much as i look forward to making the code for the game.
But.
Yesterday i did slightly touch the code i've been working on, just a little bit but i only had 5 minutes with it so i didn't get much done.
But i also did some work on the story for (codename)Riye's Game. Not a lot of it is done, but i guess i can share some of it. You start in the middle of a dragon attacking the town you live in, and in the chaos that ensues you get knocked out (undefined how you get knocked out though). Next thing you know your head hurts like hell and someone is carrying you, you start screaming and you get knocked out (again), obviously you weren't saved by a kind stranger.
Next up you wake up in a prison cell with another girl your age. A demon (undefined how she got there, i'll work on that soon) and to your delight, a health potion. It's a cold night in the desert and for fun you'll get a choice to curl up next to the demon girl for the heat, or to stay in the bunk you were placed in, which will have some minor consequences. *Insert option to remember the protagonists history so far, and her relation to Yrja*
Then as the two of you wake up, she updates you on the situation you're in and not all too thrilled about being enslaved for a second time, together you start planning your escape...
That's not all i've got, but all i will share at this point. Wouldn't want to spoil anything.
Thing is, before i progress much with the story i need to more clearly define the races, their culture, and the Kalhiri continent which the game will take place in.
So far i only have high concept of the races and continents. I need to detail it a lot before i can detail this story, truth be told i'm looking a lot more forward to planning out and writing this story just as much as i look forward to making the code for the game.
Thursday, 26 December 2013
Still on pause
Damn it holidays, i wanted to work some today, and i set up my laptop today so i can now work when i'm not at home (at least on python/ren'py, i need to set up articy on it too in a VM if i wanna do design since that laptop only has linux as an OS. fuck microsoft.)
Well, nothing much happened today. I finished contrast yesterday. I also downloaded all the mods i'll ever need for Morrowind, planning to buy it (again, i already have a physical copy...) on steam's sale before it ends, and re-play it. Actually a lot of the work i've done got inspiration from morrowind, and morrowind is definitely a good place for me to look for inspirations, it's a really good game.
That said there's a chance i'll have some time to work before i go to sleep, we'll see :)
Well, nothing much happened today. I finished contrast yesterday. I also downloaded all the mods i'll ever need for Morrowind, planning to buy it (again, i already have a physical copy...) on steam's sale before it ends, and re-play it. Actually a lot of the work i've done got inspiration from morrowind, and morrowind is definitely a good place for me to look for inspirations, it's a really good game.
That said there's a chance i'll have some time to work before i go to sleep, we'll see :)
Wednesday, 25 December 2013
Jóladagur!
Or whatever you like to call it (christmas day?) anyways, another day that calls for just chilling the fuck out. I was meant to go to my grandmas place today, but the snowstorm on the mountain between here and there forced us to turn 180° and go back home.
Yesterday i played and finished outlast, i liked the game, but i think i learned more about things not to do from it than things to do. I would've liked the ending if it had made any sort of sense for example. Same deal with Swapper. I can promise you this: Any game i will make will have an ending that at least makes sense (whether it's good or bad)
I will not make a nonsensical ending even if my story makes no sense right from the start!
With that, i have decided to relax for the rest of today too, this will probably happen tomorrow too. I'm using this time to play games :3
Next in line after outlast is... Oh right, Contrast! i should finish that already.
Today was not completely wasted on not thinking about my games though, i figured out something cool. I like to link atmospheres to music (for example like i've compared the ending song of amnesia to have that exact "feel" i would've wanted the player to get after finishing Yrja's Torment.)
And i realized that i can use this. I can use songs as concept for emotion. For atmospheres...
I'll make some examples with my favorite musician.
Character: For example, this song can be used to give me a rough idea of how i want the player to experience a character, say... A pretty cute girl. First impression is that she's so innocent and cute, then you look into her past and see a pretty sick and twisted story, and when you actually get to know the character she's actually a massive sadist and not so cute anymore when she's got you tied up, gagged and cutting you with a knife just to see what kind of expressions you would make.
Just as an example of the emotional flow i feel from the song. That's a high concept of a character based on what pops up in my head when i hear that song and try to create a character with these thoughts.
Scene/Environment: This is pretty straightforward, i can imagine for example a trade caravan with some shady (understatement) merchants trying to sell something illegal acting like it's completely normal. To convince you that they aren't evil and their merchandise isn't suspicious at all. (But for all you know they might be selling cursed or stolen items, or have people robbing you as they keep your attention on their merchandise, or they could be smuggling people/slaves or illegal wares (like drugs) in the places they make sure you aren't looking) This could be a caravan, this could be a trade district somewhere in the Tainted areas of Necembel.
Atmosphere: I realized just today (and this is where these thoughts started coming up) that this song is about her sleeping problems when she was a child, she kept hearing voices in her head and silenced them by focusing her mind on music. Anyways, there's a certain atmosphere in the music, and there's a character in the vocals. I'm talking about the atmospheric music, this could for example set a base for how i want an undead city to feel, melancholic, mysterious, dark, some pretty sad characters, etc.
Nobody else has to see these things the same way as i do. Nobody has to even understand what i'm talking about, since this way i can use music to help myself get my imagination flowing. So for example... Alfinil! Magdolon! Jokland!
Alfinil has wood elves and rat people, it's kind of inspired by Trynton. You can hear resemblences in that track and the track that i chose to represent Alfinil or more specifically a certain part of it. The wood elf part of it. The "Fae" part of it might be more like this or even maybe a bit of "Lumsk" (Band name)
Dwarves...
That song i linked to Jokland (sorry for low quality) seems to fit quite nicely. It's supposed to be the most dangerous area in the game. Everything is relatively chaotic. Humans, Undead, Snow Elves and Dragons constantly battling for territory and the animals that naturally live there will be monsters like tundra wolves and polar bears. It's essentially a survival of the fittest continent. Not seeing it? that's fine. You might see the resemblences once i've made it.
Magdolon is going to be dark, it's like Jokland mostly survival of the fittest but it's less fierce than Jokland in many ways, for example there isn't a constant war there. But the more aggressive and maybe even evil Fae live there, everywhere that isn't rock is sand (usually black sand except for in the far west next to kalhiri), and in the far east (near Alfinil) where we might even see a few small trees. Everything there is likely to attack you, but it's never certain that it will, it depends on the mood they're in.
I'm trying to say i can use music (for myself) so that when i'm designing something i know what sorts of feelings i would like to deliver to the player when they meet a character, progress through a certain part of the story or get dumped in a strange dungeon. Using this also means i can more easily know what direction i'd like the soundtrack to go in certain scenes or areas.
For a true masterpiece <- that song has an emotional flow i'd love to recreate in a game, i'm thinking i could try it in the undead game. To give you a rough idea this scene is where a brother that has fought hard against immortal foes gets rewarded by seeing his beloved sister torn to shreds by the same immortal demigods he fought + 1 other guy named "Váli". This song brings me the most ecstatic eargasm ever. Every time i see them live and they don't play this song i feel bummed.
Another cool piece is this battle theme. Gets me thinking about the most epic bossfights ever, fitting for Kalhiri too, i couldn't find a themesong for kalhiri probably because the fel'du are peaceful and nice, and even cheerful so the atmosphere in their towns and cities is generally going to be pretty light, whereas the desert itself is .... well... a desert. Deserts are pretty merciless in general so that's a polar opposite of the atmosphere for the cities.
Music that does this job well is generally soundtracks and trailer music, but most of the examples i made were from well.. more general music media like bands, or certain artists not aimed at being a soundtrack. Maybe i'm just crazy but hey... whatever gets my imagination flowing right? In my head this works out, for now :)
Oh yes and another thing i thought of, to avoid making bad characters, avoid making "normal" characters.
Yesterday i played and finished outlast, i liked the game, but i think i learned more about things not to do from it than things to do. I would've liked the ending if it had made any sort of sense for example. Same deal with Swapper. I can promise you this: Any game i will make will have an ending that at least makes sense (whether it's good or bad)
I will not make a nonsensical ending even if my story makes no sense right from the start!
With that, i have decided to relax for the rest of today too, this will probably happen tomorrow too. I'm using this time to play games :3
Next in line after outlast is... Oh right, Contrast! i should finish that already.
Today was not completely wasted on not thinking about my games though, i figured out something cool. I like to link atmospheres to music (for example like i've compared the ending song of amnesia to have that exact "feel" i would've wanted the player to get after finishing Yrja's Torment.)
And i realized that i can use this. I can use songs as concept for emotion. For atmospheres...
I'll make some examples with my favorite musician.
Character: For example, this song can be used to give me a rough idea of how i want the player to experience a character, say... A pretty cute girl. First impression is that she's so innocent and cute, then you look into her past and see a pretty sick and twisted story, and when you actually get to know the character she's actually a massive sadist and not so cute anymore when she's got you tied up, gagged and cutting you with a knife just to see what kind of expressions you would make.
Just as an example of the emotional flow i feel from the song. That's a high concept of a character based on what pops up in my head when i hear that song and try to create a character with these thoughts.
Scene/Environment: This is pretty straightforward, i can imagine for example a trade caravan with some shady (understatement) merchants trying to sell something illegal acting like it's completely normal. To convince you that they aren't evil and their merchandise isn't suspicious at all. (But for all you know they might be selling cursed or stolen items, or have people robbing you as they keep your attention on their merchandise, or they could be smuggling people/slaves or illegal wares (like drugs) in the places they make sure you aren't looking) This could be a caravan, this could be a trade district somewhere in the Tainted areas of Necembel.
Atmosphere: I realized just today (and this is where these thoughts started coming up) that this song is about her sleeping problems when she was a child, she kept hearing voices in her head and silenced them by focusing her mind on music. Anyways, there's a certain atmosphere in the music, and there's a character in the vocals. I'm talking about the atmospheric music, this could for example set a base for how i want an undead city to feel, melancholic, mysterious, dark, some pretty sad characters, etc.
Nobody else has to see these things the same way as i do. Nobody has to even understand what i'm talking about, since this way i can use music to help myself get my imagination flowing. So for example... Alfinil! Magdolon! Jokland!
Alfinil has wood elves and rat people, it's kind of inspired by Trynton. You can hear resemblences in that track and the track that i chose to represent Alfinil or more specifically a certain part of it. The wood elf part of it. The "Fae" part of it might be more like this or even maybe a bit of "Lumsk" (Band name)
Dwarves...
That song i linked to Jokland (sorry for low quality) seems to fit quite nicely. It's supposed to be the most dangerous area in the game. Everything is relatively chaotic. Humans, Undead, Snow Elves and Dragons constantly battling for territory and the animals that naturally live there will be monsters like tundra wolves and polar bears. It's essentially a survival of the fittest continent. Not seeing it? that's fine. You might see the resemblences once i've made it.
Magdolon is going to be dark, it's like Jokland mostly survival of the fittest but it's less fierce than Jokland in many ways, for example there isn't a constant war there. But the more aggressive and maybe even evil Fae live there, everywhere that isn't rock is sand (usually black sand except for in the far west next to kalhiri), and in the far east (near Alfinil) where we might even see a few small trees. Everything there is likely to attack you, but it's never certain that it will, it depends on the mood they're in.
I'm trying to say i can use music (for myself) so that when i'm designing something i know what sorts of feelings i would like to deliver to the player when they meet a character, progress through a certain part of the story or get dumped in a strange dungeon. Using this also means i can more easily know what direction i'd like the soundtrack to go in certain scenes or areas.
For a true masterpiece <- that song has an emotional flow i'd love to recreate in a game, i'm thinking i could try it in the undead game. To give you a rough idea this scene is where a brother that has fought hard against immortal foes gets rewarded by seeing his beloved sister torn to shreds by the same immortal demigods he fought + 1 other guy named "Váli". This song brings me the most ecstatic eargasm ever. Every time i see them live and they don't play this song i feel bummed.
Another cool piece is this battle theme. Gets me thinking about the most epic bossfights ever, fitting for Kalhiri too, i couldn't find a themesong for kalhiri probably because the fel'du are peaceful and nice, and even cheerful so the atmosphere in their towns and cities is generally going to be pretty light, whereas the desert itself is .... well... a desert. Deserts are pretty merciless in general so that's a polar opposite of the atmosphere for the cities.
Music that does this job well is generally soundtracks and trailer music, but most of the examples i made were from well.. more general music media like bands, or certain artists not aimed at being a soundtrack. Maybe i'm just crazy but hey... whatever gets my imagination flowing right? In my head this works out, for now :)
Oh yes and another thing i thought of, to avoid making bad characters, avoid making "normal" characters.
Tuesday, 24 December 2013
Gleðileg Jól!
Or just merry xmas if you prefer. Today even if i don't really want to i am going to sit down, and relax... and play games... all... day... long... until dinner :3
Monday, 23 December 2013
Stats you say?
Grr... i'm so mad that i didn't finish yesterday, i really could have you know? >_<
Either way, this bettered be over by tonight, if i can't just relax on the 24th (tomorrow) and finish off contrast and read some of that nice Asylum book i've got afterwards, what kind of a jól will that be huh?
Hrmpfh.
Now how best to do stats... lets see yesterday i decided:
statname_base = base value + base_modifier values
statname_modifier = effects from items or spells + racials/perks
statname = statname_base + statname_modifier
Now it's about the statname_base
Should that be a class? should that be a method for each stat? or should it just be a variable?
Humm...
I'll start by just making it variables...
Wait...
Some stats are racial. Oh but these will be applied via a perk system (and thus i edited the above)
Now it's all pretty clear :D
Let's see.. .1 by 1
Maybe, i can use a list or dict rather than just a standard variable.
like
HP = {'base': 50, 'modifier': 0, 'max': base + modifier, 'current': max}
no wait... isn't that... perfect? testing testing testing...
hmm
I'm writing some prototype code for it, to see how many values i really "need" per stat, after that i will decide how to handle it, it's not pseudocode but not real code either (i comment out modifier values)
Thanks to well written design documents (Ho-ho-ho) this wasn't hard, but it still took time since there are a lot of stats.
I've written it down in code-form now in a third party document. Now it's just... how... best... to... do... hmm...
If i were to divide it into classes i'd have
HP
Mana/Stamina
Resistances
Reputation
Hit/Crit Chances
But what about the others... Some can get away with just being one variable
One thing is for sure, there's no easy way to do this. If there is, i'm not seeing it. I "could" make a shitload of variables... but, it's a question of "should" and "Shouldn't"
Only way to find out is try i guess.
i think this looks ok in "HP"'s case
class
Health(object):
def __init__(self):
self.Base = 50 # + (Vit / 2) * PL
self.Bonus = 0
self.Max = self.Base + self.Bonus
self.Damage = 0 #Damage taken
self.Current = self.Max - self.Damage
def Calculate(self):
self.Current = self.Max - self.Damage
return self.Current
Don't You?
...
No
there's one fundamental flaw in there.. that's the "Base" value... i need to be able to calculate it again in the "Calculate" method...
I finally managed to start rolling this up. After all these hours i've finally built up some sort of system for this. Huff, puff... but by the time i had written all the stats except for sex related and resistances it was 3AM. And time for bed. Luckily, i've already written the base code for this system so the rest will be pretty much copy/paste work.
Cool part? much of this is pretty much "final" code, i.e. while testing this i'm seeing real values a player could possibly start with :)
A basic human would for example start with 65 HP. a Fae would start with 60, a garax would start with 75. These are numbers i've known for a while, but now my complicated chain of inherited classes is spitting out these numbers for me :D
To be honest it was almost painful to stop now!
Either way, this bettered be over by tonight, if i can't just relax on the 24th (tomorrow) and finish off contrast and read some of that nice Asylum book i've got afterwards, what kind of a jól will that be huh?
Hrmpfh.
Now how best to do stats... lets see yesterday i decided:
statname_base = base value + base_modifier values
statname_modifier = effects from items or spells + racials/perks
statname = statname_base + statname_modifier
Now it's about the statname_base
Should that be a class? should that be a method for each stat? or should it just be a variable?
Humm...
I'll start by just making it variables...
Wait...
Some stats are racial. Oh but these will be applied via a perk system (and thus i edited the above)
Now it's all pretty clear :D
Let's see.. .1 by 1
Maybe, i can use a list or dict rather than just a standard variable.
like
HP = {'base': 50, 'modifier': 0, 'max': base + modifier, 'current': max}
no wait... isn't that... perfect? testing testing testing...
hmm
I'm writing some prototype code for it, to see how many values i really "need" per stat, after that i will decide how to handle it, it's not pseudocode but not real code either (i comment out modifier values)
Thanks to well written design documents (Ho-ho-ho) this wasn't hard, but it still took time since there are a lot of stats.
I've written it down in code-form now in a third party document. Now it's just... how... best... to... do... hmm...
If i were to divide it into classes i'd have
HP
Mana/Stamina
Resistances
Reputation
Hit/Crit Chances
But what about the others... Some can get away with just being one variable
One thing is for sure, there's no easy way to do this. If there is, i'm not seeing it. I "could" make a shitload of variables... but, it's a question of "should" and "Shouldn't"
Only way to find out is try i guess.
i think this looks ok in "HP"'s case
class
Health(object):
def __init__(self):
self.Base = 50 # + (Vit / 2) * PL
self.Bonus = 0
self.Max = self.Base + self.Bonus
self.Damage = 0 #Damage taken
self.Current = self.Max - self.Damage
def Calculate(self):
self.Current = self.Max - self.Damage
return self.Current
Don't You?
...
No
there's one fundamental flaw in there.. that's the "Base" value... i need to be able to calculate it again in the "Calculate" method...
Hours later...
I finally managed to start rolling this up. After all these hours i've finally built up some sort of system for this. Huff, puff... but by the time i had written all the stats except for sex related and resistances it was 3AM. And time for bed. Luckily, i've already written the base code for this system so the rest will be pretty much copy/paste work.
Cool part? much of this is pretty much "final" code, i.e. while testing this i'm seeing real values a player could possibly start with :)
A basic human would for example start with 65 HP. a Fae would start with 60, a garax would start with 75. These are numbers i've known for a while, but now my complicated chain of inherited classes is spitting out these numbers for me :D
To be honest it was almost painful to stop now!
Sunday, 22 December 2013
Finish... finish... please?
Today i got a nice start, my Russian friend Kirill or "Ephemeron" gave me an upgrade to articy draft 2.X (and he already gave me the first articy draft) he's saved me like 140$, i think that earns him a nice place on the "Special Thanks" list for all the future games allright, since i would never have gotten this far without articy, and i couldn't really have afforded it without him, and this tool will indeed be used for all the next games.
So i've probably said three days in a row "I'll finish it today" or "Tomorrow" i'm gonna say it again now!
Somehow i got lead astray and wrote a code for going through the alphabet for different plan letters(this:
alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
for letter in alphabet:
print ("Plan %s\n" % letter.upper())
#don't ask why...)
Oh right, what i was doing... wait i got this great idea earlier today... what was it again.. argh... Something about attributes i think... or was it stats? it was some actual problem i had... and i solved it in my mind by adding one method to solve it... but i forgot to write it down. >_< what the hell was it!
Argh it was something important too! hopefully i'll remember as i start coding again.
Because of how specializations eacg have a class that defines their base value, (like base_attributes) will just be called "specname" and the total will be called "specname_total"
But now that i'm thinking abuot it, i could just give all the classes methods for doing this stuff :I
That would shorten the code of my modifiers class quite a bit and it gives me a bit better control. (so instead of specname_total i could have specname.total and specname.calculate_total() method).
I think this is a pretty good idea, i'll try it out for now.
Lets see first i need to make the modifier value and the total value "attributes"...
The best way to do it i think is including it as a part of the "Experience_System()" class...
Lets see
...
self.Modifier = Attribute_Total / 2 #Modifier
self.Bonus = 0 #Bonusess from items or buffs
self.Total = self.lvl + self.Modifier + self.Bonus #Total value (Base + Modifier + Bonus)
...
With this i can have self.lvl (Base value) self.Modifier (set individually per skill) and self.Bonus (Bonuses from magic or items... or debuffs)
...
Yes the above works out perfectly fine! then i can just set the modifier per-specialization and use the "Bonus" attribute for third-party bonuses (like Sword of Lockpicking or something.. hey that's a great idea, i should make that as a parody of the Keyblade) i know! i should make "Deadbeat" items or something similar as a tribute to Kamidori Alchemy Meister. Basically stuff that makes the game easier but discourages you by saying "Lol u use deadbeat item, you arr god damn pathetic n00b!"
And just as i got these excellent ideas and planend to add them to my design documents, articy draft failed me while trying to convert my project from version 1.5 to 2.X heh. Let's test the mettle of their support team! Luckily i have this blog to store the info until i can access my project again :)
so where was i.. Oh right.. modifiers... lets see, i should make a method for applying the modifiers to all the specializations. I alreaddy added the "total" value to the level check so every time the level of a skill or specialization is checked it also calculates the total.
"Why as a method?" You ask. Because if i automated it that would mean the modifiers in question all need to exist before i create the variables, and the stats aren't created until after the skills have been. Which means "Seduction" or "Slave Training" specializations would crash the whole thing :I
I've got this.
I'll use a try/except command (GOD DAMN IT now i needed to access my project files =_= i mad. And i'm too lazy to set up a trial version just to access it... or am i? It's sunday so today is a no business day DX no hope for support until tomorrow.)
so (after being delayed a bit by installing the articy trial on my laptop...)
even if "dominance" is an "oddity" it can't break the code since Social.leadership is always at least "1".
def Calculate_Stats():
self.arousal = 0
self.dominance = (self.Social.leadership + self.Attributes[0]) / 2
self.attractiveness = base_attractiveness + (self.Attributes[6] / 2)
try:
self.sexsta = (self.Sex.lvl + (self.Attributes[1]) / 2 #Sexual Endurance (should be "Vit or Will")
self.vcap = (self.height / 8) + (self.arousal * 0.05) + (self.Sex.intercourse / 10)#Vaginal Capacity
self.libido = (self.Attributes[5] / 2) + (self.Sex.lvl / 4) #Libido/Moral Str (Int/Will or Sex/Will)
self.sensitivity = (self.Attributes[1] + self.Sex.lvl) / 2 #Sensitivity/Mettle should be "Sex or Will"
self.etq = self.Social.lvl / 4 #Etiquette
except:
self.Calculate_Skills()
self.sexsta = (self.Sex.lvl + (self.Attributes[1]) / 2 #Sexual Endurance (should be "Vit or Will")
self.vcap = (self.height / 8) + (self.arousal * 0.05) + (self.Sex.intercourse / 10)#Vaginal Capacity
self.libido = (self.Attributes[5] / 2) + (self.Sex.lvl / 4) #Libido/Moral Str (Int/Will or Sex/Will)
self.sensitivity = (self.Attributes[1] + self.Sex.lvl) / 2 #Sensitivity/Mettle should be "Sex or Will"
self.etq = self.Social.lvl / 4 #Etiquette
def Calculate_Skills():
try:
self.Social.seduction.Modifier = self.attractiveness / 4
self.Slavery.train.Modifier = (self.dominance + self.Attributes[6]) / 6
except:
self.Calculate_Stats()
self.Social.seduction.Modifier = self.attractiveness / 4
self.Slavery.train.Modifier = (self.dominance + self.Attributes[6]) / 6
Basically that way if something fails because a value is missing, it'll try to calculate it instead of crashing. If it fails to calculate it then and only then it would crash :P
Yes. Good.
Now lets see
Skillname = Leveling system based "base" value.
Skillname.Modifier = Modifier (usually Attributes[x] / 2)
Skillname.Bonus = Bonuses from items/spells
Skillname.Total = Skillname + Skillname_Modifier + Skillname_Bonus
then
statname_base = racial + base_modifier values
statname_modifier = effects from items or spells
statname = statname_base + statname_modifier
Allright... this is it, this might be the final round, if not it's probably the second-last round. Hit me with your best shot python!! FOR FREEDOM!!!
Note: As soon as i started writing this i saw the code quickly spin out of control too much to be properly tested without a GUI interface. I'm writing this out with my guts here. I mean my code was intimidating before... by now it's just outright scary :S and also the biggest amount of code i have ever written for one program, this one program might in fact be more code than all the smaller programs i've written before over half a year or so D:
Like i said in the above, i'm writing this mostly with my guts, i may write a HUGE chunk of code based more on "instinct" than actual "certainty". The only thing i can do to test the code is to see if it runs without crashing :/ testing every single modifier would take half a day!
But the full version of Calculate_Skills() was successfully written on first try (syntax wise)
After writing it (in syntax only) i decided i had to create the stats.
I got caught up porting my 1.5 project to 2.x in articy so i didn't really continue writing the code.
So easy to slack when you're thinking "i have so little left to the finish line!" right?
I need to be careful of that.
I am sad to say this again but.. I will finish this tomorrow.
...
But tomorrow is 23rd... tomorrow i need to buy some presents D:
So i've probably said three days in a row "I'll finish it today" or "Tomorrow" i'm gonna say it again now!
Somehow i got lead astray and wrote a code for going through the alphabet for different plan letters(this:
alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
for letter in alphabet:
print ("Plan %s\n" % letter.upper())
#don't ask why...)
Oh right, what i was doing... wait i got this great idea earlier today... what was it again.. argh... Something about attributes i think... or was it stats? it was some actual problem i had... and i solved it in my mind by adding one method to solve it... but i forgot to write it down. >_< what the hell was it!
Argh it was something important too! hopefully i'll remember as i start coding again.
Because of how specializations eacg have a class that defines their base value, (like base_attributes) will just be called "specname" and the total will be called "specname_total"
But now that i'm thinking abuot it, i could just give all the classes methods for doing this stuff :I
That would shorten the code of my modifiers class quite a bit and it gives me a bit better control. (so instead of specname_total i could have specname.total and specname.calculate_total() method).
I think this is a pretty good idea, i'll try it out for now.
Lets see first i need to make the modifier value and the total value "attributes"...
The best way to do it i think is including it as a part of the "Experience_System()" class...
Lets see
...
self.Modifier = Attribute_Total / 2 #Modifier
self.Bonus = 0 #Bonusess from items or buffs
self.Total = self.lvl + self.Modifier + self.Bonus #Total value (Base + Modifier + Bonus)
...
With this i can have self.lvl (Base value) self.Modifier (set individually per skill) and self.Bonus (Bonuses from magic or items... or debuffs)
...
Yes the above works out perfectly fine! then i can just set the modifier per-specialization and use the "Bonus" attribute for third-party bonuses (like Sword of Lockpicking or something.. hey that's a great idea, i should make that as a parody of the Keyblade) i know! i should make "Deadbeat" items or something similar as a tribute to Kamidori Alchemy Meister. Basically stuff that makes the game easier but discourages you by saying "Lol u use deadbeat item, you arr god damn pathetic n00b!"
And just as i got these excellent ideas and planend to add them to my design documents, articy draft failed me while trying to convert my project from version 1.5 to 2.X heh. Let's test the mettle of their support team! Luckily i have this blog to store the info until i can access my project again :)
so where was i.. Oh right.. modifiers... lets see, i should make a method for applying the modifiers to all the specializations. I alreaddy added the "total" value to the level check so every time the level of a skill or specialization is checked it also calculates the total.
"Why as a method?" You ask. Because if i automated it that would mean the modifiers in question all need to exist before i create the variables, and the stats aren't created until after the skills have been. Which means "Seduction" or "Slave Training" specializations would crash the whole thing :I
I've got this.
I'll use a try/except command (GOD DAMN IT now i needed to access my project files =_= i mad. And i'm too lazy to set up a trial version just to access it... or am i? It's sunday so today is a no business day DX no hope for support until tomorrow.)
so (after being delayed a bit by installing the articy trial on my laptop...)
even if "dominance" is an "oddity" it can't break the code since Social.leadership is always at least "1".
def Calculate_Stats():
self.arousal = 0
self.dominance = (self.Social.leadership + self.Attributes[0]) / 2
self.attractiveness = base_attractiveness + (self.Attributes[6] / 2)
try:
self.sexsta = (self.Sex.lvl + (self.Attributes[1]) / 2 #Sexual Endurance (should be "Vit or Will")
self.vcap = (self.height / 8) + (self.arousal * 0.05) + (self.Sex.intercourse / 10)#Vaginal Capacity
self.libido = (self.Attributes[5] / 2) + (self.Sex.lvl / 4) #Libido/Moral Str (Int/Will or Sex/Will)
self.sensitivity = (self.Attributes[1] + self.Sex.lvl) / 2 #Sensitivity/Mettle should be "Sex or Will"
self.etq = self.Social.lvl / 4 #Etiquette
except:
self.Calculate_Skills()
self.sexsta = (self.Sex.lvl + (self.Attributes[1]) / 2 #Sexual Endurance (should be "Vit or Will")
self.vcap = (self.height / 8) + (self.arousal * 0.05) + (self.Sex.intercourse / 10)#Vaginal Capacity
self.libido = (self.Attributes[5] / 2) + (self.Sex.lvl / 4) #Libido/Moral Str (Int/Will or Sex/Will)
self.sensitivity = (self.Attributes[1] + self.Sex.lvl) / 2 #Sensitivity/Mettle should be "Sex or Will"
self.etq = self.Social.lvl / 4 #Etiquette
def Calculate_Skills():
try:
self.Social.seduction.Modifier = self.attractiveness / 4
self.Slavery.train.Modifier = (self.dominance + self.Attributes[6]) / 6
except:
self.Calculate_Stats()
self.Social.seduction.Modifier = self.attractiveness / 4
self.Slavery.train.Modifier = (self.dominance + self.Attributes[6]) / 6
Basically that way if something fails because a value is missing, it'll try to calculate it instead of crashing. If it fails to calculate it then and only then it would crash :P
Yes. Good.
Now lets see
Skillname = Leveling system based "base" value.
Skillname.Modifier = Modifier (usually Attributes[x] / 2)
Skillname.Bonus = Bonuses from items/spells
Skillname.Total = Skillname + Skillname_Modifier + Skillname_Bonus
then
statname_base = racial + base_modifier values
statname_modifier = effects from items or spells
statname = statname_base + statname_modifier
Allright... this is it, this might be the final round, if not it's probably the second-last round. Hit me with your best shot python!! FOR FREEDOM!!!
Note: As soon as i started writing this i saw the code quickly spin out of control too much to be properly tested without a GUI interface. I'm writing this out with my guts here. I mean my code was intimidating before... by now it's just outright scary :S and also the biggest amount of code i have ever written for one program, this one program might in fact be more code than all the smaller programs i've written before over half a year or so D:
Like i said in the above, i'm writing this mostly with my guts, i may write a HUGE chunk of code based more on "instinct" than actual "certainty". The only thing i can do to test the code is to see if it runs without crashing :/ testing every single modifier would take half a day!
But the full version of Calculate_Skills() was successfully written on first try (syntax wise)
After writing it (in syntax only) i decided i had to create the stats.
I got caught up porting my 1.5 project to 2.x in articy so i didn't really continue writing the code.
So easy to slack when you're thinking "i have so little left to the finish line!" right?
I need to be careful of that.
I am sad to say this again but.. I will finish this tomorrow.
...
But tomorrow is 23rd... tomorrow i need to buy some presents D:
Saturday, 21 December 2013
Slow Start
I had a bit of a slow start today, but while i was sleeping someone tossed me a nice sample code for an RPG combat system. I learned a ton from it.
But at the start of today i had a rough time getting my hands on breakfast. And when i got my hands on it i all of a sudden got stuck watching Nekomonogatari (which is luckily only 4 episodes!) Can't blame myself on it either, it's the first good anime i've seen for a long time D: (i've been loaded up with nothing but fanservice focused animes lately, it's been driving me nuts!) Still managed to stop myself after 2 eps. I'll finish it over dinner or something.
Humans are really interesting creatures, i just stopped to wonder... There are tons of people in this world in a similar situation as mine... But for some reason i think at the same time i'm extremely different from all of them. Certain characteristics that make me unique, certain that people around me consider bad, others that they consider good, and same some that i think are good, and some that i think are bad... But i stopped to wonder "is it really bad?" i mean... The majority of people in my situation (i.e. Hikikomori NEETs...) are depressed, and many even to the point of commiting suicide. I'm the exact opposite, i feel perfectly fine, in fact over such a long period of time I've never felt better in my life. This is by choice, not by coincidence. I am living a life like this and it would take serious effort to change it, and i'm not sure i even want it to change... So instead of sulking over how my life sucks i suck it up and look at the bright side of things. "oh this is bad" "but this and that and that i get in return so it's worth it".
You can never get the best of everything. But you can always try to look past the bad things about everything. To see the beauty in rot and decay...
But what i was really wondering is one characteristic. Everytime i eat, i choose to do so in front of a computer if possible, and without exception watching something. It can be anime, it can be a movie... Hell i could make do with a youtube video, this is a habit. How many other people have this habit? surely it isn't rare right? I can imagine rich or even famous people doing this, it wouldn't surprise me.
I like to eat in privacy but food by itself is kind of "a dull experience" so i add some entertainment to it. Now that i think of it didn't kings do that in ages past? Hired jesters to entertain them as they ate and such? Hmm.
The good doesn't always outweigh the bad, but that doesn't mean you can't just look past the bad and focus on the good in every situation. Humans can live with and accept "anything" if they just try, this is knowledge i should not have, and should avoid sharing. (Because it's possible to force people to do that. Since i know how that can be done, brainwashings and such, it will play a role in my slavery mechanics, but i'll need to make it "un-obvious" and "un-real" enough so people can't actually learn anything from it... After all, making this world even worse is not one of my goals.)
Yes, i think a lot about things like this.
But now i finally started to realize, i need progress. My progress has been "halted" for long enough. I said i would finish this today, i know i can finish it today... Get the fuck on with it =_=
Instead of progressing, i have some fresh ideas for coding after that code sample i was given i talked about earlier, i am going to review all the code i've written so far and see if i can't improve it with these fresh ideas from a much more active programmer than myself.
Lets see... Here's what i've learned to break it down.
I learned that variables that aren't defined with a reference (e.g. self.variable) are shared between class instances.
I can define variables as methods howere, this means i will not need to use the .self reference for them between instances. (I.e. they aren't shared between instances) so for example i can define "hp = 100" as a method instead of as part of "__init__" or another method, then i can change that "hp" value without using "self.hp" and just type "hp" inside of the class. This doesn't stop me from using self.hp if i want to though. If i'm inside a(nother) method in fact i need to use "self."
Variables defined under methods without the self. reference(i can use anything, but self is just the most common choice, i think i might use local. though at some point, because "local" and "global") are shared between instances of the class. (instance is: variable = class())
I figured out that in "?.stuff = X" i can use a variable to define what "?" is. (so for example:
def somefunction(self, target):
target.stuff += 5
instance = class()
instance.somefunction(otherinstance)
)
^ that was valuable information and what i was asking for when i got the code sample.
self. is actually applied accross the instance. So placing self.method in the class is the same as typing instance.method after an instance has been made.
I can create a class, then use it directly in another class like so:
class class1(object)...
class class2(class1)...
--
In other words, i can use a class as a pre-phase to the instance. That is, it's kind of like a sub-class, but it means i don't have to define all the things underneath the original class. So i can for example select racials in class1, but calculate in class2.... Oh my god, genius... that was exactly what i needed to find out!! all my problems have gone away now! I can finish this!
So i understand a lot more about classes now.
This is great. Sure this is mostly just basic information i should've learned already. But... I didn't, and now i have (after looking at the code for long enough *nods*)
Now it's just how to use this newfound knowledge of mine. Just like i talked about "chaining" the classes before, what i just learned tought me an efficient method to do that!
Before i learned this, i would've tried to call upon the classes inside the other classes instead of just continuing the first class in the second.
I want to first start by making a different starting point for "player" and "npc"...
But wait... I don't need to do that O_O I can just make a method in the NPC base that i can call if the variable in question is the player.
I've finally rewritten the whole start of my code, that is race selction, base attributes and racial values. And i've linked certain classes together in a linear fashion so say... skills class willl pick up the base class and then stats will pick up skills (and base with it) and then this will continue until modifiers and everything are all in one big (ugly) whirlpool inside one variable... huff.. puff..
I'm on the downwards slope now, but look at the time! dinner time! nekomonogatari!
...
Downward slope indeed, i've improved my code a whole lot although i have not actually continued it, i've made one modifier work like i want it to (just for testing purposes) while i was modifying/updating the rest of the code.
For the first time ever i am now (genuinely) worrying if code i've written is optimized enough. There's this one single method that i've got that will tell me all about it after i've written some more. But what it does is update/check the levels of everything (specializations, skills, sub levels, power level) all in one command. That is ->A LOT<- of things to do at a time, at least more than i've ever asked any program of mine to do. I haven't tested it yet though... i hope it can work. But after i test it, if i am satisfied with the performance, i'll have to test it on a low-end computer too (just to be sure it's not my 8 logical core's fault that things work) or well.. i could just assign only 1 of it's cores to the process..
I already thought of one pretty good way to optimize it though... But without it (my computer, even on only 1/8 cores) did it all in like a millisecond O_O still, a bit of optimization never hurt anybody (i think).
This optimization (in question) should boost the speed quite a bit. as it turns a whole while loop into 1 variable (That is, the while loop is already run earlier in the code, so i'd be running it twice for every-single-specialization in the code. but despited doing that it still works in a millisecond! processors are amazing!)
and... i'm... done..
Yes! I (oh so very much) complicated my cote a lot, which was the price i paid for simplifying it's use (a lot). Tradeoff is a tradeoff, and what's better is that i even optimized it, not to say i couldn't have optimized it better (i could remove a few lines not needed, for example "return ..." lines that aren't in use anymore but i kept around just in case) but this code is starting to look pretty fucking good. I'm honestly surprised, i did not expect it to turn out this well when i started (but well.. look at how long it's been taking, so it god damn bettered look good and work well damnit!)
Better news is that writing this (up till this point) has forced me to remember all of my dormant programming skills that i haven't used for a long time (like half a year or more) meaning from this point onward everything new i learn will actually be "new" and now i have a more clear access to my own personal resources than before (since i have re-awakened :3 )
At this (wonderful) point, i still have an hour or 2 left to work, so lets see how far i'll go with this...
Like i said, i'm on a downwards slope which means that the rest will be easy, but the one thing i'm wondering though is that i actually need 2 methods for stats calculations.. or do i? i was thinking i need 1 for the attributes/skills modifiers, and another for taking in items, and buffs and stuff.. but no... no i don't need another class for it, just another variable is all.
So i need "real" = "base" + "modifiers" + "items/buffs"
and for some stats like HP i need to set up certain values like
"base" (base hp with no items)
"base + modifiers" (max hp with items/buffs)
"current" (max hp - damage taken)
Oh right, i almost forgot... and then i need to make the modifiers for the skills too @_@ yeah, downward slope maybe, but i think "easy" might be a bit of an overstatement.
So let's see. the real problem is... what order do i do it in...
Ok, i'm gonna place the stats, and the modifier system in the same class (since stats are mostly modifier based from the start anyways) and i'll have one sub-class named "oddities" (or something similar) where i unfuck the system in context with skills that rely on stats and stats that rely on skills.
Yes. Something like that.
First step: sort out the oddities
Sexual Endurance(Stat) depends on Sex (Major Skill)
Vaginal Capacity(Stat) depends on Intercourse (Specialization)
Libido & Sensitivity (Stats) depend on Sex (Major Skill)
Etiquette (Stat) depends on Social (Major Skill)
Dominance (Stat) depends on Leadership (Specialization)
Seduction (Specialization) depends on Attractiveness (Stat)
(Slave)Training (Specialzation) depends on Dominance (Stat)
Speed (Stat) depends on Free Carrying Capacity (Stat) <- An oddity among oddities.
Hit & Crit Chances (Stats) depend on the weapon/magic skill <- A complication rather than oddity
Ok,i now that i have that down... I can form a system.
Lets see heres what i need to code
Variables: Base Value(Done), Modifier bonuses(not done), total/final value(not done)
Modifiers: Attributes (Perks for example, i also need a method for refreshing attribute values after.)
Modifiers: Skills (This is in most cases just attributes.)
Modifiers: Stats (This is in most cases attributes or power level)
I should start by writing the modifiers for the skills... Then in the case of Seduction and Slave Training i will have to think of a solution.
The rest of the problem solves itself already really. Hit and Crit chances should be a class or method of their own since these will be a bit more complicated than just numbers. (Dex, Skill, Enemy values are all modifiers for them...)
But before i write the modifiers for the skills, i need to write them for the attributes. Because attributes (in the end) affect everything.
I updated my Games list on this blog just now. I figured since i canceled Yrja's Torment i should well... Make it more official.
So right. Attributes!
First i changed my "attributes" variable to "base_attributes" variable...
I started this by finishing off the "Attributes" they are now finished, ready for use!! (awesome right?) they have a "Base" value, a "Modifier" value and a "Total" value, and i've got a method which prints them all together! (mostly for testing/debugging purposes, but also because i want to display all these values in-game eventually) :)
By the time i was done though... it was 3AM, but the rest really will be easy, i've made a bit of a system you see :) (The Base/Modifier/Total system that is. It will work for the stats and skills just as well as it did the attributes and when that's done i think i'm actually done with this code. It'll only take three cups of coffee to finish this off!)
I would've finished it today if i hadn't slacked as much as i did and spent so much time "thinking" instead of just "coding" and seeing how things turn out :P
But at the start of today i had a rough time getting my hands on breakfast. And when i got my hands on it i all of a sudden got stuck watching Nekomonogatari (which is luckily only 4 episodes!) Can't blame myself on it either, it's the first good anime i've seen for a long time D: (i've been loaded up with nothing but fanservice focused animes lately, it's been driving me nuts!) Still managed to stop myself after 2 eps. I'll finish it over dinner or something.
Humans are really interesting creatures, i just stopped to wonder... There are tons of people in this world in a similar situation as mine... But for some reason i think at the same time i'm extremely different from all of them. Certain characteristics that make me unique, certain that people around me consider bad, others that they consider good, and same some that i think are good, and some that i think are bad... But i stopped to wonder "is it really bad?" i mean... The majority of people in my situation (i.e. Hikikomori NEETs...) are depressed, and many even to the point of commiting suicide. I'm the exact opposite, i feel perfectly fine, in fact over such a long period of time I've never felt better in my life. This is by choice, not by coincidence. I am living a life like this and it would take serious effort to change it, and i'm not sure i even want it to change... So instead of sulking over how my life sucks i suck it up and look at the bright side of things. "oh this is bad" "but this and that and that i get in return so it's worth it".
You can never get the best of everything. But you can always try to look past the bad things about everything. To see the beauty in rot and decay...
But what i was really wondering is one characteristic. Everytime i eat, i choose to do so in front of a computer if possible, and without exception watching something. It can be anime, it can be a movie... Hell i could make do with a youtube video, this is a habit. How many other people have this habit? surely it isn't rare right? I can imagine rich or even famous people doing this, it wouldn't surprise me.
I like to eat in privacy but food by itself is kind of "a dull experience" so i add some entertainment to it. Now that i think of it didn't kings do that in ages past? Hired jesters to entertain them as they ate and such? Hmm.
The good doesn't always outweigh the bad, but that doesn't mean you can't just look past the bad and focus on the good in every situation. Humans can live with and accept "anything" if they just try, this is knowledge i should not have, and should avoid sharing. (Because it's possible to force people to do that. Since i know how that can be done, brainwashings and such, it will play a role in my slavery mechanics, but i'll need to make it "un-obvious" and "un-real" enough so people can't actually learn anything from it... After all, making this world even worse is not one of my goals.)
Yes, i think a lot about things like this.
But now i finally started to realize, i need progress. My progress has been "halted" for long enough. I said i would finish this today, i know i can finish it today... Get the fuck on with it =_=
Instead of progressing, i have some fresh ideas for coding after that code sample i was given i talked about earlier, i am going to review all the code i've written so far and see if i can't improve it with these fresh ideas from a much more active programmer than myself.
Lets see... Here's what i've learned to break it down.
I learned that variables that aren't defined with a reference (e.g. self.variable) are shared between class instances.
I can define variables as methods howere, this means i will not need to use the .self reference for them between instances. (I.e. they aren't shared between instances) so for example i can define "hp = 100" as a method instead of as part of "__init__" or another method, then i can change that "hp" value without using "self.hp" and just type "hp" inside of the class. This doesn't stop me from using self.hp if i want to though. If i'm inside a(nother) method in fact i need to use "self."
Variables defined under methods without the self. reference(i can use anything, but self is just the most common choice, i think i might use local. though at some point, because "local" and "global") are shared between instances of the class. (instance is: variable = class())
I figured out that in "?.stuff = X" i can use a variable to define what "?" is. (so for example:
def somefunction(self, target):
target.stuff += 5
instance = class()
instance.somefunction(otherinstance)
)
^ that was valuable information and what i was asking for when i got the code sample.
self. is actually applied accross the instance. So placing self.method in the class is the same as typing instance.method after an instance has been made.
I can create a class, then use it directly in another class like so:
class class1(object)...
class class2(class1)...
--
In other words, i can use a class as a pre-phase to the instance. That is, it's kind of like a sub-class, but it means i don't have to define all the things underneath the original class. So i can for example select racials in class1, but calculate in class2.... Oh my god, genius... that was exactly what i needed to find out!! all my problems have gone away now! I can finish this!
So i understand a lot more about classes now.
This is great. Sure this is mostly just basic information i should've learned already. But... I didn't, and now i have (after looking at the code for long enough *nods*)
Now it's just how to use this newfound knowledge of mine. Just like i talked about "chaining" the classes before, what i just learned tought me an efficient method to do that!
Before i learned this, i would've tried to call upon the classes inside the other classes instead of just continuing the first class in the second.
I want to first start by making a different starting point for "player" and "npc"...
But wait... I don't need to do that O_O I can just make a method in the NPC base that i can call if the variable in question is the player.
A while later...
I've finally rewritten the whole start of my code, that is race selction, base attributes and racial values. And i've linked certain classes together in a linear fashion so say... skills class willl pick up the base class and then stats will pick up skills (and base with it) and then this will continue until modifiers and everything are all in one big (ugly) whirlpool inside one variable... huff.. puff..
I'm on the downwards slope now, but look at the time! dinner time! nekomonogatari!
...
Hours later...
Downward slope indeed, i've improved my code a whole lot although i have not actually continued it, i've made one modifier work like i want it to (just for testing purposes) while i was modifying/updating the rest of the code.
For the first time ever i am now (genuinely) worrying if code i've written is optimized enough. There's this one single method that i've got that will tell me all about it after i've written some more. But what it does is update/check the levels of everything (specializations, skills, sub levels, power level) all in one command. That is ->A LOT<- of things to do at a time, at least more than i've ever asked any program of mine to do. I haven't tested it yet though... i hope it can work. But after i test it, if i am satisfied with the performance, i'll have to test it on a low-end computer too (just to be sure it's not my 8 logical core's fault that things work) or well.. i could just assign only 1 of it's cores to the process..
I already thought of one pretty good way to optimize it though... But without it (my computer, even on only 1/8 cores) did it all in like a millisecond O_O still, a bit of optimization never hurt anybody (i think).
This optimization (in question) should boost the speed quite a bit. as it turns a whole while loop into 1 variable (That is, the while loop is already run earlier in the code, so i'd be running it twice for every-single-specialization in the code. but despited doing that it still works in a millisecond! processors are amazing!)
and... i'm... done..
Yes! I (oh so very much) complicated my cote a lot, which was the price i paid for simplifying it's use (a lot). Tradeoff is a tradeoff, and what's better is that i even optimized it, not to say i couldn't have optimized it better (i could remove a few lines not needed, for example "return ..." lines that aren't in use anymore but i kept around just in case) but this code is starting to look pretty fucking good. I'm honestly surprised, i did not expect it to turn out this well when i started (but well.. look at how long it's been taking, so it god damn bettered look good and work well damnit!)
Better news is that writing this (up till this point) has forced me to remember all of my dormant programming skills that i haven't used for a long time (like half a year or more) meaning from this point onward everything new i learn will actually be "new" and now i have a more clear access to my own personal resources than before (since i have re-awakened :3 )
At this (wonderful) point, i still have an hour or 2 left to work, so lets see how far i'll go with this...
Like i said, i'm on a downwards slope which means that the rest will be easy, but the one thing i'm wondering though is that i actually need 2 methods for stats calculations.. or do i? i was thinking i need 1 for the attributes/skills modifiers, and another for taking in items, and buffs and stuff.. but no... no i don't need another class for it, just another variable is all.
So i need "real" = "base" + "modifiers" + "items/buffs"
and for some stats like HP i need to set up certain values like
"base" (base hp with no items)
"base + modifiers" (max hp with items/buffs)
"current" (max hp - damage taken)
Oh right, i almost forgot... and then i need to make the modifiers for the skills too @_@ yeah, downward slope maybe, but i think "easy" might be a bit of an overstatement.
So let's see. the real problem is... what order do i do it in...
Ok, i'm gonna place the stats, and the modifier system in the same class (since stats are mostly modifier based from the start anyways) and i'll have one sub-class named "oddities" (or something similar) where i unfuck the system in context with skills that rely on stats and stats that rely on skills.
Yes. Something like that.
First step: sort out the oddities
Sexual Endurance(Stat) depends on Sex (Major Skill)
Vaginal Capacity(Stat) depends on Intercourse (Specialization)
Libido & Sensitivity (Stats) depend on Sex (Major Skill)
Etiquette (Stat) depends on Social (Major Skill)
Dominance (Stat) depends on Leadership (Specialization)
Seduction (Specialization) depends on Attractiveness (Stat)
(Slave)Training (Specialzation) depends on Dominance (Stat)
Speed (Stat) depends on Free Carrying Capacity (Stat) <- An oddity among oddities.
Hit & Crit Chances (Stats) depend on the weapon/magic skill <- A complication rather than oddity
Ok,i now that i have that down... I can form a system.
Lets see heres what i need to code
Variables: Base Value(Done), Modifier bonuses(not done), total/final value(not done)
Modifiers: Attributes (Perks for example, i also need a method for refreshing attribute values after.)
Modifiers: Skills (This is in most cases just attributes.)
Modifiers: Stats (This is in most cases attributes or power level)
I should start by writing the modifiers for the skills... Then in the case of Seduction and Slave Training i will have to think of a solution.
The rest of the problem solves itself already really. Hit and Crit chances should be a class or method of their own since these will be a bit more complicated than just numbers. (Dex, Skill, Enemy values are all modifiers for them...)
But before i write the modifiers for the skills, i need to write them for the attributes. Because attributes (in the end) affect everything.
I updated my Games list on this blog just now. I figured since i canceled Yrja's Torment i should well... Make it more official.
So right. Attributes!
First i changed my "attributes" variable to "base_attributes" variable...
I started this by finishing off the "Attributes" they are now finished, ready for use!! (awesome right?) they have a "Base" value, a "Modifier" value and a "Total" value, and i've got a method which prints them all together! (mostly for testing/debugging purposes, but also because i want to display all these values in-game eventually) :)
By the time i was done though... it was 3AM, but the rest really will be easy, i've made a bit of a system you see :) (The Base/Modifier/Total system that is. It will work for the stats and skills just as well as it did the attributes and when that's done i think i'm actually done with this code. It'll only take three cups of coffee to finish this off!)
I would've finished it today if i hadn't slacked as much as i did and spent so much time "thinking" instead of just "coding" and seeing how things turn out :P
Friday, 20 December 2013
Complicated but works!
By the time i dropped work yesterday i had a system in place, all i had left to do was testing it... I tested it, and i thought that it was wrong at first, but then i realized i forgot about certain variables when i did the math on my end, so it was all right all along!!
What i did was that i combined all the skills into one class and created the power/combat/creative/social level system inside of that class too. Should i have all the skills as a sub-class of this one instead? Possibly. But i like this the way it is now, it's complicated (for sure) but it's usable!
With that the actual leveling part of the leveling system is WORKING!!!
Now i'll want to refine the uh... work i had done before.
Attributes are fine as they are.
Stats................
....
Nope i'm not satisfied here. It's just 20some variables. I should turn them all into one class... probably... or function? no no it must be class..
I'm thinking i can probably set the base value and modifiers all in the same class maybe... no right, there was a reason why i needed to set the base value first and then place modifiers separately...
Come on, i'm so fucking close here...
Aha, i don't need to set the base values for the stats until the modifier code kicks in, in other words i can set the base value and the modifiers at the same time, as long as the stats and their modifiers aree earlier in the code than the modifiers for the skills! i think!
...
This is a genuine pain in the ass. So i allowed myself to get caught up in talking to a Taiwanese friend of mine for a while.
..
After thinking for a while, i see now that the stat's system while incredibly simple is also a bit complicated, the code for it doesn't need to be all too complicated since it doesn't have an expeience or hierarchy system like the skills do. But i seem to be headed for making it roughly as complicated as the skills system which i absolutely mustn't do!
So i finally hit an idea for how to do it in a similar way as the skills, but much more simple. (Keeping it all in one class with no subclasses)
hnnng~ i need to finish this system but i want to play some games so badly...
Well, i had a friend of mine who is a bit more skilled at programming than me check my code out to see if i was just being stupid, turns out he thought my code was neat and logical :O
That was motivating!!!
So even if i'm a noob, i'm not romaing blindly even if i could have been (i.e. i wasn't sure i knew what i was doing, but it felt like it)
Time to finish this once and for all!
...
And then it suddenly hit me. I shouldn't make Yrja's Torment. Not into a full game. I mean, i want to... but the risks involved outweigh the gains. I'm thinking now that i'm (already almost done) developing the leveling system, i actually can just start with Riye's Game.
I'm thinking i should do that and then in "Unchained" i should just make Yrja's Torment a book, or "extra". The thing is that it's content is just way too fucking hardcore to release it as the main story in a game, a lot of people wouldn't understand it, some of them would think it's fap material, and the others would just think i'm a twisted evil entity that should burn at the stake for creating something so horrible.
It's not the kind of game i could (ever) show to my family and probably not friends. It's too personal. (I don't mind showing them games with sexual content, at all... but Yrja's Torment has grotesque child abuse, torture and all sorts of stuff like that. I think it's way too psychologically heavy and not too many people actually could play it.)
So with this... I will cancel the "Yrja's Torment" game. But not the story. The story is there, and it's partway finished, enough of it has been decided to know where Riye's Game will start (i.e. where it splits off from Yrja's Torment)
What i'm saying is Yrja's Torment is canceled as a game. But it will still be made as a part of the storyline for the game series and available either through a book, extra or a sort of.. mini-game, i.e. i will shorten it.
This was not an easy decision to make, but i think it's a really good decision. The real question is though will i jump straight into Riye's Game, or will i start with the Undead game i had thought of?
This decision when it will be made is probably going to depend on what resources i have available at the time. For example my current artist is great for drawing moe-loli art which is fitting for Riye's Game, but not at all for the undead one. However said artist doesn't work very fast, and might (in the end) be too slow to draw art for a game that's already been designed and largely coded. This all remains to be seen but chances are i'll need a new artist for drawing the art in the actual games that can work faster and has more free time on his/her hands. This all remains to be seen, i imagine since it's his area of expertise if i'd ask him to draw loli-moe characters instead of adult-dark charcters he'd be doing it much faster, just like me he's learning as he goes which is cool. I'm really hoping that i'll be able to use my current artist at least throughout the first game, but i just can't know for sure yet since we haven't worked together long enough for me to know.
I feel that i'm doing the right thing. And handling it this way really relieves me from a lot of worry, by doing this i removed a large chunk of the percentage chance of my entire series "failing".
My games are unique enough. Although what i wanted with Yrja's Torment was to show the player that extreme mental traumas suffered at a young age can be overcome with the right attitude and some massive amounts of mental strength (motivational). I can probably do that in a less extreme/hardcore way or without making it the main focus of a game. The problem with me is that my own experiences are extreme and it's harder for me to scale them down than it is to scale them up.
Some of my games will be hardcore, and some will go into extremes, but it's obvious that i need to be careful because i could bring the world against me (and possibly the law too) if i go too far in some cases.
But fear not, i will have some "guro" content in the games eventually. And the final game will have no holds barred in that regard, you can seriously kill people via rape (which tunes your alignment meter to +100 towards evil, this means that if you'd do it from a neutral state you'd go from neutral to 100% evil)
I.e. i will go into extreme sexual content (if NSFW mod/patch is on) and i will allow the player to do a lot of immoral stuff, but every action will have consequences and the more violent your actions the more severe your punishment. Think of it as karma.
I got interrupted while i was working hard because my friends figured movie night would be a good idea right now, but the whole time i kept thinking about my current problem and i might have found a solution, i've been trying to make severeal small classes, then combine them all in a third class. But instead, i could chain them, so i could make one class, link it to the second class and then link the second and third in a fourth class and so on. So linear instead of indirect(?).. no i've got it, Digital instead of Analogue! *Makes proud face*
Anyways that's it for today sadly, i know however that i'll be finishing this tomorrow >_<
What i did was that i combined all the skills into one class and created the power/combat/creative/social level system inside of that class too. Should i have all the skills as a sub-class of this one instead? Possibly. But i like this the way it is now, it's complicated (for sure) but it's usable!
With that the actual leveling part of the leveling system is WORKING!!!
Now i'll want to refine the uh... work i had done before.
Attributes are fine as they are.
Stats................
....
Nope i'm not satisfied here. It's just 20some variables. I should turn them all into one class... probably... or function? no no it must be class..
I'm thinking i can probably set the base value and modifiers all in the same class maybe... no right, there was a reason why i needed to set the base value first and then place modifiers separately...
Come on, i'm so fucking close here...
Aha, i don't need to set the base values for the stats until the modifier code kicks in, in other words i can set the base value and the modifiers at the same time, as long as the stats and their modifiers aree earlier in the code than the modifiers for the skills! i think!
...
This is a genuine pain in the ass. So i allowed myself to get caught up in talking to a Taiwanese friend of mine for a while.
..
After thinking for a while, i see now that the stat's system while incredibly simple is also a bit complicated, the code for it doesn't need to be all too complicated since it doesn't have an expeience or hierarchy system like the skills do. But i seem to be headed for making it roughly as complicated as the skills system which i absolutely mustn't do!
So i finally hit an idea for how to do it in a similar way as the skills, but much more simple. (Keeping it all in one class with no subclasses)
hnnng~ i need to finish this system but i want to play some games so badly...
Well, i had a friend of mine who is a bit more skilled at programming than me check my code out to see if i was just being stupid, turns out he thought my code was neat and logical :O
That was motivating!!!
So even if i'm a noob, i'm not romaing blindly even if i could have been (i.e. i wasn't sure i knew what i was doing, but it felt like it)
Time to finish this once and for all!
...
And then it suddenly hit me. I shouldn't make Yrja's Torment. Not into a full game. I mean, i want to... but the risks involved outweigh the gains. I'm thinking now that i'm (already almost done) developing the leveling system, i actually can just start with Riye's Game.
I'm thinking i should do that and then in "Unchained" i should just make Yrja's Torment a book, or "extra". The thing is that it's content is just way too fucking hardcore to release it as the main story in a game, a lot of people wouldn't understand it, some of them would think it's fap material, and the others would just think i'm a twisted evil entity that should burn at the stake for creating something so horrible.
It's not the kind of game i could (ever) show to my family and probably not friends. It's too personal. (I don't mind showing them games with sexual content, at all... but Yrja's Torment has grotesque child abuse, torture and all sorts of stuff like that. I think it's way too psychologically heavy and not too many people actually could play it.)
So with this... I will cancel the "Yrja's Torment" game. But not the story. The story is there, and it's partway finished, enough of it has been decided to know where Riye's Game will start (i.e. where it splits off from Yrja's Torment)
What i'm saying is Yrja's Torment is canceled as a game. But it will still be made as a part of the storyline for the game series and available either through a book, extra or a sort of.. mini-game, i.e. i will shorten it.
This was not an easy decision to make, but i think it's a really good decision. The real question is though will i jump straight into Riye's Game, or will i start with the Undead game i had thought of?
This decision when it will be made is probably going to depend on what resources i have available at the time. For example my current artist is great for drawing moe-loli art which is fitting for Riye's Game, but not at all for the undead one. However said artist doesn't work very fast, and might (in the end) be too slow to draw art for a game that's already been designed and largely coded. This all remains to be seen but chances are i'll need a new artist for drawing the art in the actual games that can work faster and has more free time on his/her hands. This all remains to be seen, i imagine since it's his area of expertise if i'd ask him to draw loli-moe characters instead of adult-dark charcters he'd be doing it much faster, just like me he's learning as he goes which is cool. I'm really hoping that i'll be able to use my current artist at least throughout the first game, but i just can't know for sure yet since we haven't worked together long enough for me to know.
I feel that i'm doing the right thing. And handling it this way really relieves me from a lot of worry, by doing this i removed a large chunk of the percentage chance of my entire series "failing".
My games are unique enough. Although what i wanted with Yrja's Torment was to show the player that extreme mental traumas suffered at a young age can be overcome with the right attitude and some massive amounts of mental strength (motivational). I can probably do that in a less extreme/hardcore way or without making it the main focus of a game. The problem with me is that my own experiences are extreme and it's harder for me to scale them down than it is to scale them up.
Some of my games will be hardcore, and some will go into extremes, but it's obvious that i need to be careful because i could bring the world against me (and possibly the law too) if i go too far in some cases.
But fear not, i will have some "guro" content in the games eventually. And the final game will have no holds barred in that regard, you can seriously kill people via rape (which tunes your alignment meter to +100 towards evil, this means that if you'd do it from a neutral state you'd go from neutral to 100% evil)
I.e. i will go into extreme sexual content (if NSFW mod/patch is on) and i will allow the player to do a lot of immoral stuff, but every action will have consequences and the more violent your actions the more severe your punishment. Think of it as karma.
I got interrupted while i was working hard because my friends figured movie night would be a good idea right now, but the whole time i kept thinking about my current problem and i might have found a solution, i've been trying to make severeal small classes, then combine them all in a third class. But instead, i could chain them, so i could make one class, link it to the second class and then link the second and third in a fourth class and so on. So linear instead of indirect(?).. no i've got it, Digital instead of Analogue! *Makes proud face*
Anyways that's it for today sadly, i know however that i'll be finishing this tomorrow >_<
Thursday, 19 December 2013
Slackity Slack
Slept 10 hours! win! Started today with a psychologist session, these always boost my confidence in one way or another. Psychologists are cool, my last psychologist looked like a werewolf you know! :O
"Look at me still talking when there's science to do..." yes GLaDOS, i'm talking too much here =(
Oh yeah and The Asylum book arrived yesterday, i need to finish it already... maybe tomorrow? hmm... I know... I'll finish it after i'm satisfied with this leveling system i'm working on.
Back to work nao!
I'm not sure i'm satisfied with the way i'm doing things now in the long term, i want the process to be as automated as possible... b ut we'll have to see when the time comes.
One thing is for sure though, 1 variable is better than 9 variables.
3 variables are better than 30-40 variables... right? Yes i thought so. I'll have to make this code a bit more beautiful, but after I've written it, for now all i want from it is to work.
Wait no maybe i've got it?
What if i just use a class instead of several variables? :O
For example "entity" class which combines all the other classes. Then i make variable "player = entity()" which would add all the attributes, skills and stats together into that one variable... Yes! i think that's a great solution, that way i can have many variables inside of one variable! Magnificent!
I slacked a lot today and i should've finished this python (prototype) code today. But i didn't. However as i got tired i figured i couldn't allow myself to go to bed until i finish at least the skills system. And so...
I finished that part, tomorrow is for applying modifiers and then i think... i'll mostly be done.
Hmm....
But wait there's one complication i have to solve first, and that is the actual leveling system, that is the "power" "combat" "creative" and "social" levels, automatically leveling up and giving attribute/perk points to the player. i knew i was overlooking something :)
Well that's a simple matter! i'll just create a variable that stores the player's level, then when the calculated level is higher than that number, add 1 to that number and add attribute/perk points!
And i called that a complication ^_^
"Look at me still talking when there's science to do..." yes GLaDOS, i'm talking too much here =(
Oh yeah and The Asylum book arrived yesterday, i need to finish it already... maybe tomorrow? hmm... I know... I'll finish it after i'm satisfied with this leveling system i'm working on.
Back to work nao!
I'm not sure i'm satisfied with the way i'm doing things now in the long term, i want the process to be as automated as possible... b ut we'll have to see when the time comes.
One thing is for sure though, 1 variable is better than 9 variables.
3 variables are better than 30-40 variables... right? Yes i thought so. I'll have to make this code a bit more beautiful, but after I've written it, for now all i want from it is to work.
Wait no maybe i've got it?
What if i just use a class instead of several variables? :O
For example "entity" class which combines all the other classes. Then i make variable "player = entity()" which would add all the attributes, skills and stats together into that one variable... Yes! i think that's a great solution, that way i can have many variables inside of one variable! Magnificent!
I slacked a lot today and i should've finished this python (prototype) code today. But i didn't. However as i got tired i figured i couldn't allow myself to go to bed until i finish at least the skills system. And so...
I finished that part, tomorrow is for applying modifiers and then i think... i'll mostly be done.
Hmm....
But wait there's one complication i have to solve first, and that is the actual leveling system, that is the "power" "combat" "creative" and "social" levels, automatically leveling up and giving attribute/perk points to the player. i knew i was overlooking something :)
Well that's a simple matter! i'll just create a variable that stores the player's level, then when the calculated level is higher than that number, add 1 to that number and add attribute/perk points!
And i called that a complication ^_^
Wednesday, 18 December 2013
Refreshed
I don't remember when i last slept this well.. At least 9 hours! (This blog remembers it though... most likely)
Yesterday i enjoyed playing through a lot of contrast, enough played as a designer to learn from it, but i want to finish it for the story :I Apart from storyline and plot "tricks" theres little in that game i can use although i might use the parallel universe thing they've got going on (i.e. make my own) i had thought of the Dragons in amodos that way. That their evli had laid waste to their own world parallel to amodos in a separate dimension, and then after killing off each other for a long time (since there was nothing else left to destroy nor eat) one of the few surviving dragons discovered a way into Amodos (out of their dimension) and he taught the remaining (strongest survivors...) dragons to enter that world.
This way i can make most of the dragons evil, without actually forcing them to be evil (so anomalies like Parthurnax could exist) that is, they were forced into cannibalism and inner conflicts after destroying everything else. They learned too late how important it was to limit their destruction so they wouldn't run out of things to destroy.
Interesting enough right? it'll do.
As beings from another dimension, they're not bound to the same laws as creatures in Amodos, which is why they are simply the strongest creatures in the universe (and Zinth is furious about how they disrupted the balance and actively tries to fight them, they're his or "it's" only real enemy. Whereas the other gods don't seem to care much about them.)
I realized something today, why i think usually game or movie number 2 fails compared to the first. It's probably because the authors try to create "more of" and "less of" something from the first movie/game instead of just continuing the story. For example Lord of the Rings had it's script written many years before the movies were made (in the form of novels) and everything in the movies followed the original books word by word, the books were all about continuing the story rather than balancing violence or romance or discovery/exploration or something like that, it was all about finishing the quest, whereas say.. Highschool DxD which i watched recently, which had a lot of pointless fanservice in the first season, turned it up even more in the next season. It went "more shounen" and "more ecchi" instead of "more story" and therefore it had more pointless/filler/episodic episodes in it than the first season.
Another example is most action and shooter games where the next game always tries to be more violent than the first, and to excuse the added violence the story often must change to accommodate for that which will very possibly damage the atmosphere and the overall flow of the story.
It's something i must avoid... and i didn't seem to be headed towards that either, for example my game nr. 2 will be a completely different story with a slightly different atmosphere than my first game, although linked it's not intended as a continuation of the story.
Then the 3rd game with the undead protagonist is going to take a jump back a bit and be a bit less dark than the first, but not (anywhere near) as light as the second.
Oh yeah and today i read some manga (or what's out of it) named Hakaijuu, i learned something valuable from it and i now know why i had to turn away from making only bad endings to Yrja's Torment like i had originally intended so fast. It's because i loved my protagonist... If i create characters that i actually hate, without making it obvious that i really hate them, i can kill them off at any time i want when no one is expecting it. Another trick i figured out is that people will least expect a character to die when that character is still important to the story, for example Kamina from Guren Lagann (as much as i hated him... and was pleased to see him die, but i was still surprised!)
Killing off side characters that i like, although painful is possible, but killing of lead characters, important ones that the story actually focuses on a lot is hard... I can get just as attached to the characters as the readers if not more.
I haven't finished Amnesia: A Machine for Pigs yet. But the plan was to leave Yrja's Torment in an atmosphere not dissimilar from what you can hear from Amnesia's ending song. I.e. make the player feel like shit. A sad but at the same time beautiful ending.
Thinking back again...
It really could be for the best to turn back to that. One thing is for certain though, i need to refine and massively increase the drama in the ending i currently have planned (which could slightly change once i've actually written the story up till that point).
Anyways, i need to get back to work :)
6 hours of slacking today... i guess classes are really intimidating aren't they? but this ends now! i'll fire up Devildriver and proceed! i must do this! And i shall do it now! (Even if i want to be playing Contrast and finishing up Seikon no Qwaser...) oh yeah about emilie autumns book (The Asylum...) the reason i haven't finished reading it yet is that i was enjoying it so much that 50 pages in i decided to order a physical copy, it'll be in my hands a day or two from now :)
10 minutes later...
I'm onto something! Yes!!
I see it all so clear now. Classes are perfect for this!
here's some example code of what i'm talking about for the crafting skill.
So i can basically just make 9 classes (1 for each major skill)
I could make 1 class named "skills" but... at least right now that doesn't seem like a good idea. I don't need to do that right now.
Another good thing is that now everytime i ask it to display or check the skills level it re-calculates it. (Perfect!)
Now lets see... i think this is the best way to do it. For now at least. I mean i should be able to create a class called player, then assign the values from that class to the player class and ... bah... what am i even trying to explain. Well it's obvious anyways.
What does this mean though? that i got classes down and used them for the skills?
It means that apart from implementing the experience system, the route towards finishing this leveling system prototype is 100% clear, i've learned to use all the tools i need to finish it.
This also means that my programming skills just got a level up. I now have the basic skills needed to use all the tools at my disposal, the rest of it all is just figuring out how best to use them. In my past experiences i've been pretty good at that and in fact i enjoy doing that.
Now before i finish up writing down all the skills(or classes for them) how do i intend to implement the leveling system?
...?
Hmm... well the plan was that everytime the player uses a skill he gets experience points towards leveling that skill up, then once he has X amount of experience he gets Y level instead...
HmMmMmmm...
Lets see the code if i remember was
...
I found the code, but the python code and the Java code aren't giving me the same results, and i based everything off the java code so i have to make the python code match up to it. It's taking a while Dx
Finally!
I got it!
for lvl in range(1, 100):
exp += int(lvl + 300 * 2 * lvl / 3)
output = lvl + 1, exp / 4
print ("Level %d = %d" % output)
raw_input()
Haha! it worked! what a fucking pain in the ass... Python is weird when it comes to math (i removed all the (s and the )s... and the formula all of a sudden worked...)
Ok.. now that i've got the formula for generating the experience required for leveling up, how will i actually apply that? uhm.. hmm...
What if i turn it into a while loop instead of a for loop?
No i need it to be able to run infinitely... Hmm... Now this is getting hard :/ i need to find a way to stop the for loop from generating another level until the player's exp is enough to level up... Why do i need to do that? Well because i cannot create dynamic variables for every single level (that'd just be fucking stupid...)
break is the command i was looking for!
i added this line
if exp < experience:
break
to the end of the file and now it'll just stop if the player's exp isn't high enough... but wait things are never so simple are they? if i do that it means i'll have to start over again every time i run the for loop so i need to have a way to register where it stopped and start there again D:
Allright, this is what i needed...
minlevel = 1
maxlevel = 100
level = 0
points = 0
exp = 0
for lvl in range(minlevel, (maxlevel + 1)):
points += int(lvl + 300 * 2 * lvl / 3)
output = lvl + 1, points / 4
print ("Level %d = %d" % output)
level = lvl
if exp < (points / 4):
break
points = 0
I've got a level value which tells me the current level, i've got an exp value which tells me the current exp i've got, i've got minimum and maximum levels functioning exactly like i want them to. and the points value is reset on every run so everytime i run it again it generates the whole list again (not as good as picking up where it left off, but when we're talking about a value of 1-100 it generates it fast enough so that it won't matter... a matter of milliseconds, it'd stay that way even if i go to 1000 too. Going above 1000 and i'd have to optimize this for better speed though, i think i could do that by turning it into a while loop because if i use a while loop i can make it start at the last level... hmm..)
Hehe since i saw a chance to optimize how could i possibly let go?!
minlevel = 1
maxlevel = 100
level = 1
points = 0
exp = 0
while level in range(minlevel, (maxlevel + 1)):
points += int(level + 300 * 2 * level / 3)
output = level + 1, points / 4
print ("Level %d = %d" % output)
level += 1
if exp < (points / 4):
level -= 1
break
This is just as precise as what i had before, and it doesn't require me to reset "points" everytime it's run. The only drawback of using this is that it doesn't support reducing my level/experience, if i do that with this code it'll break. If i want to reset my level to a lower value i have to reset points and level before i run it again...
That's a small tradeoff in return for the increased speed :) and with this it'll be no problem if i set the max level to over 1 million, whereas doing that would temporarily freeze up the program if i used the older code. Excellent!
Now that i have that... i'm back to needing to find a way to implement it, but it's become a whole lot easier to do that now that i have exp & level variables.
Oh thats right like i said earlier i could implement it as a sub-class for each skill class, but... That's kind of ugly, still.... I don't think there's another way, and with this (slightly improved) code i think it's a feasible solution.
Well i was working very well, and i indeed am super close to having a satisfactory prototype code for this whole thing, but i got interrupted by the mailman. My book was delivered! and with it i got some top notch white tea mixed from mostly rare as fuck herbs + american peppermint. I figured my life would be pretty sad if i didn't at least once in my life taste some high quality tea... right?
Anyways then i got back to it, one thing i'm wondering now is if Python's float -> int conversion floors or approximates :/ easiest way to find out is to well... check...
It floors! magnificent! (The only thing i would ever want to approximate rather than floor would be... honestly... i'm not sure. But possibly stats.)
Well.. i realized after figuring this out that at the time i was interrupted i already had a functional code... :O
Now i just need to write that on a bigger scale... And question if this is really the most convenient way to do this? hmm.... There's not exactly anyone i can ask... I do know though that this is a fairly complicated way to do it, but what i was aiming for in this first prototype (above all) is "accurate" rather than "fast/optimized" or "simple/readable" code.
Writing it on a bigger scale without making any mistakes is hard =_= i generally need to test everything as i write it to be sure. And it's a lot of skills (shame on me)
One thing i have decided though, is that when i'm done with this and satisfied, i'll donate it to Ren'Py cookbook... nobody should have to go through all this trouble just to set up a fucking leveling system Dx
I'll have to continue tomorrow though. Today was productive even if half of it was spent slacking! I hope for a better tomorrow ^_^
Yesterday i enjoyed playing through a lot of contrast, enough played as a designer to learn from it, but i want to finish it for the story :I Apart from storyline and plot "tricks" theres little in that game i can use although i might use the parallel universe thing they've got going on (i.e. make my own) i had thought of the Dragons in amodos that way. That their evli had laid waste to their own world parallel to amodos in a separate dimension, and then after killing off each other for a long time (since there was nothing else left to destroy nor eat) one of the few surviving dragons discovered a way into Amodos (out of their dimension) and he taught the remaining (strongest survivors...) dragons to enter that world.
This way i can make most of the dragons evil, without actually forcing them to be evil (so anomalies like Parthurnax could exist) that is, they were forced into cannibalism and inner conflicts after destroying everything else. They learned too late how important it was to limit their destruction so they wouldn't run out of things to destroy.
Interesting enough right? it'll do.
As beings from another dimension, they're not bound to the same laws as creatures in Amodos, which is why they are simply the strongest creatures in the universe (and Zinth is furious about how they disrupted the balance and actively tries to fight them, they're his or "it's" only real enemy. Whereas the other gods don't seem to care much about them.)
I realized something today, why i think usually game or movie number 2 fails compared to the first. It's probably because the authors try to create "more of" and "less of" something from the first movie/game instead of just continuing the story. For example Lord of the Rings had it's script written many years before the movies were made (in the form of novels) and everything in the movies followed the original books word by word, the books were all about continuing the story rather than balancing violence or romance or discovery/exploration or something like that, it was all about finishing the quest, whereas say.. Highschool DxD which i watched recently, which had a lot of pointless fanservice in the first season, turned it up even more in the next season. It went "more shounen" and "more ecchi" instead of "more story" and therefore it had more pointless/filler/episodic episodes in it than the first season.
Another example is most action and shooter games where the next game always tries to be more violent than the first, and to excuse the added violence the story often must change to accommodate for that which will very possibly damage the atmosphere and the overall flow of the story.
It's something i must avoid... and i didn't seem to be headed towards that either, for example my game nr. 2 will be a completely different story with a slightly different atmosphere than my first game, although linked it's not intended as a continuation of the story.
Then the 3rd game with the undead protagonist is going to take a jump back a bit and be a bit less dark than the first, but not (anywhere near) as light as the second.
Oh yeah and today i read some manga (or what's out of it) named Hakaijuu, i learned something valuable from it and i now know why i had to turn away from making only bad endings to Yrja's Torment like i had originally intended so fast. It's because i loved my protagonist... If i create characters that i actually hate, without making it obvious that i really hate them, i can kill them off at any time i want when no one is expecting it. Another trick i figured out is that people will least expect a character to die when that character is still important to the story, for example Kamina from Guren Lagann (as much as i hated him... and was pleased to see him die, but i was still surprised!)
Killing off side characters that i like, although painful is possible, but killing of lead characters, important ones that the story actually focuses on a lot is hard... I can get just as attached to the characters as the readers if not more.
I haven't finished Amnesia: A Machine for Pigs yet. But the plan was to leave Yrja's Torment in an atmosphere not dissimilar from what you can hear from Amnesia's ending song. I.e. make the player feel like shit. A sad but at the same time beautiful ending.
Thinking back again...
It really could be for the best to turn back to that. One thing is for certain though, i need to refine and massively increase the drama in the ending i currently have planned (which could slightly change once i've actually written the story up till that point).
Anyways, i need to get back to work :)
6 hours of slacking today... i guess classes are really intimidating aren't they? but this ends now! i'll fire up Devildriver and proceed! i must do this! And i shall do it now! (Even if i want to be playing Contrast and finishing up Seikon no Qwaser...) oh yeah about emilie autumns book (The Asylum...) the reason i haven't finished reading it yet is that i was enjoying it so much that 50 pages in i decided to order a physical copy, it'll be in my hands a day or two from now :)
10 minutes later...
I'm onto something! Yes!!
I see it all so clear now. Classes are perfect for this!
here's some example code of what i'm talking about for the crafting skill.
So i can basically just make 9 classes (1 for each major skill)
I could make 1 class named "skills" but... at least right now that doesn't seem like a good idea. I don't need to do that right now.
Another good thing is that now everytime i ask it to display or check the skills level it re-calculates it. (Perfect!)
Now lets see... i think this is the best way to do it. For now at least. I mean i should be able to create a class called player, then assign the values from that class to the player class and ... bah... what am i even trying to explain. Well it's obvious anyways.
What does this mean though? that i got classes down and used them for the skills?
It means that apart from implementing the experience system, the route towards finishing this leveling system prototype is 100% clear, i've learned to use all the tools i need to finish it.
This also means that my programming skills just got a level up. I now have the basic skills needed to use all the tools at my disposal, the rest of it all is just figuring out how best to use them. In my past experiences i've been pretty good at that and in fact i enjoy doing that.
Now before i finish up writing down all the skills(or classes for them) how do i intend to implement the leveling system?
...?
Hmm... well the plan was that everytime the player uses a skill he gets experience points towards leveling that skill up, then once he has X amount of experience he gets Y level instead...
HmMmMmmm...
Lets see the code if i remember was
...
I found the code, but the python code and the Java code aren't giving me the same results, and i based everything off the java code so i have to make the python code match up to it. It's taking a while Dx
Finally!
I got it!
for lvl in range(1, 100):
exp += int(lvl + 300 * 2 * lvl / 3)
output = lvl + 1, exp / 4
print ("Level %d = %d" % output)
raw_input()
Haha! it worked! what a fucking pain in the ass... Python is weird when it comes to math (i removed all the (s and the )s... and the formula all of a sudden worked...)
Ok.. now that i've got the formula for generating the experience required for leveling up, how will i actually apply that? uhm.. hmm...
What if i turn it into a while loop instead of a for loop?
No i need it to be able to run infinitely... Hmm... Now this is getting hard :/ i need to find a way to stop the for loop from generating another level until the player's exp is enough to level up... Why do i need to do that? Well because i cannot create dynamic variables for every single level (that'd just be fucking stupid...)
break is the command i was looking for!
i added this line
if exp < experience:
break
to the end of the file and now it'll just stop if the player's exp isn't high enough... but wait things are never so simple are they? if i do that it means i'll have to start over again every time i run the for loop so i need to have a way to register where it stopped and start there again D:
Allright, this is what i needed...
minlevel = 1
maxlevel = 100
level = 0
points = 0
exp = 0
for lvl in range(minlevel, (maxlevel + 1)):
points += int(lvl + 300 * 2 * lvl / 3)
output = lvl + 1, points / 4
print ("Level %d = %d" % output)
level = lvl
if exp < (points / 4):
break
points = 0
I've got a level value which tells me the current level, i've got an exp value which tells me the current exp i've got, i've got minimum and maximum levels functioning exactly like i want them to. and the points value is reset on every run so everytime i run it again it generates the whole list again (not as good as picking up where it left off, but when we're talking about a value of 1-100 it generates it fast enough so that it won't matter... a matter of milliseconds, it'd stay that way even if i go to 1000 too. Going above 1000 and i'd have to optimize this for better speed though, i think i could do that by turning it into a while loop because if i use a while loop i can make it start at the last level... hmm..)
Hehe since i saw a chance to optimize how could i possibly let go?!
minlevel = 1
maxlevel = 100
level = 1
points = 0
exp = 0
while level in range(minlevel, (maxlevel + 1)):
points += int(level + 300 * 2 * level / 3)
output = level + 1, points / 4
print ("Level %d = %d" % output)
level += 1
if exp < (points / 4):
level -= 1
break
This is just as precise as what i had before, and it doesn't require me to reset "points" everytime it's run. The only drawback of using this is that it doesn't support reducing my level/experience, if i do that with this code it'll break. If i want to reset my level to a lower value i have to reset points and level before i run it again...
That's a small tradeoff in return for the increased speed :) and with this it'll be no problem if i set the max level to over 1 million, whereas doing that would temporarily freeze up the program if i used the older code. Excellent!
Now that i have that... i'm back to needing to find a way to implement it, but it's become a whole lot easier to do that now that i have exp & level variables.
Oh thats right like i said earlier i could implement it as a sub-class for each skill class, but... That's kind of ugly, still.... I don't think there's another way, and with this (slightly improved) code i think it's a feasible solution.
Well i was working very well, and i indeed am super close to having a satisfactory prototype code for this whole thing, but i got interrupted by the mailman. My book was delivered! and with it i got some top notch white tea mixed from mostly rare as fuck herbs + american peppermint. I figured my life would be pretty sad if i didn't at least once in my life taste some high quality tea... right?
Anyways then i got back to it, one thing i'm wondering now is if Python's float -> int conversion floors or approximates :/ easiest way to find out is to well... check...
It floors! magnificent! (The only thing i would ever want to approximate rather than floor would be... honestly... i'm not sure. But possibly stats.)
Well.. i realized after figuring this out that at the time i was interrupted i already had a functional code... :O
Now i just need to write that on a bigger scale... And question if this is really the most convenient way to do this? hmm.... There's not exactly anyone i can ask... I do know though that this is a fairly complicated way to do it, but what i was aiming for in this first prototype (above all) is "accurate" rather than "fast/optimized" or "simple/readable" code.
Writing it on a bigger scale without making any mistakes is hard =_= i generally need to test everything as i write it to be sure. And it's a lot of skills (shame on me)
One thing i have decided though, is that when i'm done with this and satisfied, i'll donate it to Ren'Py cookbook... nobody should have to go through all this trouble just to set up a fucking leveling system Dx
I'll have to continue tomorrow though. Today was productive even if half of it was spent slacking! I hope for a better tomorrow ^_^
Tuesday, 17 December 2013
Break Time!
Well today i stopped for a moment to think about the other things i want to be doing, things unrelated to my game designs...
It boiled down to 2 things really, and its the same 2 things i've had on my mind for like 3 years...
1. Get in good shape (fitness if you will)
2. Learn Japanese
Never before have i had more justifiable reasons to do this either. If i'm going to make adult games there's no place in the world it'll sell better than in Japan, so learning Japanese would be really helpful to me in the long run if i want to make money out of this whole thing, that'd be almost crucial.
Then about getting in shape, if i want to be a successful and respected businessman (more than just a game designer), it would help out a lot to be in good shape, being in good shape essentailly means it's easier to earn respect and people will be more likely to look up to someone in good shape than someone who is obese or something.
So now I've got 2 better reasons than ever before to do these things... What the hell is stopping me? I don't even know anymore... I know exactly the best, fastest and most efficient way to do the former (for a hint.. eat exclusively fat food with low/no carbs and use a bodyweight/calisthenic workout program). And for the latter i might not know the best, most efficient nor fastest way, but i know a way that's fast enough so icould be decent @ japanese by the time i'll be working on Unchained.
So what's stopping me?
1. I don't have a pullup bar, and affording and placing one is.. well... I've got an idea though!
2. I don't have the proper materials to study, that is i know the Kana but don't know Kanji, so reading stuff that has Kanji in it gets super hard... And i need to be able to read to study it any further. My plan is to play visual novels in japanese and watch raw anime, possibly also read manga in japanese, but i need more kanji skillzs to do that which i don't have :(
Other than these 2 things there's really nothing i need to do in my life, i mean sure i'd LOVE to do martial arts... and i might but only after I've shaped up. (I have done martial arts before, and it's probably the only "sport" i ever enjoyed, it's so fucking fun!)
So i finished Highschool DxD today, the first season was great, but i hated the second one, although Azazel and Sirzechs were pretty cool characters.
Anyways. I'm thinking i'll use today for a break. There's a lot of games to play and anime to see, and i feel like I've earned this. So unless i suddenly change my mind later today, that's it for now!
I'm planning to play Contrast and Violett today!
It boiled down to 2 things really, and its the same 2 things i've had on my mind for like 3 years...
1. Get in good shape (fitness if you will)
2. Learn Japanese
Never before have i had more justifiable reasons to do this either. If i'm going to make adult games there's no place in the world it'll sell better than in Japan, so learning Japanese would be really helpful to me in the long run if i want to make money out of this whole thing, that'd be almost crucial.
Then about getting in shape, if i want to be a successful and respected businessman (more than just a game designer), it would help out a lot to be in good shape, being in good shape essentailly means it's easier to earn respect and people will be more likely to look up to someone in good shape than someone who is obese or something.
So now I've got 2 better reasons than ever before to do these things... What the hell is stopping me? I don't even know anymore... I know exactly the best, fastest and most efficient way to do the former (for a hint.. eat exclusively fat food with low/no carbs and use a bodyweight/calisthenic workout program). And for the latter i might not know the best, most efficient nor fastest way, but i know a way that's fast enough so icould be decent @ japanese by the time i'll be working on Unchained.
So what's stopping me?
1. I don't have a pullup bar, and affording and placing one is.. well... I've got an idea though!
2. I don't have the proper materials to study, that is i know the Kana but don't know Kanji, so reading stuff that has Kanji in it gets super hard... And i need to be able to read to study it any further. My plan is to play visual novels in japanese and watch raw anime, possibly also read manga in japanese, but i need more kanji skillzs to do that which i don't have :(
Other than these 2 things there's really nothing i need to do in my life, i mean sure i'd LOVE to do martial arts... and i might but only after I've shaped up. (I have done martial arts before, and it's probably the only "sport" i ever enjoyed, it's so fucking fun!)
So i finished Highschool DxD today, the first season was great, but i hated the second one, although Azazel and Sirzechs were pretty cool characters.
Anyways. I'm thinking i'll use today for a break. There's a lot of games to play and anime to see, and i feel like I've earned this. So unless i suddenly change my mind later today, that's it for now!
I'm planning to play Contrast and Violett today!
Monday, 16 December 2013
Hanging in there!
My first thought today was "man... i just want to drop all my work and watch anime alllllllll day!" and well i could even say i've earned that, but i know myself better than that, this is just one of those time periods where anime is everything i want to do. But i won't give in!
Still i really wanna watch something adventurous like Magi again....
Well instead i finished Vividred Operation, a loli mechanical girl (magical girl but more science) anime, it's story was pretty boring, but what it lacked in story it made up for with (quite literally) everything else! the characters were great, the animation was good, the fanservice was just the right amount (i.e. enough to notice it if you want to, but scarce enough to be able to easily ignore it if you don't want to see it) everything was perfect except for the story, but to be honest i think it's pretty nice to get a mediocre story every once in a while that doesn't require any thinking capacity to wrap my head around, i just watched it for the cuteness and the awesome character interactions between one another. They didn't try to justify anything, for example in the first episode they turned an old scientist into a stuffed animal for no good reason, but that actually added to the series (they turned the old man into a cute stuffed animal, so he could add to the cuteness of the series, and he was the only male main character, and you know... Having a male main character that isn't some kind of freak just for once was really great! I get enough of freaks in real life, including myself.)
But this made me think a bit about the atmosphere, certainly Yrja's Torment will be dark, but i wanted the atmosphere in Riye's Game (codename) to have a lighter theme, stepping a little bit outside of the dark fantasy and to tell the truth one thing that bugs me is that i want to include comedy in it, but i hate to admit that i don't know the first thing about good comedy, so i'd be going outside the rule of "write what you know". So if there will be comedy in it it'll probably be very minor (i.e. only puns and jokes wherever appropriate)
But i haven't decided anything beyond that, sure the third game where you'll get to play as an undead will be a dark themed game too, i mean the starting scenario will be not extremely different from Yrja's Torment, but it wont be as dark because the protagonist isn't a child rather a teenager or young adult, thinking a range of 16-20 or so.
However in the final game... that is (codename) Unchained. I want to have all of this, i want the player to be able to laugh, cry and be mad. So i thought about that, and i'm thinking the atmosphere will probably reflect the races living there, for example the human continent would probably be split a rough 50/50 between sad and happy quests or locations, etc, kalhiri would probably be mostly happy stuff, and sure enough same with alfinil, the tainted/corrupt areas of necembel is a place where everyone is evil pretty much, but most are not depressed, so it'll be a strange mix of comedy and seriousness over there...
I couldn't reach any real conclusion But i know that i need to be very very careful about this, since it'll probably feel a bit weird to the player if he goes straight from a happy type quest to a sad kind of quest, if the atmosphere just takes a sudden shift, it always needs to be a sort of gradual thing... It's an aesthetic i'll have to think about when the time comes, but i still can't help but consider it right now.
Now after all that i started to think about LVUER (my artist) i haven't heard from him for several days, last he said he was really really busy for some various family reasons. Also in his last mail he said "no worries" but that was 4 days ago, so i'm getting genuinely worried. So i sent him a mail, asking if everything is ok.
With that behind me (for now) i've got to finish up this not-so-stupid leveling system! D:
Why am i doing that this early on though? it won't be fully used until i'll start working on "Unchained" even. I've been wondering this, but i have a very legitimate reason, by the time i reach "Riye's Game" i will need to have a leveling system in place, as that is going to be an RPG with dungeon crawling. It won't use the full system though (there will be a lot of skills and stats that i don't need in there bceause they would do nothing but complicate the game, for example i won't have any magic in the game that the player can use so magic resistances will be unnecessary (i.e. i'll just scale monster magic damage to accommodate for that)). But the thing is that if i'd develop the system for that game rather than the full game, i'd have to redesign it from scratch for project Unchained rather than just toning it down for Riye's Game. I'm saving myself a lot of future work and headaches by doing this, and also doing this so early on (reason 2) means that i can fluidly start working on Riye's Game when i've finished Yrja's Torment without designing a whole leveling system first. It means that it's development will be a lot faster than otherwise.
And this debugging/testing tool i'm designing for the leveling system will surely come in handy for Riye's Game when i tone down the system and balance it out again for that game.
Now as i said yesterday i need to look into classes in python... and their documentation is fucking useless to a beginner like me <_<
After looking through several tutorials just to try to understand what exactly classes are to begin with, all of which failing (including microsoft's one...) i finally found something comprehensible to someone who "doesn't already know exactly what it is"! it's this one! Praise the sun!!!
I knew looking into them was the right thing to do. Using them is pretty vital to leveled items, npcs and the like, and i'll definitely need to have a class for the player's stats too. But this makes me stop to think a bit... Shouldn't i have all of the leveling system all cramped into one class which i could then link/import to every object in the game world? (It would certainly be easier than defining the leveling system every time i add a leveled npc to the game) Also i talked a while back about wanting to have some procedurally generated content, i think that classes are probably the key to that (i.e. i can put the formula for the procedural generation inside of a class so the class can spit out a seemingly random say... background, or a sword with a weird color scheme, etc)
Oh yeah one thing i forgot to add yesterday is that i thought up a way to balance the difference between STR, AGI and DEX based weapons, it's quite damn easy, i'll just do it like Overlord did it, STR weapons will have a much higher damage output than anything else, but be generally slow (so it has a speed penalty meaning it'll be harder for the player to get a double attack with it) then the Dex based stuff will be medium damage, it's the "safe" stuff because with dex you get hit and crit chances, but it's still relatively slow like STR weapons (unless you leveled agility too) meaning that while you're always going to Hit and have frequent Crits, you'll still usually only land one or two attacks every round. Then with AGI weapons (or just unarmed) the speed multiplier might get a bonus, so say you're using knuckle dusters as a weapon, or a staff, while it does little damage (being blunt and lightweight) it usually lands at least 2 hits every round.
Basically it'll be
AGI = DPS (Damage per Second)
DEX = Balanced
STR = DPH (Damage per Hit)
So all the weapon types will be pretty much equally useful, but agi weapons will land more attacks making them deal more damage than other weapons over time (good against strong opponents/bosses) then STR will be slow, but when it hits it's going to hit like a mule, but it's usually only going to be one attack per round so while it's super effective against weaker monsters (killing them in one or two rounds maybe) against bigger opponents it's going to mean you'll possibly take a longer amount of time to defeat them. Then dexterity will balance between the other two (jack-of-all, master of none)
Now where was i... oh right, code... code... code... code... =_= I've seen fellow programmers say that they love programming but don't want to "code" i.e. they want it to be a more visual kind of experience, like say... painting!
I know what they mean now. This is more troublesome than it should be even if python makes it as simple as text-based coding could possibly (ever) be. Anyone and his retarded child could learn to use python if they really wanted to.
Now that i have a much better (but still rough) idea of how classes work... will i use them? will i not? if i will how will i use them? what about... =__= grrr. I will right now accuse myself of thinking too much and doing too little. But i have to plan this out a bit before i start working on it... But i already have software capable of doing that! articy! And it's flow chart system which is usually based around going in a direct line (left to right) is perfect for this task too.
Ok so i've got 2 routes here
Racials -> Attributes
Skills -> Sub-Levels -> Power Level
What's missing is the stats, the stat's can't be used to connect the two routes because the stats rely on both attributes and some skills, and some skills rely on stats...
...
Ok i worked out a system that seems plausible, but damn it's a bit complicated (no wonder it was taking me a while to conjure that up with the power of imagination alone and no visual references...)
Now... i need to see if i can't simplify this somehow...
This was as simple as i could make it get :/ (Off Screen: Racial Values)
that is NOT simple at all D: but well... at least i can code that.
At this moment i realized something... there's no turning back at this point. If i'd put everything on hold for now planning to pick this up later, i could never pick it up again, the complexity has sort of exceeded the boundaries where everyone can just look at it and understand it, i need to actually remember a lot of things (for example how was i supposed to remember that 2 or 3 stats rely on a skill? or that 2 or 3 skills rely on a stat as opposed to the attributes?)
I couldn't stop doing what i'm doing right now and then pick it up again 3 months from now, it'd probably take me about as long to pick it up again as it took me to get to this point (a couple of days) and just remembering what i had done is a lot more boring than it would be to say... start over.
Anyways i now need to make a rough prototype for the leveling system, then i'll have to refine it. now that i have a visual representation of what order i should do this in it'll be (relatively) easy.
I've slacked more than usual today, not to say i haven't earned it though... But i guess when it comes to "starting" on something, like translating my leveling system to code for example, it's always so hard to just start. Another issue i'm kind of dealing with is that python doesn't have any built in debugger to tell me "where" my error is if i make a mistake. Or at least it's very limited (as a workaround i can use the exception system though, but i don't want to have any exceptions at all in this code. It simply should not need them and if it does i didn't write it well enough.)
But oh well, i bettered get started already.... (I actually kind of started yesterday but hit a snag when some skills depended on stats and vice versa... it complicated things a lot, i could change that... but i don't think i should.)
...
I know other games have done this nad when the time comes i should consider making 1 class for "player" i think the elder scrolls series do this (i.e. in the console you can type "player.command ..." to make a command that affects the player directly/only and this is quite typical class functionality... i think.)
Thats an idea to save for later though, i'll have to write it down in my notes... but this means i've started. So far so good (making that flow chart... oh man... it helps so much!)
So then, i got started and i'm already doing better than i had expected!
First i created attributes (all set to 0) <- this is temporary until i work out implementing the racials...
Then i created a list with strings for all the attribute names.
Then i created a while loop for the user to select a race (from 1-6)
Then i created a for loop for listing all of the attributes (that's why i created a string-list with names)
Next i need to create either a class or a bunch of if's that determine what the attributes... I'll start easy and just do ifs... i did that with ifs and elifs, took 2 minutes... but 12 lines... that's 2 lines for each available race :/ I can shorten this to at least 1 per race, if not just 2 or 3 lines... hmm... later...
I guess this was only scary cus it's been ages since i did any real programming (Ren'Py scripting hardly counts as real programming)
...
I'm rolling now, but one thing i wonder is how to update the stats if other stats, modifiers or skills change, i could define a function for it but... surely there's a simpler way....
Not really, but the best way i think is if i define a function that calculates the total/final of all stats & skills and have that function double as a "refresh" button... yeah that sounds logical enough.
...
Ok so after looking around a bit i figure that maybe variables isn't the best way to handle this...
One idea would be to use lists like i did with attributes for the specialization skills, then a dictionary for the major skills.
But.
It all seems to be headed towards classes, now is as good a time as any to learn how to use classes i guess but... It really irks me to use something i don't really know that well, I've never used classes before beyond just extremely basic implementations.
With that i think I've gotten too tired to continue working today. I'm taking the rest of it off, but i'll most likely finish this tomorrow and start working on implementing it into a Ren'Py based debugger style system. Then when that's done.. i wonder whats next on the list, i guess i'll surf over the wikia and make sure there's nothing in there that isn't in articy yet (for example monsters) and create or refine the templates i have in articy, then after that it'll finally come down to creating more content, continuing Yrja's Torment or updating the wikia.
I think creating more content should come first, i need to create and place (in the universe) the locations Yrja is going to travel through before i actually write them down in her story.
But i could continue it up to a certain point since she isn't going anywhere for a long while..
We'll see when the time comes.
Update: Oh i just noticed... I've been working on this for a full month now :O time sure flies doesn't it?
Still i really wanna watch something adventurous like Magi again....
Well instead i finished Vividred Operation, a loli mechanical girl (magical girl but more science) anime, it's story was pretty boring, but what it lacked in story it made up for with (quite literally) everything else! the characters were great, the animation was good, the fanservice was just the right amount (i.e. enough to notice it if you want to, but scarce enough to be able to easily ignore it if you don't want to see it) everything was perfect except for the story, but to be honest i think it's pretty nice to get a mediocre story every once in a while that doesn't require any thinking capacity to wrap my head around, i just watched it for the cuteness and the awesome character interactions between one another. They didn't try to justify anything, for example in the first episode they turned an old scientist into a stuffed animal for no good reason, but that actually added to the series (they turned the old man into a cute stuffed animal, so he could add to the cuteness of the series, and he was the only male main character, and you know... Having a male main character that isn't some kind of freak just for once was really great! I get enough of freaks in real life, including myself.)
But this made me think a bit about the atmosphere, certainly Yrja's Torment will be dark, but i wanted the atmosphere in Riye's Game (codename) to have a lighter theme, stepping a little bit outside of the dark fantasy and to tell the truth one thing that bugs me is that i want to include comedy in it, but i hate to admit that i don't know the first thing about good comedy, so i'd be going outside the rule of "write what you know". So if there will be comedy in it it'll probably be very minor (i.e. only puns and jokes wherever appropriate)
But i haven't decided anything beyond that, sure the third game where you'll get to play as an undead will be a dark themed game too, i mean the starting scenario will be not extremely different from Yrja's Torment, but it wont be as dark because the protagonist isn't a child rather a teenager or young adult, thinking a range of 16-20 or so.
However in the final game... that is (codename) Unchained. I want to have all of this, i want the player to be able to laugh, cry and be mad. So i thought about that, and i'm thinking the atmosphere will probably reflect the races living there, for example the human continent would probably be split a rough 50/50 between sad and happy quests or locations, etc, kalhiri would probably be mostly happy stuff, and sure enough same with alfinil, the tainted/corrupt areas of necembel is a place where everyone is evil pretty much, but most are not depressed, so it'll be a strange mix of comedy and seriousness over there...
I couldn't reach any real conclusion But i know that i need to be very very careful about this, since it'll probably feel a bit weird to the player if he goes straight from a happy type quest to a sad kind of quest, if the atmosphere just takes a sudden shift, it always needs to be a sort of gradual thing... It's an aesthetic i'll have to think about when the time comes, but i still can't help but consider it right now.
Now after all that i started to think about LVUER (my artist) i haven't heard from him for several days, last he said he was really really busy for some various family reasons. Also in his last mail he said "no worries" but that was 4 days ago, so i'm getting genuinely worried. So i sent him a mail, asking if everything is ok.
With that behind me (for now) i've got to finish up this not-so-stupid leveling system! D:
Why am i doing that this early on though? it won't be fully used until i'll start working on "Unchained" even. I've been wondering this, but i have a very legitimate reason, by the time i reach "Riye's Game" i will need to have a leveling system in place, as that is going to be an RPG with dungeon crawling. It won't use the full system though (there will be a lot of skills and stats that i don't need in there bceause they would do nothing but complicate the game, for example i won't have any magic in the game that the player can use so magic resistances will be unnecessary (i.e. i'll just scale monster magic damage to accommodate for that)). But the thing is that if i'd develop the system for that game rather than the full game, i'd have to redesign it from scratch for project Unchained rather than just toning it down for Riye's Game. I'm saving myself a lot of future work and headaches by doing this, and also doing this so early on (reason 2) means that i can fluidly start working on Riye's Game when i've finished Yrja's Torment without designing a whole leveling system first. It means that it's development will be a lot faster than otherwise.
And this debugging/testing tool i'm designing for the leveling system will surely come in handy for Riye's Game when i tone down the system and balance it out again for that game.
Now as i said yesterday i need to look into classes in python... and their documentation is fucking useless to a beginner like me <_<
After looking through several tutorials just to try to understand what exactly classes are to begin with, all of which failing (including microsoft's one...) i finally found something comprehensible to someone who "doesn't already know exactly what it is"! it's this one! Praise the sun!!!
I knew looking into them was the right thing to do. Using them is pretty vital to leveled items, npcs and the like, and i'll definitely need to have a class for the player's stats too. But this makes me stop to think a bit... Shouldn't i have all of the leveling system all cramped into one class which i could then link/import to every object in the game world? (It would certainly be easier than defining the leveling system every time i add a leveled npc to the game) Also i talked a while back about wanting to have some procedurally generated content, i think that classes are probably the key to that (i.e. i can put the formula for the procedural generation inside of a class so the class can spit out a seemingly random say... background, or a sword with a weird color scheme, etc)
Oh yeah one thing i forgot to add yesterday is that i thought up a way to balance the difference between STR, AGI and DEX based weapons, it's quite damn easy, i'll just do it like Overlord did it, STR weapons will have a much higher damage output than anything else, but be generally slow (so it has a speed penalty meaning it'll be harder for the player to get a double attack with it) then the Dex based stuff will be medium damage, it's the "safe" stuff because with dex you get hit and crit chances, but it's still relatively slow like STR weapons (unless you leveled agility too) meaning that while you're always going to Hit and have frequent Crits, you'll still usually only land one or two attacks every round. Then with AGI weapons (or just unarmed) the speed multiplier might get a bonus, so say you're using knuckle dusters as a weapon, or a staff, while it does little damage (being blunt and lightweight) it usually lands at least 2 hits every round.
Basically it'll be
AGI = DPS (Damage per Second)
DEX = Balanced
STR = DPH (Damage per Hit)
So all the weapon types will be pretty much equally useful, but agi weapons will land more attacks making them deal more damage than other weapons over time (good against strong opponents/bosses) then STR will be slow, but when it hits it's going to hit like a mule, but it's usually only going to be one attack per round so while it's super effective against weaker monsters (killing them in one or two rounds maybe) against bigger opponents it's going to mean you'll possibly take a longer amount of time to defeat them. Then dexterity will balance between the other two (jack-of-all, master of none)
Now where was i... oh right, code... code... code... code... =_= I've seen fellow programmers say that they love programming but don't want to "code" i.e. they want it to be a more visual kind of experience, like say... painting!
I know what they mean now. This is more troublesome than it should be even if python makes it as simple as text-based coding could possibly (ever) be. Anyone and his retarded child could learn to use python if they really wanted to.
Now that i have a much better (but still rough) idea of how classes work... will i use them? will i not? if i will how will i use them? what about... =__= grrr. I will right now accuse myself of thinking too much and doing too little. But i have to plan this out a bit before i start working on it... But i already have software capable of doing that! articy! And it's flow chart system which is usually based around going in a direct line (left to right) is perfect for this task too.
Ok so i've got 2 routes here
Racials -> Attributes
Skills -> Sub-Levels -> Power Level
What's missing is the stats, the stat's can't be used to connect the two routes because the stats rely on both attributes and some skills, and some skills rely on stats...
...
Ok i worked out a system that seems plausible, but damn it's a bit complicated (no wonder it was taking me a while to conjure that up with the power of imagination alone and no visual references...)
Now... i need to see if i can't simplify this somehow...
This was as simple as i could make it get :/ (Off Screen: Racial Values)
that is NOT simple at all D: but well... at least i can code that.
At this moment i realized something... there's no turning back at this point. If i'd put everything on hold for now planning to pick this up later, i could never pick it up again, the complexity has sort of exceeded the boundaries where everyone can just look at it and understand it, i need to actually remember a lot of things (for example how was i supposed to remember that 2 or 3 stats rely on a skill? or that 2 or 3 skills rely on a stat as opposed to the attributes?)
I couldn't stop doing what i'm doing right now and then pick it up again 3 months from now, it'd probably take me about as long to pick it up again as it took me to get to this point (a couple of days) and just remembering what i had done is a lot more boring than it would be to say... start over.
Anyways i now need to make a rough prototype for the leveling system, then i'll have to refine it. now that i have a visual representation of what order i should do this in it'll be (relatively) easy.
I've slacked more than usual today, not to say i haven't earned it though... But i guess when it comes to "starting" on something, like translating my leveling system to code for example, it's always so hard to just start. Another issue i'm kind of dealing with is that python doesn't have any built in debugger to tell me "where" my error is if i make a mistake. Or at least it's very limited (as a workaround i can use the exception system though, but i don't want to have any exceptions at all in this code. It simply should not need them and if it does i didn't write it well enough.)
But oh well, i bettered get started already.... (I actually kind of started yesterday but hit a snag when some skills depended on stats and vice versa... it complicated things a lot, i could change that... but i don't think i should.)
...
I know other games have done this nad when the time comes i should consider making 1 class for "player" i think the elder scrolls series do this (i.e. in the console you can type "player.command ..." to make a command that affects the player directly/only and this is quite typical class functionality... i think.)
Thats an idea to save for later though, i'll have to write it down in my notes... but this means i've started. So far so good (making that flow chart... oh man... it helps so much!)
So then, i got started and i'm already doing better than i had expected!
First i created attributes (all set to 0) <- this is temporary until i work out implementing the racials...
Then i created a list with strings for all the attribute names.
Then i created a while loop for the user to select a race (from 1-6)
Then i created a for loop for listing all of the attributes (that's why i created a string-list with names)
Next i need to create either a class or a bunch of if's that determine what the attributes... I'll start easy and just do ifs... i did that with ifs and elifs, took 2 minutes... but 12 lines... that's 2 lines for each available race :/ I can shorten this to at least 1 per race, if not just 2 or 3 lines... hmm... later...
I guess this was only scary cus it's been ages since i did any real programming (Ren'Py scripting hardly counts as real programming)
...
I'm rolling now, but one thing i wonder is how to update the stats if other stats, modifiers or skills change, i could define a function for it but... surely there's a simpler way....
Not really, but the best way i think is if i define a function that calculates the total/final of all stats & skills and have that function double as a "refresh" button... yeah that sounds logical enough.
...
Ok so after looking around a bit i figure that maybe variables isn't the best way to handle this...
One idea would be to use lists like i did with attributes for the specialization skills, then a dictionary for the major skills.
But.
It all seems to be headed towards classes, now is as good a time as any to learn how to use classes i guess but... It really irks me to use something i don't really know that well, I've never used classes before beyond just extremely basic implementations.
With that i think I've gotten too tired to continue working today. I'm taking the rest of it off, but i'll most likely finish this tomorrow and start working on implementing it into a Ren'Py based debugger style system. Then when that's done.. i wonder whats next on the list, i guess i'll surf over the wikia and make sure there's nothing in there that isn't in articy yet (for example monsters) and create or refine the templates i have in articy, then after that it'll finally come down to creating more content, continuing Yrja's Torment or updating the wikia.
I think creating more content should come first, i need to create and place (in the universe) the locations Yrja is going to travel through before i actually write them down in her story.
But i could continue it up to a certain point since she isn't going anywhere for a long while..
We'll see when the time comes.
Update: Oh i just noticed... I've been working on this for a full month now :O time sure flies doesn't it?
Sunday, 15 December 2013
Cestarian Games
7 hours of sleep :/
Almost but not quite.
As i preheated the oven for my pizza (breakfast) I started today checking out my new idea for company name, i.e. Cestarian Games instead of Amodos Game Studios...
It looks so much better!
Kind of unfortunate that it's the human homeland though... But Cestaria is in my opinion the coolest continent name i ever came up with :)
Next i watched some anime! I guess it's just one of those time periods where Anime > Games :/
But i can't help that sometimes i feel like watching anime and other times i feel like playing games. Also watching anime while i eat is the standard =P
Hell would probably freeze over before i'd eat at a dinner table if i could be watching something while eating instead.
So after 2 hours of that....
I've been thinking about skill modifiers... and... i always come down to the same result which is: (Attribute / 2)
Leaving every skill's max level (that is with bonuses from modifiers) at 150. But max "base" at 100.
Before i do that so hastily though i'll check how others do it... I found nothing sensible... well, whatever i'll just do it like i envisioned it for now. It's good enough.
So i wrote that down in articy...
I see that this probably isn't going to work out in the end, but it's enough for now.
Next step is asking my processor if my maths makes logics...
My dormant programming skills, wake the fuck up now!
Ok now Ren'Py, i need to make a menu... a big menu... with lots of buttons... and variables displayed... :I this might be tough, but it's all for science!!
Argh, i don't know how to make a menu like what i have in mind with ren'pys code!!! D:
I'm thinking i should write this code down, and then do my best to beautify it... I could use microsoft's WPF thing for this as i am familiar with it, but i'm too lazy to install visual studio, and besides i'll need to know how to do this in Ren'Py sooner or later (probably by the time i get to game nr. 2)
Surely this has been done before though... I'll just look at the forums for a while...
Ok, maybe i should write this up in raw python first, since i'm more familiar with that than Ren'Py and it should be relatively easy to port over.
So i climbed into bed and thought hard about how exactly to do this, since there are no independent values, i've got attributes which depend on the PL which depends on the Sub-Level(s) which depend on the skills which depend on the attributes and (occasionally) affect/depend on the stats which depend on the attributes problem being that there's no one route through this at the high level unless i change the stats to depend only on the attributes... but even if i did that very few skills (but still some skills) depend on stats! and skills are essentially the first thing in the order leading up to evreything else but they depend on the fouth value (attributes...)
Why'd i have to make this so big and unwieldy? oh well, challenge never hurt anybody. While i was in bed i thought of one cool thing i could do, and that is to store the attributes in a list ([1,2,3,4,5,6,7,8,9]) this way i can keep all of ther "base" values in one command. Taking it even further i could use their modifiers (buffs and stuff like that) in another list rather than making a unique variable for all of them, but when it comes to the total value of each attribute i think i should devote one variable to each to make it easier (faster) to use that as a modifier (then i won't have to reference to a list when pointing towards attributes, usually.)
Yes, that's good... for the attributes anyways.... but skills and stats are way too big to do them this way (they go up to like 30 and 40 values each)... D:
I'll make this work one way or another, but when i'm done with it i'll find a better way to do it (shorten and beautify it until it's as few lines as possible). I'm thinking i'll need to learn more about classes, functions and maybe even dictionaries.....
dictionaries...
I can use dictionaries for the skills and stats :O right?! That's brilliant! that's perfect!! this solves like... all of my problems!!! dictionaries are wonderful, i could also use it for the "total" value of the attributes. Since dictionaries are essentially a list with variables instead of values.
I also found out that there's no sample code for this kind of work in Ren'Py forums, when i'm done with this i might donate it to the cookbook, but i'll probably convert it into an "rpg leveling system framework" rather than my full system so it'll be easier for others to adopt the code into their own, well..
I spent the rest of my day scratching my head over this and allow myself the luxury of doing so since i don't have any deadlines yet :3
Update: Although i didn't get much further than this with making the code for the leveling system, i did get the code for making the menus! i just asked nicely on the forums and i got a wonderful sample code :)
Update2: I did get a little further after all. I figure that a relatively safe way is to define all the variables (stats, attributes and skills) at their base values (usually 0, racial and 1) first, then after that add modifier code to them and then finally define a "final" or "total" amount for everything which will combine the base value with the modifier value. this isn't perfect(for example HP needs a third modifier for damage taken which if it reaches high enough can kill the player) but it's a start. Before i get started on it i want to look further into python's class system to see if i can possibly make use of that in this whole thing. In other words i'm ready to actually work on this tomorrow instead of just thinking about it.
Almost but not quite.
As i preheated the oven for my pizza (breakfast) I started today checking out my new idea for company name, i.e. Cestarian Games instead of Amodos Game Studios...
It looks so much better!
Kind of unfortunate that it's the human homeland though... But Cestaria is in my opinion the coolest continent name i ever came up with :)
Next i watched some anime! I guess it's just one of those time periods where Anime > Games :/
But i can't help that sometimes i feel like watching anime and other times i feel like playing games. Also watching anime while i eat is the standard =P
Hell would probably freeze over before i'd eat at a dinner table if i could be watching something while eating instead.
So after 2 hours of that....
I've been thinking about skill modifiers... and... i always come down to the same result which is: (Attribute / 2)
Leaving every skill's max level (that is with bonuses from modifiers) at 150. But max "base" at 100.
Before i do that so hastily though i'll check how others do it... I found nothing sensible... well, whatever i'll just do it like i envisioned it for now. It's good enough.
So i wrote that down in articy...
I see that this probably isn't going to work out in the end, but it's enough for now.
Next step is asking my processor if my maths makes logics...
My dormant programming skills, wake the fuck up now!
Ok now Ren'Py, i need to make a menu... a big menu... with lots of buttons... and variables displayed... :I this might be tough, but it's all for science!!
Argh, i don't know how to make a menu like what i have in mind with ren'pys code!!! D:
I'm thinking i should write this code down, and then do my best to beautify it... I could use microsoft's WPF thing for this as i am familiar with it, but i'm too lazy to install visual studio, and besides i'll need to know how to do this in Ren'Py sooner or later (probably by the time i get to game nr. 2)
Surely this has been done before though... I'll just look at the forums for a while...
Ok, maybe i should write this up in raw python first, since i'm more familiar with that than Ren'Py and it should be relatively easy to port over.
So i climbed into bed and thought hard about how exactly to do this, since there are no independent values, i've got attributes which depend on the PL which depends on the Sub-Level(s) which depend on the skills which depend on the attributes and (occasionally) affect/depend on the stats which depend on the attributes problem being that there's no one route through this at the high level unless i change the stats to depend only on the attributes... but even if i did that very few skills (but still some skills) depend on stats! and skills are essentially the first thing in the order leading up to evreything else but they depend on the fouth value (attributes...)
Why'd i have to make this so big and unwieldy? oh well, challenge never hurt anybody. While i was in bed i thought of one cool thing i could do, and that is to store the attributes in a list ([1,2,3,4,5,6,7,8,9]) this way i can keep all of ther "base" values in one command. Taking it even further i could use their modifiers (buffs and stuff like that) in another list rather than making a unique variable for all of them, but when it comes to the total value of each attribute i think i should devote one variable to each to make it easier (faster) to use that as a modifier (then i won't have to reference to a list when pointing towards attributes, usually.)
Yes, that's good... for the attributes anyways.... but skills and stats are way too big to do them this way (they go up to like 30 and 40 values each)... D:
I'll make this work one way or another, but when i'm done with it i'll find a better way to do it (shorten and beautify it until it's as few lines as possible). I'm thinking i'll need to learn more about classes, functions and maybe even dictionaries.....
dictionaries...
I can use dictionaries for the skills and stats :O right?! That's brilliant! that's perfect!! this solves like... all of my problems!!! dictionaries are wonderful, i could also use it for the "total" value of the attributes. Since dictionaries are essentially a list with variables instead of values.
I also found out that there's no sample code for this kind of work in Ren'Py forums, when i'm done with this i might donate it to the cookbook, but i'll probably convert it into an "rpg leveling system framework" rather than my full system so it'll be easier for others to adopt the code into their own, well..
I spent the rest of my day scratching my head over this and allow myself the luxury of doing so since i don't have any deadlines yet :3
Update: Although i didn't get much further than this with making the code for the leveling system, i did get the code for making the menus! i just asked nicely on the forums and i got a wonderful sample code :)
Update2: I did get a little further after all. I figure that a relatively safe way is to define all the variables (stats, attributes and skills) at their base values (usually 0, racial and 1) first, then after that add modifier code to them and then finally define a "final" or "total" amount for everything which will combine the base value with the modifier value. this isn't perfect(for example HP needs a third modifier for damage taken which if it reaches high enough can kill the player) but it's a start. Before i get started on it i want to look further into python's class system to see if i can possibly make use of that in this whole thing. In other words i'm ready to actually work on this tomorrow instead of just thinking about it.
Saturday, 14 December 2013
Full nights sleep!!!
I slept for 7 hours and 30 minutes!!! that classifies as exactly, no more, and no less than 100% sleep!
I've worked so hard for 3 days! i'm going to start this day with a break, have some pizza, watch some anime, maybe play a bit of games but my next task is to work out the skills system as i have the stats, attributes and leveling system and once that's done it'll be time to test it and see how it works out.
But I deserve this break ^_^ i can work in the afternoon!
I watched anime for 2 hours, then i wanted to play a game but the thought of finishing up this leveling system is just burning at the back of my head constantly, every moment i'm not working on it i feel guilty :(
Here i was hoping to play some games too, but fuck them! they can wait!
First off i reviewed the work from yesterday since i was pretty tired to make sure i didn't have any inconsistencies in there... They were only minor! (thank god) any i found i fixed in yesterday's post too, because articy doesn't let me use formatting on my notes i prefer to use yesterdays post for reference than my own notes :/
Added a "to do":-- Make SFW/NSFW conversions for Arousal, Libido and Sensitivity systems.
That is i need to reverse the formulas for these stats calculations depending on SFW or NSFW gameplay.
I had thought about just removing the system in the SFW mode, but in the end i like the aidea of being able to win or lose combat without any direct violence, and it also gives me something to work with if i want the player to be able to become insane or lose control of his character (for example if he's overtly aroused then the only option he might have in combat is "rape" hehe) or if his morale is low he could only Flee/Surrender.
Now, the fun part... Skills! i'm not sure if i'm looking forward to or dreading this, but here i go!
...
...
...
Maybe i should make the experience system first? that way i can say for example
Base Skill level = (Experience / 100)
Bonus = (Modifiers / X) + (Major Skill / Y)
Or something like that (if the leveling system will be that simple, which i kind of doubt)
But just in case! and now that i have a base system in place i actually can make a leveling system.
Now i think i had something in place a while ago in this regard, so i'll see what that looks like...
This is what it looks like
Lets see, can i work with that? it certainly seems possible to do it this way, but i'd really like to have a shorter and simpler code for it, if i did it this way i would have to create a lot of "if" or "for" or "while" blocks for it, i'd like it if i can keep it in 1 simple formula.. hmm...
Like i said maths was never my strongest point, so i thought "why not just let somebody else do the base work for me?" and voila! it's got code and everything! :D
I've worked so hard for 3 days! i'm going to start this day with a break, have some pizza, watch some anime, maybe play a bit of games but my next task is to work out the skills system as i have the stats, attributes and leveling system and once that's done it'll be time to test it and see how it works out.
But I deserve this break ^_^ i can work in the afternoon!
I watched anime for 2 hours, then i wanted to play a game but the thought of finishing up this leveling system is just burning at the back of my head constantly, every moment i'm not working on it i feel guilty :(
Here i was hoping to play some games too, but fuck them! they can wait!
First off i reviewed the work from yesterday since i was pretty tired to make sure i didn't have any inconsistencies in there... They were only minor! (thank god) any i found i fixed in yesterday's post too, because articy doesn't let me use formatting on my notes i prefer to use yesterdays post for reference than my own notes :/
Added a "to do":-- Make SFW/NSFW conversions for Arousal, Libido and Sensitivity systems.
That is i need to reverse the formulas for these stats calculations depending on SFW or NSFW gameplay.
I had thought about just removing the system in the SFW mode, but in the end i like the aidea of being able to win or lose combat without any direct violence, and it also gives me something to work with if i want the player to be able to become insane or lose control of his character (for example if he's overtly aroused then the only option he might have in combat is "rape" hehe) or if his morale is low he could only Flee/Surrender.
Now, the fun part... Skills! i'm not sure if i'm looking forward to or dreading this, but here i go!
...
...
...
Maybe i should make the experience system first? that way i can say for example
Base Skill level = (Experience / 100)
Bonus = (Modifiers / X) + (Major Skill / Y)
Or something like that (if the leveling system will be that simple, which i kind of doubt)
But just in case! and now that i have a base system in place i actually can make a leveling system.
Now i think i had something in place a while ago in this regard, so i'll see what that looks like...
This is what it looks like
Z = Level, Y = Use count, X = Use count to level, F = Sister Skills (Total count of specialized skills under the same major skill)
Note: Use counts stick, so if Y is 80 and X is 90, you will level up when you use the skill 10 more times.
- Player Level up = 3x Major Skill level ups
- Major Skill Level Up = F (If the skill has 8 sub skills, you need 8 sub-skill levels to level the skill)
- Specialization/Minor Skill Level Up:
- Lv 1: X = 1 (Use skill once to hit lv 1)
- Lv 2: X = Z / F * 100
- Lv 3 - 5: X = X * 2
- Lv 6 - 9: X = X * 1.5
- Lv 10 - 13: X = X * 1.4
- ... (until X = X * 1.01)
Lets see, can i work with that? it certainly seems possible to do it this way, but i'd really like to have a shorter and simpler code for it, if i did it this way i would have to create a lot of "if" or "for" or "while" blocks for it, i'd like it if i can keep it in 1 simple formula.. hmm...
Like i said maths was never my strongest point, so i thought "why not just let somebody else do the base work for me?" and voila! it's got code and everything! :D
i'm onto something (thank god i asked google cus i would have probably taken days to think up a system like this otherwise!)
level + 300 * math.pow(2, float(level)/7)
use:
exp += 50
User gets 50 exp per skill use (on most skills anyways)
level:
exp = lvl + 300 * (2(lvl/3))
Exp
lv 1: 50
lv 50: 61556
lv 100: 248737
Use Counts
lv 1: 1
lv 10: 46
lv 20: 191
lv 30: 437
lv 50: 1231
lv 100: 4975
this is a bit too many use counts for high levels and a bit low for low levels... but what if i....
i'd want lv 10 to be about 100 uses and 20 to be about 300, the others are fine i think...
But what if i reduce the exp for level 1-10 to like 20? then 10-20 to 30, then 20-30 to 40 and then 30-100 sets to 50?
Yes! that's a solution i think! this took me a while! if i do that, lets see...
Not 100% accurate, but... close enough.
Use Counts
lv 10: 113.05 (exp / 20)
lv 20: 355.92 (113.05 + 242.87) <-- (exp - (exp@10 / 30) + last Use Count)
lv 30: 663.65 (355.9 + 307.75)
lv 40: 1010.39 (663.65 + 346.74)
lv 50: 1457.61 (663.65 + 793.96)
lv 100: 5201.23 (663.65 + 4537.58)
lv 101: 5301.73 (663.65 + 4638.08)
lv 200: 20226 (663.65 + 19562.34)
This is what i was aiming for:
Use Counts:
lv 10: 100
lv 20: 300
lv 30: 600
lv 40: 1000
lv 50: 1500
lv 60: 2100
lv 70: 2800
lv 80: 3600
lv 90: 4500
lv 100: 5500
This is reasonably close right? and (sure) it's a little bit easier to get to 100 with the formula i thought of above (i.e. limiting exp for first 30 levels) but look at where it gets us!With this there's (almost exactly) 100 skill uses to go from level 100 to 101.and it takes roughly 5x the effort to go from 100-200 as it does to go from 1-100One thing that's not in here is "free exp" that is exp that the player gets for killing monsters that he can distribute himself (meaning he can level up skills without relying on using them) but there is consistency in how much more exp is needed for the next level for an infinite amount of levels, so i can adjust monster free exp depending on their power level. In fact i could do something simple likeEnemy Level * 2 = free expso a level 100 monster gives 200 free exp i.e Killing 13 level 100 monsters could spin you (2600) enough to get a skill from 50 to 51.Going from 99 to 100 would require 25 level 100 monster kills.I could also just crank up the gain on the free exp system and reduce the number of exp gained per skill use overall to make things easier for me.Either way, what i've got now is decent... it's at least something i can work with. For some skills though i may give reduced exp depending on how you're using it or what level it's in (i.e. seduction spins more exp in combat than in dialogue, smithing spins more exp for high level items than low level ones)What does this mean at this point?It means i have a scale!I have a scale which i can use to balance how much time everything takes in the game(s) :DAnd if i think things are progressing too slow i just increase the Free Exp to speed it up, thank you Wargaming.net for thinking of this stupid ridiculous system, i'll just use it too!This experience system also just applies to the skills so i was technically doing what i originally set out to do... wait... what else is there to do?Oh right! modifiers, "other" bonuses and more specific exp distribution.I'll need to have 3 values... that isBase: Based on exp/Based on pointsBonus: Modifiers, Major Skill & Items/BuffsTotal: Base + BonusSimple enough right?Skills, Attributes and stats willWhy would i decide to do this this early on? simply because i know that it'll be needed, the fastest way to explain is say if i place a buff on the character, that buff gives +25 strength or something. it'd be (quite) a disaster if i were to just add +25 to the base strength, then do a -25 off the base strength when the buff wears off. Sure it'd "work" but that's just asking for problems. It could lead to bugs like the buff being removed twice (permanently reducing the players strength attribute)Also when it comes to skills, if i have a buff that increases my blade skill and would just have 1 value to determine the skills level, i would gain Experience MUCH slower than normal.Also i simply think players will appreciate being able to see the base value and the total value with bonuses so that they know their "real" level.Now then... a small break before i continue!I updated articy (that is, outside of the "Notes" section) to show me the modifiers for every stat wherever i think is appropriate, as well as the "Level Importance" of specialization skills.Now the only thing i haven't done is applying the modifiers to the specialzation skills... or well, i have done "modifier: attribute" but thats it. To be honest i haven't decided yet how it'll work :II'm putting that on hold until tomorrow, i'll spend the rest of my evening relaxing!
Subscribe to:
Comments (Atom)