• Advertisement
Sign in to follow this  

Unity Text Based RPG in Python - Advice?

This topic is 4255 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

***This is a repost of a thread I posted in the "Newbie" forum, but as the core of my question involves Python, I thought it was also appropriate to post this thread here where more people who are familiar with Python may be able to read it*** Hey everyone - I've recently started learning Python as my first programming/scripting language with the goal of creating a text adventure game as a first somewhat ambitious project, and then moving on towards a more ambitious idea of a text RPG. I've been learning a lot of small snippits of Python here and there and working on many small tutorials that introduce various core concepts about the language and programming in general. What I would absolutely love though is a tutorial involving the creation of either a text adventure game in Python, or, a text RPG. I've done a lot of googling and research, but I've been unable to find anything resembling what I'm looking for. I figured if anyone knew where to find something like that, they'd be in this community. Can anyone send me in the right direction? Much thanks, -M

Share this post


Link to post
Share on other sites
Advertisement
I already posted in your other thread on the basics. As I said, I think what you're looking for is a bit of a niche area to expect much in the way of tutorials, but the underlying principles are simple enough and apply to most languages. As with any application, it's essentially a display/input/process loop, and the only hard parts are organising the data (just use lists and maybe tuples for now, upgrade to classes later), and processing the input (use raw_input to get it, then perhaps use the split string method to read the individual words).

If you want more details on any particular area, feel free to ask. I think this will work best if you think about what you want to achieve, plan it a bit, then dive in, asking questions as you go.

Share this post


Link to post
Share on other sites
This might be what you would call "cheating" but here is my game. There are some errors you might run into while playing. Like playing it outside of IDLE
Anyway, here it is:

def gameOver():
print """
-----------------
Game Over
-----------------"""
print """
Alien Intertainment
**********************************************************
----------------------------------------------------------
----------------------------------------------------------
Operation: VIM MPOO
----------------------------------------------------------
----------------------------------------------------------
**********************************************************
http://www.freewebs.com/idaliengames/

**********************************************************
IF THE GAME ENDS WHILE PLAYING, THIS MEANS YOU HAVE LOST.
**********************************************************



Hello. My name is VOX. I will be assisting you throughout
this operation. I would first like to know your name."""
name=raw_input("Name: ")
print """


"""+name+""". You are the top spy in a secret government
organization. This organization is so secret I am not
allowed to tell you the name of it. It is your job is to
find and defeat Vim Mpoo, """+name+""", the government's
most dangerous villian. It is thought that he is the head
of a global cocaine distribution organization. Your
reward: a handsome 4.5 billion US dollars for the completion
of this Operation. Do you except?

1. Yes
2. No"""
yes=raw_input("Answer: ")
if yes=="1":
print """Good."""
else:
print """Too bad, you have to do it anyway."""
print """

What would you like to do now?

1. Get started
2. Learn more"""
main=raw_input("Number: ")
if main=="2":
print """This game was created by Daniel T.
http://www.freewebs.com/idaliengames.
Program used: Python"""
elif main =="1":
print """Initiating..."""
print """


VOX: Your first mission is to get Nip Pom's ID and add
your picture to it. Good luck!
----------------------------------------------------------
MISSION 1: In the car
----------------------------------------------------------
**********************************************************
While leaving headquarters, you see a man drive away quickly in his
car and he looks like Nip Pom. What do you do?

1. Chase them on your motorcycle
2. Call for backup
3. Shoot at them from a distance"""
car=raw_input("Number: ")
if car=="1":
print """
**********************************************************
They notice you following them and speed up. They start shooting at you.
What do you do?
1. Shoot back at them
2. Call off the chase
3. Follow them at a distance"""
chase=raw_input("Number: ")
if chase=="1":
print """
**********************************************************
You shoot one of the wheels and the car goes off the road.
What do you do?
1. Advance while shooting
2. Call for backup"""
advance=raw_input("Number: ")
if advance=="1":
print """
**********************************************************
Lucky shot! you hit him dead on in the head. You go over and
retrieve his ID. You have completed mission one.
1. Go back to base
2. Get password"""
finishOne=raw_input("Number: ")
#finished outside of block
elif advance=="2":
print """
**********************************************************
You call for backup, but backup checks the car, Nip Pom isn\'t
there. You fail the mission."""
elif chase=="2":
print """
**********************************************************
You call off the chase, playing it safe. Nip Pom gets away. You fail
the mission."""
else:
print """
**********************************************************
You follow him at a distance, but he eventually notices you. He leads
you into a trap and you are unable to finish the mission. You fail."""
elif car=="2":
print """
**********************************************************
You call the backup, but he is already escaping. What do you
do?
1. Chase without backup
2. Wait for backup"""
backup=raw_input("Number: ")
if backup=="1":
print """
**********************************************************
They notice you following them and speed up. They start shooting at you.
What do you do?
1. Shoot back at them
2. Call off the chase
3. Follow them at a distance"""
chase=raw_input("Number: ")
if chase=="1":
print """
**********************************************************
You shoot one of the wheels and the car goes off the road.
What do you do?
1. Advance while shooting
2. Call for backup"""
advance=raw_input("Number: ")
if advance=="1":
print """
**********************************************************
Lucky shot! you hit him dead on in the head. You go over and
retrieve his ID. You have completed mission one.
1. Go back to base
2. Get password"""
finishOne=raw_input("Number: ")
#finished outside of block
elif advance=="2":
print """
**********************************************************
You call for backup, but when backup checks the car, Nip Pom isn\'t
there. You fail the mission."""
elif chase=="2":
print """
**********************************************************
You call off the chase, playing it safe. Nip Pom gets away. You fail
the mission."""
else:
print """
**********************************************************
You follow him at a distance, but he eventually notices you. He leads
you into a trap and you are unable to finish the mission. You fail."""
else:
print """
**********************************************************
You shoot one of the wheels and the car goes off the road.
What do you do?
1. Advance while shooting
2. Call for backup"""
advance=raw_input("Number: ")
if advance=="1":
print """
**********************************************************
Lucky shot! You hit him dead on in the head. You go over and
retrieve his ID. You have completed mission one.
1. Go back to base
2. Get password"""
finishOne=raw_input("Number: ")
#finished outside of block
#needs help
elif advance=="2":
print """
**********************************************************
You call for backup, but when backup checks the car, Nip Pom isn\'t
there. He has escaped. You fail the mission."""
#needs help
if finishOne=="1":
print """VOX: Congradulations, """+name+""", on the completion of this mission."""
if finishOne=="2":
print """The password for this level is:
non_important_person"""
print """
VOX: You have retrieved Nip Pom's ID. I will now put your picture in
it.
...
Okay you now have Nip Pom's ID with your picture.

Initiating Mission two...
----------------------------------------------------------
MISSION TWO: Who said anything about evil henchmen?!?
----------------------------------------------------------
**********************************************************
Now you have to find and follow Vim Mpoo to his hideout
without getting caught or killing Vim Mpoo.
Good Luck!

**********************************************************
You go to the last place Vim Mpoo was seen, at the Dahp
Hotel. What do you do?
1. Look around yourself
2. Ask the clerk at the front desk where he is
3. Ask people around the room"""
hotel=raw_input("Number: ")



Don't cheat

Share this post


Link to post
Share on other sites
There are a few modules that can help with the input parsing, like cmd, shlex and csv. readline may help with the actual user input process. If you want the game to run "in real time" even while waiting for user input, then you're probably going to want to use asynchat and Threading.

Share this post


Link to post
Share on other sites
THer is also, for the industrial strength, over-kill scenario PAW which is the Python Adventure Writing module. This does ll of the heavy lifting for creating text aventures for you. This may be more than you want.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
  • Advertisement
  • Popular Tags

  • Advertisement
  • Popular Now

  • Similar Content

    • By revolverolver
      Aloha,
      First time working in 3D. Not as difficult as I thought it would be although I am pretty much a complete beginner in Blender. I chose the low poly style because I like how it looks and it is a lot easier than trying to make it look realistic.
      The gameplay is pretty much all physics driven which makes it feel satisfying to play. If it looks any fun then please check it out. I could really use a review or two.
      Here are some promo codes so that you don't have to pay a dime to download it: 
      PJW7MTMWL3W3
      A4JLYRPTXMJH
      AXRKPMAT7AAY
      YMFJPTPJ9EX3
      JY3W6FNKTM6L
       
      App store link: https://itunes.apple.com/us/app/flip-trickster/id1351027839?l=en&mt=8
       
       
    • By Innoc uous
      I'm working on a space game, and I suck at art. I would love to get some help from someone who is more skilled than me. Things I need include modular space ship parts and GUI elements. Nothing too fancy, just functional so I can get a prototype put together. This could potentially become a serious project, but for now this is just a hobby project.
       
      In this video, you can see a few things I already completed
      :2018-02-24 20-08-13.flv2018-02-24 20-08-13.flv
    • By Innoc uous
      If you want to incorporate noise into your shaders, the Turbulance Library has you covered. Using code I gathered from this library, I made a cginc file that contains all you need to easily implement noise into your unity shaders. Who knows how this stuff works, but man, does it work well!
       
      https://pastebin.com/LLCUpJut
       
      Here is an example of what you can create using these noise functions.
       
    • By Nio Martinez
      I'll be buying a new laptop as my workstation for building games, Mostly 3D but not hard core. 
       
      I'm stuck at choosing between these 2 specs below. Does this really matter and if so, can some one tell my how and why it matters. 
      Choice1:
      Intel core i5-8250U (8th gen Kabylake refresh)(6 MB Smart Cache, 1.6 GHz Base with Turbo Boost up to 3.4 GHz) 4 cores 8 threads
      RAM 8 GB DDR4 (2400 MHz)
      GPU 2 GB DDR5 Nvidia MX150 256 bit
      SSD: yes
      Choice2:
      Intel core i7-7500U 2.70GHz Base Processor (4M Cache, up to 3.50 GHz Boost) 2 Cores, 4 Threads
      RAM 4 GB DDR4 (1800 MHz)
      GPU 2 GB DDR5 Nvidia GeForce 940MX 256 bit
      SSD: No
       
    • By Manuel Berger
      Hello fellow devs!
      Once again I started working on an 2D adventure game and right now I'm doing the character-movement/animation. I'm not a big math guy and I was happy about my solution, but soon I realized that it's flawed.
      My player has 5 walking-animations, mirrored for the left side: up, upright, right, downright, down. With the atan2 function I get the angle between player and destination. To get an index from 0 to 4, I divide PI by 5 and see how many times it goes into the player-destination angle.

      In Pseudo-Code:
      angle = atan2(destination.x - player.x, destination.y - player.y) //swapped y and x to get mirrored angle around the y axis
      index = (int) (angle / (PI / 5));
      PlayAnimation(index); //0 = up, 1 = up_right, 2 = right, 3 = down_right, 4 = down

      Besides the fact that when angle is equal to PI it produces an index of 5, this works like a charm. Or at least I thought so at first. When I tested it, I realized that the up and down animation is playing more often than the others, which is pretty logical, since they have double the angle.

      What I'm trying to achieve is something like this, but with equal angles, so that up and down has the same range as all other directions.

      I can't get my head around it. Any suggestions? Is the whole approach doomed?

      Thank you in advance for any input!
       
  • Advertisement