a little language for platform games

I'm new here but I'm not quite sure whether I'm in the right place. I've designed a few languages as a hobby and produced their associated compilers/interpreters etc but I'll admit I don't understand half of the terminology used on this site. I actually find it quite difficult even navigating the site - I assume using free forum software like phpBB was looked down upon for some reason. I guess having a simple description stating what the forum is about met with a similar fate :)

My current project is a little language to allow non programmers to produce platform games so it's certainly not a generic language but hopefully it might get kids producing games and showing them to their friends. Is this the right place to discus the language and ask any questions I might have? I don't mind a little criticism. If so, where should I post? and, if not, are there any suitable forums anywhere?

The following is some example code that places some moving coloured boxes across the screen and allows the player to jump across them to the exit point:

"Bouncing boxes" at 200, 440

man at 10 400
exit at 560, 250

define mybox
    box 40 by 40
    action stand
    move up 100 then reverse

loop x 10 to 540 step 90
    mybox at x 200 colour random
end

Mike

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Welcome

It's okay to post such things here, though it's often preferred if you write an independent blog article then post a reference and abstract. What do you find most interesting or noteworthy about your DSL?

Other good places to discuss your game DSL in particular would be /r/gamedev, and perhaps gamasutra.

Welcome!

The technical terms are mostly a common reference to use when comparing different systems; they can be picked up over time and are presumably less confusing than ill-defined terms like "a Pythonic version of Haskell".

Anyway, I think the main question to ask is what makes your projects special? What's their 'unique selling point'? Of course, it's fun to hack on things for their own sake and a great way to learn, but it's also a great opportunity to experiment with something that's not been done before. Have you implemented a feature like that, or do you have any ideas to?

Note that this doesn't have to be a typical 'languagey' thing; it could be an implementation feature, like 'compiles down to Javascript' or 'doesn't need installing'. It could even be psychological, like 'the editor suggests alternatives', or social, like built-in Wiki-style sharing.

PS: This site runs Drupal, which is free forum software ;)

I'd suggest editing or

I'd suggest editing or completely removing your first paragraph -- why be rude if you want helpful feedback?

For your language, I suspect many users here are interested in:

  • what's new/innovative about it
  • how it's different from existing languages
  • semantics
  • user experience
  • what need it satisfies

It would also be nice if you had a link to the project homepage.

I myself am also interested in hearing about why you decided to create a new language, why you decided in favor of a language vs. a library (an embedded DSL) in an existing language, what challenges you faced while implementing it, how you decided upon your syntax, etc.

nowt.

I'd suggest editing or completely removing your first paragraph -- why be rude if you want helpful feedback?

Rude? Maybe he found it hard to find info and was giving feedback. Maybe you're being overly sensitive.

It would also be nice if you had a link to the project homepage.

I found it in less than 5 mins. Click on his name, click on his homepage, click on JPlat.

Maybe the website isn't that intuitive eh?

Yes, finding the "Getting

Yes, finding the "Getting Started" and "FAQ" links on the left is extremely difficult.

nowt

Yet he seemed to have trouble doing so and he doesn't seem to be stupid. That's all I'm saying.

?

Hi Mike :)

What was other languages U wrote?

...

Rude: Apologies, I didn't mean to be. But I think it's fair to comment that the site is quite difficult to navigate. It's actually quite difficult to even know that you've landed in the right spot. I appreciate that "lambda the ultimate" means a lot to you but it tells a new arrival very little. The terminology that appears on the front page doesn't help - I still wasn't sure whether this was a public site or something aligned to a course on compiler design. Most popular forums are easy to navigate because they all use similar tools but this one has a home grown feel and, for a new user, this makes it more difficult to use.

Technical terms ... can be picked up over time: As a suggestion it might be an idea to have a list of terms and abbreviations that's available from the front page. Luckily Google came to the rescue to tell me that DSL means domain specific language!

What's new/innovative about it: You just declare what's on a screen, how it moves and what happens if the player touches a given item. Control of the player, physics, collision detection is all handled automatically. This hopefully means the code is very compact and hopefully easy to understand. I'm aiming at folks that haven't coded before or perhaps those that gave up coding a game because it was too difficult. There will be a social side to the language in that you can play anybodies game and vote them up or down. The whole thing will go onto a web page and there shouldn't be a need to install anything other than Java.

How it's different from existing languages: Most languages say how to do things while this just describes what's on a given screen.

Semantics:There are different types of thing in the language: images, boxes, strings and numbers. The are terms that can then be applied to a thing ie

at 100,200
will place something in a given position while

Move up 200 then reverse

will move that thing 200 points left and then back again. There are also actions that can be applied to anything so
action stand
means that the player could stand on a given thing, other actions include climb, die, exit etc. You can define things as well for example:

define elevator image brick.png
    tile 5 by 1
    action stand
    move up 100 then reverse

Loops are very similar to loops everywhere:

loop var num [ to num [ step num ] ]

I need to work on my web page a little so you can see the complete syntax and try writting a few small programs (if you want).

Why you decided to create a new language, why you decided in favor of a language vs. a library: Everyone wants to write a game in the same way they want to write a book or run a bar. Sadly writing a game in a standard language is beyond the capabilities of most people. Even using libraries is beyond many programmers. Hopefully this language makes creating that game a possibility. I should also mention I quite like inventing new languages.

What was other languages U wrote? I've produced a language called db2web that displays a MySQL database onto a web page. I've written another language called rip2db that extracts data from web pages and into a database. I've also written compilers for standard languages like Forth but that was many years ago.

PS is there an easy way to multi-quote or to indent code or to add colour in a reply?

PS2 thanks for your responses

Quick comments

If this is the web page for the language, then I would say the following could be done quickly and raise the level of the current documentation:

- do a proper grammar. You don't define all of your nonterminals, e.g., terms, and some of the definitions look unusual, e.g.

number :=1,2,3... name

Does that mean a number is a digit followed by a name, or a number followed by a name, or is name not meant to be there?

- properly define the % operator. How does it round: towards zero, towards negative infinity? What sign will the result have: dividend's or divisor's?

Internal vs External DSL's

Hi, although this is a month old already, wanted to add a comment for your consideration.

With respect to DSL's a distinction can be made between internal and external. External being a text representation that must be parsed and then executed in some fashion. Which is what you appear to be going for here. The other form a DSL can take, maybe non obvious, is internal.

An internal DSL will use the features of the implementation language for the concrete syntax of the language. Ruby on Rails is such an internal DSL, JMock is another. Some languages are more suited to internal DSL than others. Ruby is well suited to implement internal DSL. Java internal DSL's tend to use fluent interfaces and the builder pattern over some (well designed :)) API.

I recommend Fowlers Domain Specific Languages book for some very thorough, well reasoned discussion of both internal and external DSL and their use cases.

The point finally: have you considered implementing your DSL as an internal DSL? For novice students, using an IDE with a Java DSL maybe as easy or easier than using a stand alone text language. Here I'm thinking "an entire 'game' in main()". Presumably there will some sort of platform game hosting environment, which could thne be an IDE plugin.

Just some thoughts, and Yes, there is a high, well recognized, and some would say cultivated, barrier to entry on this site.