Hey, everyone. I've been curious for the longest time about programming outside of the miniscule amount I've picked up in school. I'm comfortable enough with C/C/C# to build basic programs, and have made some VBA tools for my employers, but I've never had the drive or free time to really dig into programming in other languages as a hobby.
That said, I've always been interested in game design and writing. Never enough to make it a profession, but I've always been fascinated by text-based adventure games, RPGs, and the like which are equal parts storytelling, game design, and programming know-how. Problem is, I always get nervous when I start looking around for a new language to learn. I get a bit claustrophobic when trying to look up how languages function, what their limits are, and where to get started. It feels, at times, incredibly esoteric to try and break into the programming scene when you don't know where to get started.
So, to anyone out there, if there was one or two languages that I should focus on intimately to at least get started in designing rudimentary games like this, where should I look?
I think I would primarily suggest checking out Python. There's some game libraries out there for Python (if you need it), and it is a pretty easy language to pick up and learn. Plus the wide array of packages you an import from PIP is very nice. Many games are created with C++. It might be worth checking that out as well? It isn't as easy as Python, but if you have experience with C and C# it shouldn't be too difficult to learn.
Seconded for Python. I went on Codecademy and ran through the Python section. I have no programming experience and it was fairly easy to pick up. The only complaint I would have is that some of the sections are ordered oddly, so that you end up doing more complicated coding before learning some of the basic applications.
https://wiki.python.org/moin/PythonGameLibraries There are a ton of Python game libraries available as well. For something basic you could look into pygame.
Came here to say this. Also, as far as building text-based interfaces go, Python has urwid[1], which although curses-based, abstracts many of the nasty bits away. [1] http://urwid.org
If you're interested in learning to program JUST as a means to create text-based games, not as an end in itself - i.e., if you'd rather focus on the story than on the game design - you could check out Twine (http://twinery.org/). Twine is a tool you can use to create interactive text games, and you don't have to do anything more complex than simple CSS and pseudo-Wikipedia markup language. I wouldn't recommend it if you plan to track stats, or have the PC fight NPCs, or create an inventory system more complex than (has item = yes or no?), because your story will quickly get too tangled to keep track of. Twine's really best if you're creating a CYOA game or similar. Still, in my opinion, anything Inform can do, Twine can do better.
Twine is neat - it was also used to write To be or not to be an awesome "choose-your-own-adventure" adaption of Hamlet, by Ryan North (author of Dinosaur Comics and other randomness)
Last I was paying attention, most people making that kind of game were using Inform. I've never played with it, and in general programming languages that claim to be "based on natural language" are programming languages you want to run away from really fast, but the number of projects that have been completed with it says it's pretty good at what it does.
You could read Creating Languages in Racket, it teaches you how to create your own DSL for writing adventure games in. You'll end up with code that looks like this: http://queue.acm.org/downloads/2011/racket/6-color/world.rkt You can teach yourself more Racket by reading SICP.
There are many factors that should be considered while choosing a language for a game. Being that it'll be a text-based one, it surely simplifies certain common problems, e.g. memory/CPU consumption. Text-based games can be simple in their mechanics so I would also keep programming it simple - thus I'd go with Python. It's easy and you can convey your ideas more quickly compared to other languages. The downside of this is that if you'll want to make someday something more than a text-based game, Python is not the way - at least in my opinion.