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


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:

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:

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)

@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):

        Mob(PersonEnum.BL_KEEP_GUARD, "a gatehouse guard",
            "A gatehouse guard keeps watch over his post.", 60, 14, 50,
            cur=DiceRoll(1, 6, 40),
                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,
                SkillEnum.POLEARM: 50,  # 21 Based + 50 Train
                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),