PDA

View Full Version : RPG environment creation kit: Role Playing Script (RPS)


MooglyGuy
05-01-2005, 12:21 AM
As you may or may not have been aware, this semester I had to write a thesis so that I could graduate with honors when receiving my Bachelor's Degree in computer science this May. What I decided to do was to create a scripting language for use in RPG environments, which I've dubbed Role Playing Script. By and large, I've created a robust - and moreover, extensible - language which one can use to script the events, interactions, and so on in an RPG environment. I've also created the assembler for the language to generate binaries, which can in turn be used in the test environment that I've created. Along with the test environment, I've created a rudimentary level editor that you may use.

The thesis itself is http://einstein.etsu.edu/~zrah2/thesis.dochere</a>.

The assembler for the language is http://einstein.etsu.edu/~zrah2/rps.ziphere</a> Please note that you'll have to download a win32 version of GNU Flex if you wish to edit the assembler. Make your changes to lexinput.c, then run "flex lexinput.c", then compile lex.yy.c in a C++ compiler of your choice, preferrably G++.

The test environment that demonstrates the various things that the language can do is http://einstein.etsu.edu/~zrah2/testenviron.ziphere</a>. There isn't any battle subsystem, nor is there any sort of experience/inventory/party system as of yet, as the thesis was about creating a language for scripting the events in an RPG, not a full-fledged RPG engine. However, it's completely open (along with everything else I've posted here), so you're welcome to add such features. There's currently no documentation on the format in which the levels are stored, as the source code is currently sufficient documentation until I get around to writing better docs. Look in ReallyPoorGame.c at the various loading functions.

The rudimentary level editor is http://einstein.etsu.edu/~zrah2/leveledit.ziphere</a>. The level and path to the level which it edits are currently hard coded, but as I've provided an on-screen keyboard implementation and a workable textbox implementation that you can use, it shouldn't be altogether difficult to be able to let the user enter in a filename.

If you have any questions or comments, feel free to post them, and I'll try to respond to the best of my ability.

<P ID="signature"></P>

MooglyGuy
05-01-2005, 06:42 PM
You have to run testenviron.exe from the command line, and pass it two parameters. It doesn't matter what the two parameters are, just that there are two of them - see, when I was originally testing it, I had two actors hard-coded, but then when I expanded it to load from a datafile, I forgot to remove the test to see if the actors' binary files are passed to it. So something like "testenviron.exe foo bar" would work fine.

Also, if you want to compile testenviron and leveledit, you're going to need SDL_Mixer and SDL installed. It's also best if you use Bloodshed Dev-C++ to compile and edit it, just because that's what I used.

<P ID="signature"></P>

Prower
05-03-2005, 07:05 AM
I haven't actually tried the software itself, but I thought the writing for your thesis was really impressive. Usually whenever I read one of my friends' at the department I wind up getting a mysterious headache and not wanting to continue. ;> It was nice to get reminders of some of the old games that I'd forgotten about as well.



<P ID="signature"></P>

Parasyte
05-04-2005, 01:06 AM
KUPO!

Reading the thesis, I couldn't quite figure out why the example source code had the actors saying "Kupo" and whatnot. After running the test environment, it all made sense.
One of these days, I'll install SDL_mixer. But until then, I'll probably just use IDA pro to find the argc check, and kill it. I know, I know! It's kind of idiotic, but so am I.

[Edit: Yay! Replace the byte at file offset 0x0000068A with byte 0xEB. No more argc check.]

<P ID="signature">uew umop ap!sdn we I</P><P ID="edit"><FONT class="small">Edited by Parasyte on 05/03/05 08:25 PM.</FONT></P>