ID:138249
 
I'm a regular guy with some experiment programming with QB and VB. I have just wondered into this webpage by chance and would like to have some questions answered.
1. How many projects are there in existence for BYOND?
2. What type of language does BYOND resemblence?
C/Java/Basic?
3. Is BYOND easy to learn?

I realised that BYOND can be used for MUD programming. But have reservations on its use for graphical RPG programming. Can anyone with experiences using BYOND for graphical programming share with me its strength and weakness?
I'm a regular guy with some experiment programming with QB and VB. I have just wondered into this webpage by chance and would like to have some questions answered.
1. How many projects are there in existence for BYOND?

There are several games already written, and several more in the works... see the "BYOND Hub" link for details.


2. What type of language does BYOND resemblence?
C/Java/Basic?

Most of the fundamental statements and little details of DM's syntax are taken from C++. (DM is the programming language of BYOND; BYOND is the whole package, with the client, development environment, etc.) There are also some nice features that resemble Python (for example, you can use indentation instead of braces... I *love* that one). And then there's some stuff that is, as far as I know, unique to DM... for example, the representation of the object tree as a path a la Unix file paths.


3. Is BYOND easy to learn?

Personally, I think it's very easy to learn. And several people who are fairly new to programming have said the same thing. Plus, there's a large body of documentation available (see the DM InfoCenter link), and the readers of the forums are usually quick to help out with questions.

And once you have learned it, it's amazingly fast and easy to work with... I've been programming since 1982 and I haven't found anything I like more yet! Java seems like endless agony by comparison. :)


I realised that BYOND can be used for MUD programming. But have reservations on its use for graphical RPG programming. Can anyone with experiences using BYOND for graphical programming share with me its strength and weakness?

Well, it's all tile-based, each tile being 32x32 pixels with up to 256 colors. You can import larger files from BMP format and the map editor will automatically break them up into tiles. There aren't currently commands for line-drawing, sprites, etc... in the map area, you get tiles and that's it. However, the tile support is quite deep... you can attach icons as overlays to other icons (for example, to show someone wearing a backpack), you can animate them, you can create different icon states for different situations (for example, a campfire could have several different states ranging from ashes to a blazing bonfire). BYOND also gives you "opacity" and "luminosity" controls which allow you to achieve effects like solid walls with windows, and darkened rooms, with literally no effort.


Probably the best way to start would be to try a few games and look over the DM InfoCenter materials. And, of course, post some more questions to the Forum as the need arises!
In response to Guy T.
On 12/22/00 5:45 am Guy T. wrote:
2. What type of language does BYOND resemblence?
C/Java/Basic?

Most of the fundamental statements and little details of DM's syntax are taken from C++.

I'd differ here a bit...it's pretty different from C++. Much cleaner and simpler (no friend functions needed, no operator overloading, no multiple inheritance), and much more similar to Java/Objective-C/Smalltalk.

In particular, a HUGE difference between the BYOND language (DM) and C++ is dynamic binding. That is, with C++ all class hierarchies must be known and locked down at compile time. With DM, as with the other languages I mentioned, an object is an object and you can deal with it whether you know exactly what hieararchy it's in or not.

In addition, objects in DM are introspective, which means that you can query them at run-time about what class they are and what functions and variables they contain. This makes debugging considerably easier.

One of the biggest advantages of DM over C++ (as I recall) is that you can add functions to any class without needing to subclass, and can even override existing functions in pre-provided BYOND classes without needing to subclass.

Overall I find DM to be about 30 times more productive and easy to use than C++.


3. Is BYOND easy to learn?

There is a slight learning curve related to how variables and classes are declared, but it's very consistent so once you understand it in one case you understand it everywhere. Beyond that, it's an extremely easy language to learn. The easiest I've encountered that also provided the full features you expect from a language.

The DM InfoCenter contains a number of tutorials to get you going. I suggest starting with Your First World:

http://www.byond.com/code/tutorial/simple/simple.html

And then moving to A Step BYOND (which is currently not listed in the tutorials):

http://www.deadron.com/Admin/StepBeyond.zip

Also, if you find this at all interesting, then it's a good idea to buy the book.


I realised that BYOND can be used for MUD programming. But have reservations on its use for graphical RPG programming. Can anyone with experiences using BYOND for graphical programming share with me its strength and weakness?

In addition to Guy's summary, I'll mention these things:

The main weakness is that it is tile-based, and therefore there are certain restrictions on the kind of drawing you can do and, at the moment, the size of the characters.

Within those constraints it provides an excellent graphics model with a lot of flexibility. Using icon states, overlays, underlays, icon tinting, and elevation you can accomplish quite a lot. Characters can wear clothing and armor, things can display wear and tear as they are beaten on, and various spell effects are quite easy.

Check out Shadow Realms for one of the best examples:

http://www.byond.com/hub/hub.cgi?qd=gameIndex;hub=16

For a very different use of the graphics which actually does some pixel-based drawing, check out DragonSnot:

http://www.byond.com/hub/hub.cgi?qd=gameIndex;hub=1
In response to Deadron
Most of the fundamental statements and little details of DM's syntax are taken from C++.

I'd differ here a bit...it's pretty different from C++. Much cleaner and simpler (no friend functions needed, no operator overloading, no multiple inheritance), and much more similar to Java/Objective-C/Smalltalk.

Definitely... I was thinking more of how the code actually looks. E.g., "for(i = 0; i < maxval; i++)", as opposed to "for i = 0 to 10 step 1; begin; i = i + 1; if i < maxval then loop; end;" or whatever. Idiosyncratic things like != and && and << are all taken originally from C++ syntax.

From what I've seen of Python, I think it's the mainstream language that probably matches the "spirit" of DM most. It also happens to be one of my learning goals for 2001 (but BYOND still comes first!).
In response to Guy T.
I'd differ here a bit...it's pretty different from C++. Much cleaner and simpler (no friend functions needed, no operator overloading, no multiple inheritance), and much more similar to Java/Objective-C/Smalltalk.

Definitely... I was thinking more of how the code actually looks. E.g., "for(i = 0; i < maxval; i++)", as opposed to "for i = 0 to 10 step 1; begin; i = i + 1; if i < maxval then loop; end;" or whatever. Idiosyncratic things like != and && and << are all taken originally from C++ syntax.

Here's my favourite example, from my steadily growing knowledge of Visual Basic...

If (Blah > Blih) Then
Beep
lblTxtPlace = lblTxtPlace + "Beep!\n"
End If

As opposed to DM's efficient...

if(blah > blih)
usr << sound('beep.wav')
usr << "Beep!"

and C++ would have to use a roundabout way...

if(blah > blih) {
this.profile->Sound("beep.wav")
cout << "Beep!\n"
}

(I have to brush up on C++... I think that alone is an error! It's convoluted, though, and that's what I was going for... =P)

From what I've seen of Python, I think it's the mainstream language that probably matches the "spirit" of DM most. It also happens to be one of my learning goals for 2001 (but BYOND still comes first!).

Thanks to Linux I have a nice tidy little copy of that, and I didn't even have to visit www.python.org!

Personally, the four languages I'm going to learn are Perl, JavaScript, Java, and I'll leave a little room for Python. I already know a large portion of C++ and BASIC (well, actually, Visual Basic, which is MUCH different...), so I don't really need much of an intense research time for those.
In response to Spuzzum
On 12/22/00 11:13 am Spuzzum wrote:
Personally, the four languages I'm going to learn are Perl, JavaScript, Java, and I'll leave a little room for Python.

Only four languages? Spuzz! I hope you're going to at least make 20 games for each like you do with DM! We have standards here, you know!

Z
In response to Zilal
On 12/22/00 2:29 pm Zilal wrote:
On 12/22/00 11:13 am Spuzzum wrote:
Personally, the four languages I'm going to learn are Perl, JavaScript, Java, and I'll leave a little room for Python.

Only four languages? Spuzz! I hope you're going to at least make 20 games for each like you do with DM! We have standards here, you know!

20 games?! What 20 games?! Oh, right... THOSE 20 games... =)

If I learned those, it'd bring my repertoire up to eight languages, ya know... DM, Visual Basic, C/C++, HTML, Java, Perl, JavaScript, and Python. You'd be insane to expect me to make 160 games!!!

Right now, I'm working on finishing my major claims-to-fame (hey, claim-to-fame must be my new Phrase of the Week!) and saving the little guys for later. Which means that Haven, CATs, AntWorld, and Warrior are next to come... hopefully. I'll periodically work on a lesser game if my expansive work on the major ones gets too tough for comfort.
In response to Spuzzum
On 12/28/00 12:19 am Spuzzum wrote:

Right now, I'm working on finishing my major claims-to-fame (hey, claim-to-fame must be my new Phrase of the Week!) and saving the little guys for later. Which means that Haven, CATs, AntWorld, and Warrior are next to come... hopefully. I'll periodically work on a lesser game if my expansive work on the major ones gets too tough for comfort.

For what it's worth, I'd love to see more of Slurpy. Such a clever idea, and it seems like the others have enjoyed it too.
In response to Tom H.
For what it's worth, I'd love to see more of Slurpy. Such a clever idea, and it seems like the others have enjoyed it too.

Oh, I have lots of plans for that one... but I want to finish the other blasted games first!

I'll note your request, though. I'll work on Slurpy first if I ever get distracted.