Looking for suggestions/advice

Rodney Somerstein rodneys at io.com
Wed Aug 10 14:55:44 EDT 2005


I have owned a copy of Rev for several years and am trying to decide 
if it is appropriate for a project that I want to do. I haven't done 
that much work with Rev, just played around with it. I have a pretty 
good background in HyperCard, so the basic concepts of Revolution 
make sense to me. I have dabbled quite a bit in other programming 
languages and am pretty familiar with object oriented programming and 
programming in general. I am not a computer science major, so there 
is a lot that I don't know as well.

Now, on to what I want to ask for help with. I want to develop an 
application which is a design/play environment for board/card games - 
particularly European-style modern games. This program should allow 
for people to create an add-on module to implement a particular game. 
Initially, it will just allow people to import graphics for playing 
pieces, cards, etc. and set up some very simple rules, such as how 
many cards to draw at one time, whether cards are public or private 
information, etc. Eventually I would like to allow the program to 
completely handle the rules of the game including score keeping, 
enforcement of all game rules, etc. I will start out very simple and 
add complexity as time goes on. The first iterations will require the 
user to do everything manually just to make sure I can handle 
dragging pieces around, dealing cards, etc. Then I will start to 
automate each of these things.

I know that Revolution can easily handle the multi-player aspects via 
communication with a central server that broadcasts the information 
to everyone involved in the game. I'm not sure if this server should 
be written in Rev or something else such as PHP.

I know that Revolution can make the graphical aspects of the program 
much easier than more traditional languages. I'm still not sure about 
being able to easily zoom in and out (scaling) the view of the game 
board, but I suspect it can be handled dynamically in Rev as well.

For my real dilemma, though. I brought up some ideas about this a 
couple of years ago looking for advice. People seemed to indicate 
that this should be a workable project in Rev. Now I'm looking for 
ideas as to how to go about implementing things.

Here are my questions/concerns:

This application is going to require a scripting language. My 
understanding is that Transcript isn't a viable scripting language 
for this purpose (correct me if I'm wrong, please) because there are 
limits as to how much can be done on the fly from an imported script 
rather than one built into the stack. For example, I don't think that 
I can have a user write a script that could be imported as a module 
into a Revolution stack and executed without limiting that script to 
10 lines. Since a game could have several hundred pieces including 
cards, game boards, scoring tracks, decks of cards, etc. that need to 
have rules set for them, how can I go about this? Do I create XML 
tags to allow this? Do I write my own interpreter that Rev then uses 
to execute the scripts? I've never actually written a programming 
language, but I know there are better methods than one big if-then 
structure to parse through a line of code to figure out what it needs 
to do. Any suggestions on how to easily learn what I need to do here 
would be appreciated.

I would like to allow the games to have computer players as well as 
human. That ratchets up the requirements for a scripting language 
even more. Is this something that Revolution is well suited to? Or 
should I really be looking at other languages such as Java? I could 
let users script things via Python or Ruby if I used Java. I know the 
downsides of developing in a language such as Java rather than 
Revolution. I just have this nagging feeling that it may actually 
make for a better cross-platform development system than Rev for what 
I want to do. I'd be happy to be disabused of this notion.

Thanks for any help/suggestions that you can offer.

-Rodney



More information about the use-livecode mailing list