3D RPG Text Adventure (no .. really, I promise: 3D)
Hashcode (182)

NOT YOUR TYPICAL REPL TEXT ADVENTURE!

[ UPDATES: ]
1. WHY UP-VOTE? If you play the game and like it, please give it an up-vote so more people can see and enjoy it. The REPL "Talk" screen sorts projects by a ratio of AGE vs. UP-VOTES.
2. Don't forget to REST when you've taken damage after a fight!

[ STATS: ]
As of 2020-03-22:

  • Over 8,000 lines of complex class-based Python code
  • ~800 total characters created
  • ~80 characters played >= 0.01 day (longer than ~8 minutes)


Hello fellow REPL'ers,

A while back, I shared my initial idea for creating a 3D maze game. I took that idea and combined it with an RPG Text Adventure I've been working on for a while. Here's the result!

NOTE: Game is best played in a full screen window due to the 3D perspective "window" in the upper right corner:
https://harn-gamemaster.hashcode.repl.run/

Typical text adventure commands can be used to move (such as north, west, etc), however you can also use the cursor buttons:
Up: Move forward
Down: Move backwards (doesn't change facing direction)
Right: Turn to the right
Left: Turn to the left

While the graphics seem VERY simple, it is in-fact a 3-layer rendering engine. If portions of the first layer are transparent (such as an opening in a wall) then the contents beyond are rendered. This means when you open a door, the contents of whatever is beyond that door will be shown, etc.

Currently, the engine can render: walls, a few kinds of doors, archways, torches, caverns, bridges and more.

Don't forget: You will still need to read the text side of the screen for room descriptions, NPCs and other information.

The RPG includes:

  • Save / restore characters
  • Custom character creation
  • Multi-layer armor
  • Skill-based fighting
  • Tick-based engine where things happen when you aren't typing ("tick" is around 10 seconds)
  • Day / night cycle
  • NPCs can be talked to
  • Quest tracking

Lastly, the game is clearly not complete. I work in my spare time on:

  • add "room objects" like levers which can be pulled or paintings that can be examined, etc
  • filling out the map
  • add more "frames" to the rendering engine
  • add more quests and items (eventually you will leave the Keep to adventure in the Borderlands)

I would guess there's enough in the game to play through the first 30-40 minutes or so (including the rat warrens).

Let me know what you think!

PS: Don't forget to play the game in a full screen / large window:
https://harn-gamemaster.hashcode.repl.run/

PPS. If you get injured, use the REST command (while not in combat) to heal up.

You are viewing a single comment. View All
Hashcode (182)

QUIZ TIME! (PLEASE UPVOTE ONCE OR TWICE FOR VISIBILITY)

There are a couple of characters that are racking up some serious time on this:
RAINJER, SIX, LIZZY FOSTER, QWERT, and a few more..
I recognize @LizFoster and maybe @PintsizedSix40 or @SixBeeps but I have no way of knowing who the rest are.

If you've played through the initial quest, I have some questions for you:

  1. What's your favorite part about the game?
    a. Collecting new equipment / items
    b. Completing the 1-2 quests that are in the game
    c. Killing mobs (only rats currently)
    d. Exploring the city
    e. Fill in the blank

  2. Character creation:
    a. Rating overall (1-10)
    b. Ideas for improvement?

  3. Combat system:
    a. Rating overall (1-10)
    b. Ideas for improvement?

  4. Ideas for new frames to render in the 3D view. I don't want the game to be too creepy as there are kids playing on REPL. Keeping that in mind.

  5. I need to add a bit more "fun" to the Rat Warrens and then I'll move on to adding more of the city and another exploration area with new mobs (catacombs).. Does this sound exciting or "just another grind"?

  6. Would you like to see the "text" area cleared after each input?

  7. Should I implement a "score" for the game based on quests completed? And then possibly turn that into a public "top character" list?

Thanks!

LizFoster (371)

@Hashcode

    • Either c or d
    • 7
    • If possible, make it customizable (i.e., allow users to
      edit any attributes they'd like to be slightly different)
    • 6
    • Make the miss chance much lower. My first ever battle
      took around 20 minutes of just entering A over and over
      again. (Lol) Also, I got stuck in an infinite loop of me
      fleeing and then immediately getting attacked.
    • To keep things simple, for trapdoors maybe just have a
      rectangle in the center of the screen (with lines through
      it to make it look like wood). For the warehouse, maybe
      just have a few boxes lying around if possible. I like
      the rat designs, they are rather cute.
    • Yes, it does sound exciting. As a quick suggestion for
      the rats themselves, maybe make there be a 5-7% chance
      for the rat you encounter to be a large / alpha rat, and
      the deeper you go into the warehouse, the higher that
      chance goes.
    • I find grinding fun actually, so it sounds exciting!
      (Lol)
    • Yes, but maybe have it so that it reprints all available
      directions each time, as it gets slightly annoying to
      have to say "LOOK" every few turns.

Overall, this is quite fun to play, but I'm a bit of a sucker for RPGs, so maybe I am biased!! Thank you so much for asking for my input in this; I will help in any way I can.

Good work!! (〃^▽^〃)

Hashcode (182)

@LizFoster Great Feedback!

To clarify #6: This is when you use the cursor keys to move correct? Normal "east", "west" commands should print the room descriptions / exits. Easy fix would be to make the forward / back keys work the exact same way as entering the direction. I'm not sure we should do that when you turn tho. ?

LizFoster (371)

@Hashcode Well, I am referring to, if you enter somewhere like a shop and say "BUY," it:

-does not allow you to exit if you changed your mind
(though that's no big deal at the moment)

-does not print which direction you must go to leave
the shop once you say "DONE." Not TOO big of a deal,
just a little pet-peeve.

Hashcode (182)

@LizFoster Oh.. both good points.

Fixes would be:
#1 Auto exit "talk" mode if you move a direction (command or cursor keys)
#2 Reprint the room description and exits when exiting "talk" mode via "done"

LizFoster (371)

@Hashcode Ah. Makes sense. Would that be difficult to do? I haven't looked much at the underlying code, so I don't know myself..

Hashcode (182)

@LizFoster I don't think they'll be too hard. I tried to keep a nice code base for easy modifications.

LizFoster (371)

@Hashcode Sweet! Hope my input is useful! ^ ^*

LizFoster (371)

@Hashcode Oh, yes, and also, would it be possible for you to at some point add the town map as one of the available options?

Hashcode (182)

@LizFoster Woo.. this one might be more difficult. Like an ASCII version of the town map?

(Also, I added a PPS to the main description above mentioning the REST command which heals you up after taking damage -- not sure if you've seen that.)

LizFoster (371)

@Hashcode Ah. Alright. If you want, I could see about making an ASCII version of it myself, just so you can work on more important things.

Ah, yes, the REST command. I'd actually like to suggest that you make the IP go down a bit faster when resting; after my first battle I had to rest from PEN 11 to PEN 0 (It took almost 5 minutes, which was a bit of a drag..)

Hashcode (182)

@LizFoster I'll add a fix #3: Make REST work better -- quality of life improvement :)

And holy cow.. PEN 11! Ouch! If you "skills-combat" what's your club skill level?

LizFoster (371)

@Hashcode if ML is skill level, then 45. This is what I see:

Hashcode (182)

@LizFoster Yep: ML = Mastery Level, technically clubs are great offensive weapons and so so defensive weapons, so they get a +15 ML bonus when used for attacking which means you Effective Mastery Level (EML) ends up being 60 before applying penalties (PEN). Each weapon has different bonuses for offense and defense (parry). For each point of PEN you subtract 5 EML. PEN comes from accumulated injuries or carrying too much equipment (encumbrance). Complicated right!?

The AURA skill comes into play when REST is used. It heals a random # of InjuryPoints from 1 to your current AURA skill level. I'm going to adjust that to always apply the amount of AURA skill you have towards reducing IPs. And if you make an injury "all better" then it will roll to the next injury.

LizFoster (371)

@Hashcode Huh! That is complicated, but surprisingly much more logical than it appears in-game.

Ah, I see. Are there currently ways to raise your AURA skill level?

Hashcode (182)

@LizFoster Not at the moment. I'm in the middle of working on Item "Effects" where they add modifiers to various player abilities. There is a silver ring at the end of the Rat Warrens that is supposed to give you a magical bonus to Agility. But it's not working just yet.

LizFoster (371)

@Hashcode Oh, interesting. I know where I'm going next wwwwww

Hashcode (182)

@LizFoster Just a warning the rats get harder the further you progress :) One recommendation is to turn in a few of the collected rat furs to the Provisioner and then buy some additional armor from the Tanner (leather armor).

You can use AC command to see how well each body part is protected. Places like the face are tough, but rats won't hit that high on the body. Feet and arms/hands are usually the places to beef up easily with cheap leather armor.

Also at any shop keeper, when you type BUY they usually list all of their wares. From there you can hit [enter] to avoid buying something but then type in the names of whatever you're interested in. For example at the Tanner in talk mode:
You type: leather surcoat
Response: Leather surcoat : made of leather and covers shoulder, thorax (front), thorax (back), abdomen (front), abdomen (back), hip, groin, thigh

LizFoster (371)

@Hashcode Oh wow, that's really handy! I did not know that that was a thing, but it will come in handy for spending money smartly.

Hashcode (182)

@LizFoster updated with v47:

  • utils: REST quality of life changes
    (always apply full AURA stat to healing injuries)
  • utils: make TALK part of the main prompt
    (handle directions as "done", reprinting room/exits)
  • utils: add 0=Cancel option for most choices

(You'll need to "save/quit" and refresh the game to see the new changes)

LizFoster (371)

@Hashcode Wow, that was fast! Alright, I will check them out right now.

LizFoster (371)

@Hashcode Great! It all works perfectly! However, now when I say enter to quit the buy menu, it says "Invalid Item." Can you make it say the same thing it does if you say "0?"

LizFoster (371)

@Hashcode Alrighty then! I have completely gone through the warren now. Should I keep the three keys, or are they now irrelevant? They are heavy and give me one PEN at all times. Also, do SP contribute to weight?

Hashcode (182)

@LizFoster Hey great!
1.You can ditch the keys. The doors will stay open now that you've unlocked and opened them. As a matter of fact, I'm going to fix the key weights. They were supposed to be lighter.
2. Having PEN is going to be inevitable as you progress in the game. The better armors are heavier. However, just like in real life your skill also goes up as you use your skills. So even though you may eventually have 1-2 PEN all the time, your skill increases should offset it.
3. SP doesn't increase weight
4. Under character stats you'll see "Endurance". This is based on the "Conditioning" skill (skills-physical). The amount of weight you can carry per penalty point is based on Endurance. Also, in the future, I may add the concept of "bags" (to hold items). Some bags could be magical and remove the weight of the items they contain... but that's future TODO.
5. The other "quality of life" change I might make is counting equipped weight as less of a penalty. IE: we notice the weight of our clothes less than say a heavy thing that we're carrying.

Just thoughts for now.

LizFoster (371)

@Hashcode Those are good ideas! By he way, are there currently any clubs aside from the "rat catcher's" club in the game? I've looked around town and can't find any other one's, though it would not be odd for there to be only one at the moment, due to hw early in development this is.

Hashcode (182)

@LizFoster There's a "wooden club" sold by the Provisioner (same stats as rat catcheer's club):
Wooden club : Made of wood, does 1D4 crushing damage and uses club skill
The arms dealer sells both "iron mace" and a "morningstar" which also use the club skill:
Iron mace : Made of steel & wood, does 1D6+1 crushing damage and uses the club skill
Morningstar : Made of steel & wood, does 1D6+2 piercing damage and uses the club skill

Did I mention that I was going to add weapon degradation over time? IE: eventually weapons will break. The damage to your weapons will be greater if you're using a wooden weapon vs. metal armor and/or other weapons (parry) ... but that's also coming in the future. :)

You may notice that wooden weapons are cheaper vs. steel & wood or entirely steel. As in real life the "better" weapons last longer and are more expensive to make.

LizFoster (371)

@Hashcode Oh wow, I didn't even consider weapon degradation, but that sounds like it would definitely make things more interesting!(* ̄▽ ̄)b Are those damage values based off of actual DnD rules, or not? It has been ages since I have looked through them (Lol)

Hashcode (182)

@LizFoster Actually, the RPG system is based on HârnMaster Third Edition (by Robin Crossby).

I tried to stay as close as possible to the values used for damage, item costs and armor protections.

I used many of the "Advanced" rules found in this free for distribution PDF (weapon list is on page 9):
https://www.lythia.com/warflail/downloads/HMA_Rulebook_v1.4.pdf

The initial world setting is based on D&D's Keep on the Borderlands (Module B2) -- Unfortunately, I had to adjust the map of the Keep quite a bit to make it playable with the rendering engine. Nothing like getting paper thin walls, etc.

The rat warren and other upcoming "adventure areas", I'm sort of adding on the fly for progression.

NOTE: I typo'd the Morningstar's damage type above. It actually does piercing damage.

LizFoster (371)

@Hashcode Oh, wow! Well good work, it looks about the same as the experience in-game. I liked the rat warren, and made a little map on graph paper (I'll probably do that for every area in the future) (Lol)

Hashcode (182)

@LizFoster Here's the "clubs" table from another set of "enhanced" rules.. but I'm not sure about the distribution license of those rules in their entirety.

LizFoster (371)

@Hashcode Oh, so the Morningstars deal club damage?

Hashcode (182)

@LizFoster Yep, Morningstars use the "club" skill, but deal piercing (point) damage which is applied differently to armor types vs. crushing (blunt) damage.

https://en.wikipedia.org/wiki/Morningstar(weapon)

LizFoster (371)

@Hashcode Oh, interesting! What is kurbul? I searched on Google and found nothing related to RPGs..

Hashcode (182)

@LizFoster Kurbul is a cured form of hardened leather in Harn. In the game I named those pieces "hardened leather" so they would be easier to recognize. They are cheaper-than-metal forms of outer layer pieces:
https://en.wikipedia.org/wiki/Greave
https://en.wikipedia.org/wiki/Vambrace

Hashcode (182)

@LizFoster I just pushed v47.1:

  • rooms: adjust key weights lower
  • utils: equipped weight is counted as 1/2
LizFoster (371)

@Hashcode Ohhh, that makes sense. Thanks ^ ^*

LizFoster (371)

@Hashcode Yay! That makes me way lighter! (Lol)

How heavy were the keys before?

Hashcode (182)

@LizFoster They were 0.8 lb each. Which was silly. They should only weigh 0.1 lb now (or maybe even 0 lbs due to rounding). Counting only 1/2 of equipped weight as encumbrance will also help a ton.

NOTE: Me changing the key weights only affects players picking up the keys from here on. Older keys in your inventory will stay the same. Items are attached to the character after they are picked up. This will allow me to add enchantments and other fun stuff later.

LizFoster (371)

@Hashcode Ah, okay. That's not too bad though, since as you said, they are useless, ha ha.

ShadedFlame (23)

@Hashcode So i was fighting a rat and "This program has closed ubruptly." And shut down... no error message...

ShadedFlame (23)

@Hashcode I have finished quest one and gone through the rat warrens... I have no idea if there is more... How do I open the trapdoor in the bailiff's place? (I think thats where it is)

ShadedFlame (23)

@Hashcode Also, I bought a mace and still had the club... When I attacked it used both!

Hashcode (182)

@ShadedFlame This does happen from time to time in REPL, I've noticed. I'm not sure it has anything to do with the game. I think it's something behind the scenes that resets the client entirely. Normally, if there's an error, it will show the error log.

The annoying part is that you lose your saved progress. :/

Hashcode (182)

@ShadedFlame Regarding trapdoors: they are located in both gatehouse towers. They can be opened with "open" command.

As for more to the game: Not much more at the moment.
Right now, I'm implementing 1 of each kind of "thing" so that I can proof out portions of the game.

For example:

  • The existing map has doors, locks, vendors, a quest or 2 and several mobs.
  • 1 mini intro dungeon with a mini-"boss" at the end
  • most item types are represented by several items and 1 currently has special "effects"
  • mobs in the game have behaviors that can trigger various events based on conditions.
  • the rendering frame is getting much better and can display many different kinds of terrain / walls / openings (just added the "short wall" at the top of the gatehouse towers).

The next phase of development will be:

  • finishing the initial map for the keep:
    • tavern
    • inn
    • upper walkways from the towers
    • entrance to the inner keep (and it's surrounding areas)
  • adding "room items" to the game. These cannot be picked up, but represent objects that can be manipulated in some way. Examples would be pulling a lever that opens a trapdoor elsewhere in the game or being able to examine a painting on a wall to find out information.
  • adding a LOT more talking information across more mobs
  • the talking information will lead to a total of 20-25 quests
Hashcode (182)

@ShadedFlame Yes, in theory dual-wielding is possible but comes at a price (skill penalties). I haven't really worked through it every well at the moment so there may be bugs.

Also, there are also 2-handed weapons in the game as well. Be careful of trying to dual-wield with a 2-handed weapon, I doubt you'll land any blows at all due to penalties.

ShadedFlame (23)

@Hashcode WOW IT IS IMPOSSIBLE TO KILL A SENTERY

ShadedFlame (23)

@Hashcode One more thing... How in the world could I get enough money to buy a pike???

Hashcode (182)

@ShadedFlame Heh, I don't recommend trying to kill a mob with superior weapon skills and armor at this point :) They don't drop their equipment anyway.

Hashcode (182)

@ShadedFlame Remember, this is just the beginning of the game. Money will eventually get more plentiful with more quests, and adventure outside the city. Rats were never really supposed to drop actual currency.. they do for now because there aren't many other ways to make money.

ShadedFlame (23)

@Hashcode Sorry, I find it hard to belive this is only the beginning because this is FAR beyond what I could ever make...

ShadedFlame (23)

@Hashcode Tried to kill a gatekeeper LOL One hit killed me!!!!

Hashcode (182)

@ShadedFlame Last night I worked on spider and skeleton art for upcoming quests :)

Hashcode (182)

@ShadedFlame The gatehouse guard is pretty loaded. NOTE the SkillEnum.POLEARM: 50, # 21 Based + 50 Train line below which sets his skill with polearms (from person.py line 145):

    PersonEnum.BL_KEEP_GUARD:
        Mob(PersonEnum.BL_KEEP_GUARD, "a gatehouse guard",
            "A gatehouse guard keeps watch over his post.", 60, 14, 50,
            cur=DiceRoll(1, 6, 40),
            attrs={
                AttrEnum.SEX: 1,
                AttrEnum.STRENGTH: 14,
                AttrEnum.STAMINA: 14,
                AttrEnum.DEXTERITY: 12,
                AttrEnum.AGILITY: 10,
                AttrEnum.EYESIGHT: 14,
                AttrEnum.HEARING: 12,
                AttrEnum.SMELL: 10,
                AttrEnum.INTELLIGENCE: 12,
                AttrEnum.AURA: 12,
                AttrEnum.WILL: 14,
            },
            mob_skills={
                SkillEnum.POLEARM: 50,  # 21 Based + 50 Train
            },
            eq=[
                Weapon("pike", QualityEnum.INF, MaterialEnum.STEEL_WOOD, 15, SkillEnum.POLEARM, 25, 5, 25, DiceRoll(2, 6, 0),
                       DamageTypeEnum.PIERCE, equipped=True),
                Armor("quilt cowl", QualityEnum.AVE, MaterialEnum.QUILT, ArmorLayer.AL_2, ShapeEnum.COWL, equipped=True),
                Armor("quilt tunic", QualityEnum.AVE, MaterialEnum.QUILT, ArmorLayer.AL_2, ShapeEnum.TUNIC, equipped=True),
                Armor("quilt leggings", QualityEnum.AVE, MaterialEnum.QUILT, ArmorLayer.AL_2_5, ShapeEnum.LEGGINGS, equipped=True),
                Armor("studded leather halfhelm", QualityEnum.AVE, MaterialEnum.LEATHER_RING, ArmorLayer.AL_3 | ArmorLayer.AL_4 | ArmorLayer.AL_5, ShapeEnum.CAP, equipped=True),
                Armor("studded leather hauberk", QualityEnum.AVE, MaterialEnum.LEATHER_RING, ArmorLayer.AL_3 | ArmorLayer.AL_4 | ArmorLayer.AL_5, ShapeEnum.HAUBERK, equipped=True),
                Armor("studded leather leggings", QualityEnum.AVE, MaterialEnum.LEATHER_RING, ArmorLayer.AL_3_5 | ArmorLayer.AL_4_5 | ArmorLayer.AL_5_5, ShapeEnum.LEGGINGS, equipped=True),
                Armor("studded leather gauntlets", QualityEnum.AVE, MaterialEnum.LEATHER_RING, ArmorLayer.AL_3 | ArmorLayer.AL_4 | ArmorLayer.AL_5, ShapeEnum.GAUNTLETS, equipped=True),
            ],
ShadedFlame (23)

@Hashcode Woah, Yeah I will never be able to kill him......

ShadedFlame (23)

@Hashcode Looking through the code (BC I'm a cheater) and saw spiders... Am I missing a huge part of the game or is it not active?

Hashcode (182)

@ShadedFlame Actually, I noticed that NPCs were getting VERY high skill amounts due to a change I made a while back to the opening skill levels. I adjusted them back down to normal.. but really at this stage you still won't be able to kill them.

ShadedFlame (23)

@Hashcode Just bought my first broadsword!!!

Hashcode (182)

@ShadedFlame Not in the game just yet.