Return to “Everything & Anything”

Post

Re: Taiya's IRC-based RPG

#61
Silverware wrote: XML should under no circumstances be used, its bloated and nigh unreadable.
Not true, XML is fine when you need to be able to easily determine the function of the file from the file, without docs. Such as when you need to make something non-programmers need to be able to adapt :P
Warning: do not ask about physics unless you really want to know about physics.
The LT IRC / Alternate link || The REKT Wiki || PUDDING
Image
Post

Re: Taiya's IRC-based RPG

#62
Dinosawer wrote:
Silverware wrote: XML should under no circumstances be used, its bloated and nigh unreadable.
Not true, XML is fine when you need to be able to easily determine the function of the file from the file, without docs. Such as when you need to make something non-programmers need to be able to adapt :P
You can do the same with JSON. It's also shorter and easier to write.

And if you need non-programmers to work with something, don't give them a format, give them a WYSIWYG editor/tool.
A non-programmer will always surprise you with the depths of their insanity.

Whomsoever thought that anybody would use MS Access as a Business Critical Database?
Not any technically minded individual I could name, but every single business that didn't have an IT Geek to do the work for them happens to have an MS Access DB that is Business Critical.
°˖◝(ಠ‸ಠ)◜˖°
WebGL Spaceships and Trails
<Cuisinart8> apparently without the demon driving him around Silver has the intelligence of a botched lobotomy patient ~ Mar 04 2020
console.log(`What's all ${this} ${Date.now()}`);
Post

Re: Taiya's IRC-based RPG

#63
Day 12

JSON
Yesterday was spent without working on storytext at all, mostly because I discovered JSON. I spent part of my coding time working on learning JSON, and part of my time hooking it up. While hooking it up took a little while to figure out, actually offloading the arrays to a JSON file took almost no time at all. Seriously! JSON is awesome for what I need it for: very large arrays, some of them multidimensional. It was hardly any trouble at all to transfer things over from the RPGText class (where the storytext is), and as a result, the storytext file is now considerably shorter. Transferred arrays include things like star system names, planet names, ship names, different arrays for things like debate topics, and more. It's great! I love JSON. *hugs JSON*

AI and turns
I also spent some more time hooking up turns and coding the AI to play alongside players. In the optimum situation, we'll have enough players that we won't need any AI - and I may eventually make it so you can have a 1v1 game - but as it is, I'm not sure how well that would go. I'd have to experiment a while first. I've only ever tested the prototype with five players. (I've also only ever tested the game with AI. It may turn out my game has some fundamental weaknesses, after I put it in the capable hands of human players - but I doubt it'll be anything I can't balance out.)

Another game option I'm considering doing is a co-op option - five AI players vs five human players. teammates would be unable to attack each other, and you would have to win as a team instead of just one-by-one. Helping each other would be a lot more important here... but it could take some balancing.

Class differences
It had occurred to me that classes might not be as "clear-cut" as I had hoped, so yesterday I decided to check that out and see exactly what the differences were between various classes - and if they were pronounced enough. As classes are essentially decided by the differences in your starting stats, there was the possibility that they actually ended up playing the same way - which I most certainly would not have wanted. After all, what's the point in having classes at all if there's no difference in gameplay?

I set up a little simulation to run for a while on the prototype, and these are the results:
  • Salvager: Tenacious little guy. Happy with his job and rarely dies; is always looking for that One Big Haul. Best at winning through either obtaining money or becoming CEO of a salvage company. Relatively easy to play as.
  • Leader: Be it politician or army general, they're best at winning through fame or infamy. Can get into trouble with police, but really need to watch their backs - they're prone to dying in combat. Relatively easy to play as.
  • Merchant: While they can have trouble making ends meet, and may be prone to suicide, their job and friends are their lifeline. Can easily become CEO of a massive corporation like "Space-Mart", and are good at making friends. Can also amass a lot of money, if they're careful. Relatively easy to play as.
  • Researcher: Nobody has options like the scientist. They can win through fame and glory, become an infamous mad scientist, become top in their field, be rolling in cash, or even kill off all their enemies with their inventions. This is balanced by the fact that they're so easy to kill, and the mad ones are highly prone to arrest.
  • Escort: Tough, upstanding citizen. Low-pay job with little glory; only good at winning through friendship. Occasionally subject to problems with unhappiness and may suicide if not cared for.
  • Miner: More prone to suicide than anyone due to their agonizingly tedious job, but if they find a particularly big haul, they could be on their way to greatness. Some miners may join the Dark Side and kill their opponents, but win best either through amassing great sums of cash, or becoming a CEO of a mining company.
  • Bounty Hunter: Can become quite famous - or infamous, depending on which bounties they take - but must always keep an eye out for the law. The law is not on their side. Occasionally die in combat, but are tough enough to take most hits and keep flying. If they feel the need, they can also do personal hits on everyone else to win.
  • Explorer: Explorers are more likely than most to get ganked by pirates or other undesirable folks, but tend to stay happy and keep their noses clean. While they can win through amassing riches, their best bet is through making friends. There's strength in numbers, after all. Relatively difficult to play as.
  • Outlaw: Exiled from society and always needing to look out for the law, the Outlaw is a relatively difficult class to play. They can go full pirate and attack the weak, but if they attack the corporate giants they may become a modern-day Robin Hood. On the other hand, they might decide to just kill off their opponents instead.
  • Spy: Spies keep a low profile and find it exceedingly difficult to die, but also have a difficult time winning as a result. Their options vary between amassing a lot of money through one-off jobs, and killing off all their opponents.
So, yes, there is indeed a great difference in playstyles based on what you choose. :) Finding that out - and finding out that the optimal playstyle to win for each so closely matched the descriptions I'd given them - made me rather pleased.

storytext: 278 lines
file length: 1227 lines (-106)
percentage of file that is storytext: 23% (+2%)
percentage of minimum complete: 79%
percentage of optimum complete: 7%
Have a question? Send me a PM! || I have a Patreon page up for REKT now! || People talking in IRC over the past two hours: Image
Image
Image
Post

Re: Taiya's IRC-based RPG

#69
Day 13
Turns
My limited coding time yesterday was mostly spent on getting turns to work. Because I have so much to deal with, and all of it intersects in one way or another, it's quite easy for me to switch between tasks - at least in this point in development. I can't get storytext to work until turns work, and I can't get turns to really "work" until storytext works. So... yesterday was turns.

And, guess what! I actually have turns working now! :o To some extent, anyway. It's buggy, you receive very little input from AI for some reason, and it doesn't always seem to work - but that's to be expected at this stage of development. Right now, what I have would constitute a Pre-Alpha. However, you can finish turns (sort of - it doesn't ask for answers to Requests from WITH actions). Outcome when winning/losing isn't implemented yet, either, so you're just playing an infinite broken game. :lol: BUT! I'm getting there, one step at a time.

Requests aren't in yet for a very simple reason: They're horribly complicated to work out. I'm not actually sure how I'm going to get them to function properly. :| See, when a player chooses a WITH action, it's supposed to send a request to the other player involved - the one they want to do the action with. But when do you do that? Do you wait until they've finished their actions? What if the turn ends before they finish? And what if multiple people request something of that person? I'd have to stagger the requests. I'm not entirely sure how to get it to work properly, but I have some ideas.

On another note, related to turns:
Something I always intended to talk about was the turn setup, and how Taiya chose which options you received. (Before you ask, no, she does it without any bias toward fondness/how much she likes people. :P ) She tries to figure out which options you would be most likely to choose - based on what you've chosen before, your stats, and your skills - and then lists them all in order from most likely, to least likely (with some degree of randomness, so you can't always choose what you want). Then she has a chance of removing the item on the top of the list - making it so it's less likely to get exactly what you want. What's left is a pseudorandom list of four items that you'd (hopefully) really like to get - meaning that you really have to think about the choices you're given.

Options and choices in games are a fundamental part of what makes them enjoyable. Naturally, I want to make sure that I give the players difficult decisions to make so they have to really consider all the possibilities. :)

storytext: 279 lines (+1)
file length: 1230 lines (+3)
percentage of file that is storytext: 23%
percentage of minimum complete: 80% (+1%)
percentage of optimum complete: 7%

(Also, should I do an "overall progress" bar too? Would take more time/effort, but could be interesting, I suppose.)
Have a question? Send me a PM! || I have a Patreon page up for REKT now! || People talking in IRC over the past two hours: Image
Image
Image
Post

Re: Taiya's IRC-based RPG

#74
Talvieno wrote: (Also, should I do an "overall progress" bar too? Would take more time/effort, but could be interesting, I suppose.)
YES PLEASE! :D

But only when you can, I don't want to over-burden you with something that can wait until you're 50% complete.. by then you'll know what you're making..

or just type in a % value at the end of every post :P
YAY PYTHON \o/

In Josh We Trust
-=326.3827=-
Post

Re: Taiya's IRC-based RPG

#75
Day 14
This marks the end of my second week working on this project. It's kind of a surprise to me that I'm already two weeks in. After all, building the basic parts of Taiya only took a couple days, and even her complex emotions only took a week in total. Nevertheless, I am making extreme forward leaps in progress! I've even added a Completion% thing below, to the bottom of the post.

Important to note: While the number looks very exact, it's actually not exact at all. "Complete" features receive a 100%, "Mostly complete" features receive 75%, "Halfway" of course gets 50%, "Started" gets 25%, and "Not started" gets 0%. Then I just average the values between them. This means that on some days, I may make what appear to be giant leaps even though I only got a few things done, and other days it may look like I did nothing while I actually did a lot of work. (This is especially going to be the case with getting to the optimal amount of storytext.)

Requests
I solved it! It took a little thinking, but requests are in, and mostly functional! Here's how it works:
  1. The player is given their second set of options, and chooses a [Request] option.
  2. Taiya adds the number of the player (just the player ID!) to a queue
  3. Every second, Taiya checks the queue once to see if any of the players requested by the players in the queue have both completed their second turn option, and are not already answering a request
  4. If such a player is found, Taiya informs them that another player is making a request, which player is making the request, and what the request is about.
  5. Taiya waits for a y/n input.
  6. If y/n input is received, Taiya marks the player as open to requests again.
  7. The turn only finishes after either five minutes are up, or all players have both made their choices and finished all the items in their queues.
It seems to work quite well! :) There are still a few things to test to make sure nothing is broken, but I'd consider this feature Mostly Complete.

In addition, I worked on the help manual for the game some yesterday, and fixed a few other bugs/hooked a few more things up, so turns can actually loop now. Unfortunately, it doesn't seem it's yet functioning quite as planned - there are a few bugs (the biggest one being that it doesn't yet restart the timer after the first turn), but I'm making steady progress despite only working a few hours a day. :)

Code: Select all

<Taiya> Isadora spreads some nice tales about Jethro on Kobayashi, making him slightly more famous. | Mako sends some creds to Isadora's account as a gift. Isadora feels very grateful. 

Game progress: 59% Complete (+6%)
Spoiler:      SHOW
Prototyping: Complete
Star system info: Complete
Save file and loading: Complete
Game initialization: Complete
Introduction: Complete
Getting character info: Complete
"lookup" feature: Complete
Renaming ships: Complete
First turn option: Complete
Explaining first turn option: Complete
Second turn option: Complete
Explaining second turn option: Complete
Entering starting stats: Complete
Making requests: Complete
Joining new game: Complete
Basic AI: Mostly done
End-turn output to players: Mostly done
Responding to requests: Mostly done
Finishing the turn: Mostly done
Storytext, minimal: Mostly done
Turn timers: Known to be bugged
End-turn output to main channel: Halfway
Player elimination (losing early): Halfway
Winning the game: Halfway
Alpha testing: Started
Joining game in progress: Started
Adaptive AI: Started
Storytext, optimal: Started
Beta testing: Not started
Restarting the game: Not started
Quitting the game: Not started
Abandoning the game: Not started
Midpoint class change: Not started
Switching nicks: Not started
High scores: Not started
Long-term analysis: Not started
Rebalance for human players: Not started
Writing progress:
storytext: 282 lines (+3)
file length: 1253 lines (+23)
percentage of file that is storytext: 23%
percentage of minimum complete: 81% (+1%)
percentage of optimum complete: 7%
Have a question? Send me a PM! || I have a Patreon page up for REKT now! || People talking in IRC over the past two hours: Image
Image
Image

Online Now

Users browsing this forum: No registered users and 26 guests

cron