Hi, Not sure if this question is straying, but here goes, python the thing I didn't like about it is keeping all the tabs straight? I'm not sure if that's still relevant, but it was an impediment to me when I tried it.
Dave On 2/14/12, Thomas Ward <[email protected]> wrote: > Python and Interactive Fiction Games > > by Thomas Ward > > Feb. 14, 2012 > > For about a year I have been searching for the best language to > develop classic interactive text adventures like Zork, Arthur, Hitch > Hikers to the Galaxy, and various other famous games that have been > developed by interactive fiction companies and authors over the years. > When it comes to writing interactive fiction there is a large variety > of tools, languages, and interpreters available for an author to work > with. We have specific text adventure authoring systems such as > Adrift, Inform 7, and Tads as well as all the other traditional > programming languages like C or C++ to choose from. The only problem > was I couldn't find a language that had the right balance of ease of > use but the ability to build extremely complex worlds and handle a lot > of stats. So while there were many options I felt there was no middle > ground which I'll explain in more detail below. However, Python seems > to fit all of my requirements because its easy to use, is > cross-platform, and is able to build extremely complex worlds and > handle a lot of stat checks and so on. None of the other choices > seemed to fit all of the requirements I was looking for. > > For example, I started my quest with the Adrift 4.0 Generator and > Runner. To be fair it is a nice adventure system, and getting up and > running with a basic text adventure is fairly straight forward and > easy. The Generator allows the developer to bring up a simple dialog > box and then he or she can enter the required information into various > edit fields as well as check and uncheck attributes using standard > checkboxes. This makes creating adventures very easy as there is no > programming involved and it is a tool clearly designed for the layman. > Unfortunately, its this simplicity and ease of use that I also found > problematic and undesirable for my own work. > > Having used full blown programming languages for roughly a decade I > found that Adrift didn't give me nearly the flexibility and control > over the game that I wanted. I couldn't integrate a d20 stats system, > nor could I write custom AI for various enemies in the game. It was > simply too generic for what I had in mind for my text adventures. > > Another problem I found with Adrift is while the Generator and Runner > are designed for the Windows operating system environment it wasn't > fully supported on non-Windows platforms. The Scare interpreter is a > cross-platform Adrift Runner for Mac, Linux, and Windows, but lacked > many features available in the Windows Adrift Runner such as a fully > operational combat system. As a result only some Adrift adventures > were fully compatible with Scare, and there was no Linux or Mac Adrift > creation tools that I could find. It made Adrift adventures less than > fully cross-platform compatible which was another of my requirements. > > To compound the issue Adrift Generator is not freeware. As a result I > would be paying for software that didn't really fit all of my personal > requirements where other text adventure systems are open source or > freeware. So it wasn't a good financial investment for me. > > So I turned to Inform 7 which has a huge base of supporters and > developers, and seemed like a good alternative to Adrift. I have to > say my experience with Inform was also mixed. It definitely was more > cross-platform because the Inform development tools are available for > Windows, Linux, and Mac and the free Frotz interpreter is available > for just about any platform I could name. Plus interpreters like > Winfrotz TTS is an added bonus because all of the text messages are > automatically read aloud by Sapi compatible voices on Windows. > However, in the end Inform wasn't so golden either. > > Although, Inform is a programming language I found it is too abstract. > In attempting to make the language for non-programmers to understand I > found it too verbose, and over simplistic in cases. To create a > vampire you might type > The vampire is a Man > which creates a vampire object using the Man class in the body of your > script. The problem here is that Inform only has about 16 default > classes to choose from, and I'd prefer to do something like > Man vampire > which is the traditional way programmers declare new objects in code. > In short, while I found Inform much better supported, better designed > than something like Adrift, I simply did not like the language itself. > > Over the next few months I spent time looking at Tads, Hugo, etc. One > by one I tried them, didn't like them for one reason or another, and > then chose not to use them. After a while I was convinced if I wanted > something more advanced I was going to have to basically write it > myself in C or C++ which wouldn't be ideal given the time and > complexity involved in writing my custom adventure system from > scratch. However, before I got that far I decided what I really needed > was a scripting language which falls somewhere between a full blown > programming language and the text adventure languages. > > Scripting languages such as TCL, Perl, Python, etc were specifically > created to address precisely this kind of issue. I wouldn't want to > write a text adventure in C++ because that is simply overkill for that > kind of project. Plus there is a whole lot more complexity involved > in using a language like C or C++ which would take longer to program a > game of equal length and complexity that I could write in a scripting > language with less time and effort involved. > > Something like Python is ideal in this situation because it is both > simple and powerful. A program can be one line that prints "hello > world" to the screen or be thousands of lines of code broken up into > classes and modules. Although, there are modules like PyGame for > sounds, music, networking, and input all I really needed for a simple > text adventure game was a way to randomly select numbers, print text > to the console, and allow me to enter a string of text for input. > Python is especially suited for this because it fulfills all of these > basic requirements with the random module, the print statement, and > the raw_input() function. The fact it supports advanced programming > techniques like object oriented programming with classes, objects, etc > is just icing on the cake. > > The reason something like Python is so simple to use is that the > Python developers intentionally trimmed out all of the unnecessary > conventions and syntax found in most programming languages such as > terminating a statement with a semi-colon, surrounding blocks of code > with braces,declaring variable data types, and so on. What we are left > with is a very basic language that has the ability to rapidly develop > fairly complex scripts and applications with the absolute minimum > amount of programming necessary. A simple Guess the Number game that > might require 25 lines in C++ can be done in 10 or less in Python. > Thus making Python a great language for writing text adventures in > because I can get most of the advantages a language like C or C++ > provides, but with the same kind of ease of use something like Inform > offers. In short, Python has the best of both worlds for an > interactive fiction developer who wants greater complexity in his or > her text adventures. > > One of the things I personally found useful is comparing strings in > Python. In python its possible to compare a string consisting of one > or more words where in C and C++ comparing strings is down right > complex. Part of the complexity in C and C++ is different types of > character strings and they have to be converted from one type to > another before being compared, and then you sometimes have to use a > function like strcmp() to find out if the strings match. In Python > writing an if statement like this > if mystring == "examine room": > examine_room() > will perform the same level of string comparison without all that > extra baggage. As someone who has been programming in C and C++ since > the late 90's I don't think I understood how much extra work is > involved in handling strings in those languages until it was no longer > necessary to do that level of work to process basic command strings. > > In short, the primary advantage of Python is that Python is designed > to freely code without having to worry much about coding conventions. > It, like most scripting languages, is written to resemble English, and > allows for a greater degree of free writing in the language itself, > For example, consider the code below. > > print "The Legends of Arcania" > print "by Thomas Ward" > print "Version 1.0" > print "Copyright 2012 USA Games Interactive" > > selection = raw_input("Do you want to load a saved game?") > > if selection == 'y': > load_game() > > if selection == 'n': > new-game() > > In this simple code example I have created a very simple game intro > screen in 9 lines of code. Because I didn't have to worry about > braces, semi-colons, parentheses, etc I am able to free write in IDL > or a simple text editor like Notepad without a lot of unnecessary > programming and complexity. Anyone who has never programmed before > should be able to look at the code example above and realize what it > does at a single glance. Traditional full blown programming languages > usually aren't this simple, and it takes longer to program the same > basic message as well. As a result of its simplicity and ease of use > Python allows a developer like me to write very long and complex > interactive fiction type adventures with a greater degree of power and > ease. > > Next, we have the issue of cross-platform support. These days > developing for a single platform like Windows isn't always ideal. > Today everyone seems to be using a cell phone or similar handheld > device. Plus Mac OS and Linux have slowly become more popular over the > last decade. As a result gone are the days when a developer can create > a game specifically for a target environment like Windows and ignore > all the alternatives. Python resolves this issue nicely because unlike > a language like C or C++ Python isn't compiled to a operating system > specific binary, and can be run as uncompiled source code, just a text > file with a *.py extension, or compile it to a *.pyc file that gets > run by the Python interpreter on the target environment. In either > case most games I write have the possibility of being redistributed on > computers and devices other than the one I am using and creating the > game with. As a result the ability to develop games for Mac, Windows, > and Linux using a single language and tools greatly increases the > number of games available for players using a variety of different > devices and operating systems. > > Last, but certainly not least, is all of the modules available for > Python these days. Thanks to a great number of open source developers > there are a number of options to go above and beyond the simple text > adventure. There are modules for adding text to speech support, > modules that wrap sound APIs, modules to add networked game play, etc. > In other words with Python we have all of the tools to create large > multiuser networked based games complete with sound, input, and > speech. This alone has more to offer than the standard interactive > fiction languages because it has so much more potential. > > Bottom line, I can't think of a language any better than Python for > developing the traditional interactive fiction text adventure than > Python. After a year of exploration, experimentation, and many failed > attempts Python has proved itself to meet all of my design goals. Plus > for new users, people who have never programmed before Python, is > truly a good introduction to programming without having to take on all > the complexities of more advanced full blown programming languages > like C or C++. That isn't to say I do not have reservations about > Python, don't have certain complaints, but those are acceptable > concessions as far as the type of games I want to create using the > language. Perhaps if you are interested in writing your own text > adventures you'll find Python to be a great option as well. > > --- > Gamers mailing list __ [email protected] > If you want to leave the list, send E-mail to > [email protected]. > You can make changes or update your subscription via the web, at > http://mail.audyssey.org/mailman/listinfo/gamers_audyssey.org. > All messages are archived and can be searched and read at > http://www.mail-archive.com/[email protected]. > If you have any questions or concerns regarding the management of the list, > please send E-mail to [email protected]. > --- Gamers mailing list __ [email protected] If you want to leave the list, send E-mail to [email protected]. You can make changes or update your subscription via the web, at http://mail.audyssey.org/mailman/listinfo/gamers_audyssey.org. All messages are archived and can be searched and read at http://www.mail-archive.com/[email protected]. If you have any questions or concerns regarding the management of the list, please send E-mail to [email protected].
