🎉 Celebrating 25 Years of GameDev.net! 🎉

Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!

ferite language?

Started by
9 comments, last by Wijitmaker 20 years, 5 months ago
Hello, this is my first time posting in the scripting forum, so I beg for your understanding in my ignorance I''m the project lead for a freeware historical RTS game called 0 A.D. and we are researching out some scripting lanuages for the game. Up untill this point had decided to go with LUA. But, our LUA scripter just left the project due to some real life matters relating to the health of his wife. Because he was really the only one who understood the lanaguage (and he really didn''t get allot of documentation down), we thought it would be best to re-evaluate the scripting as an entire module. We just hired a few ''newer'' members who will be working with the scripting. They stumbled apon a language called ferite. I was searching this forum for information and glanced over the threads of the last year and I don''t think it has been brought up in this forum before? So my question is, have any of you had any experiance with this language before? Do you know any good points or bad points about ferite? How does it compare to LUA? Here is what we came up with so far: + Powerful. + Familiar C-style syntax. + Fairly well known. + Easily extendable without digging in engine. + Clear and very organised (looks like C++ but without the complexity). + Been in development for 3 years. + Comes with xml, dbi, regex, and other goodies built in. + It comes with a complete API just for implementation. + Integrated language, so we don''t have to compile scripts (though we''ll compile our built-in modules -- low level -- with their builder tool; must make that a final-release thing, though, so that we can keep the modules open during development for faster update). Could also bundle it to use for syntax checking -- no need to write Script Editor. - More powerful than necessary? Lua is sufficiently powerful. - C-style syntax isn''t very newbie friendly. Counter: But we''ll include a library of script functions (scripting API in various compiled modules: AI, RMS, etc) so that beginners and basic modders can play around with the basics (just call functions), while advanced scripters can easily write their own scripts (we''ll need to create a library as we go for our own code reuse purposes anyway) in a format that is familiar to them. - Lua has simpler concepts: UDTs, classes, lists, dictionaries, arrays are all one simple concept. - According to MarkT, from what he''s seen online, AoK scripting - which was Pascal-ish and simpler - is/was more popular than AoM scripting (custom language XS), which is much more C++. Counter: We''ll check with modding communities and see whether they would prefer a more natural language like Lua over a C-style language like ferite. Counter-counter: Existing modders are already technically proficient. It''s potential modders that concern us ... Counter-counter-counter: Script library will help us appeal to both. - It''s pre-1.0. On the other hand, Lua is up to about 5.0, been in development for 6 years, and has been proven in a fair few applications. Counter: Developer version numbers aren''t an accurate reflection. Ferite is only pre 1.0 because the developer first wants to release Windows port, but the engine itself is complete and stable. - It doesn''t have a Windows port yet. Counter: It will be officially released in January. If we need it earlier, the developer can hand it right to us (since we won''t be using a lot of the modules). - It requires a license. Counter: It''s only a BSD license: we just need to include their copyright information in our documentation, and in the binary (about section or credits) ... just so we don''t claim we created ferite. If any of you could offer any advice one way or the other as it relates to RTS games, we would greatly appreciate it! Thanks Wijitmaker™ member of WFG 0 A.D.
Wijitmaker™member of WFG0 A.D.
Advertisement
Ive messed with Lua for a while. If you want, you could send me the scripting portion of the code and I could comment it for you so the next guy could pick it up.

Edit: Ignore that if you mean the language itself and not binding the code to C/C++.



[edited by - Maega on December 22, 2003 12:48:57 AM]
Thanks Maega for your offer. Problem is he really didn''t to a whole lot that would make it worth your effort.

We are still (ug...) trying to find the best language. So if anyone has any advice or thoughts, we would really appreciate it

We broke it down into needs for Frontend and Backend functionality.

Here is what we got for ''wants'' on the frontend:

- few data types: int, string, boolean, object (no need for doubles unsigned etc).
- conventional coding: almost every language goes with C-type implementation whether it''s &#106avascript, perl, php, or java.<br>- real (or as real as possible) OOP: they want classes, objects, inheritance, and all that good stuff. It doesn''t have be complete and standard OOP though.<br>- allow scripters to create their own modules/function libraries.<br>- string/array/regex: we really need string/array functions. XS kept scripters limited with options and even having to create workarounds because they lacked this.<br>- no concepts called meta-tables...<br>- const keyword or whatever the language would call it (ferite calls it final). <br><br>Here is what we would like for the Backend:<br><br>- run multiple scripts in various stages of execution. <br>- get/set a script variable value from within the engine. <br>- call script functions from the engine. <br>- call engine functions from the script. <br>- create variables, arrays, and objects. <br>- expose complex engine data structures and classes (possibly with a custom interface)<br>- pause scripts during execution and, later, resume them.<br>- restrict acess to any unsafe features of the scripting language, if applicable: File I/O, network access, system diagnostic etc.<br>- (Preferably) To run like the proverbial bat out of Hell. <br><br>In your folk''s experiance, what spripting language would fit that list best? <br><br><font size="1" color="#FFA07A">Wijit</font></b><font size="1" color="#FFA07A">maker™<br>member of <a href="http://www.wildfiregames.com">WFG</a><br><a href="http://www.wildfiregames.com/0ad/portal.php">0 A.D.</a> </font>
Wijitmaker™member of WFG0 A.D.
I don''t think you''ll find any language that supports all that. Python comes close, but has no const keyword, you tend to use lists or dictionaries rather than arrays, and restricting execution to certain modules is not easy.

[ MSVC Fixes | STL Docs | SDL | Game AI | Sockets | C++ Faq Lite | Boost
Asking Questions | Organising code files | My stuff | Tiny XML | STLPort]
I stopped develepment of a language that had some of these features.
It looked like a mixture of Java/C++ but less powerful (but sufficient for my needs).
It was OOP, had single inheritance, simple overloading etc.
It had three data types, string, int and float (int was abused as bool).

The compiler generated a big file (the program) that was later loaded by the VM. Then you could create a "thread" that ran the actual function.
A manager was responsible to collect all threads and for pausing/resuming them. It had one function that executed the next opcode in each active thread.

The VM was a rather simple stack-based machine.

The last thing I tried to implement were static member variables and methods.

Well, in the end it got too complex (mainly due to some bad design decisions - not concerning the script syntax but the implementation of the compiler).
Another negative point was that it was made in Delphi, so porting etc. was not really that good.
One of the most annoying things was integration with the engine, which I didn''t think through that well

A simple script looked something like this:

class CDoor {  int open = 0;  void OpenDoor() {    if(open==1) {      Ego.Say("It'' already open.";    }    else    {      Ego.Say("Ok. Open.";      open = 1;    }    return;  }  void CloseDoor() {    if(open==0) {      Ego.Say("It''s closed already.";    }    else    {      Ego.Say("Ok. Closed.";      open = 0;    }    return;  }} 



Maybe I''ll work out the flaws and re-implement it in standard C.
quote: Original post by Wijitmaker
So my question is, have any of you had any experiance with this language before?
I haven't, but I browsed the site and looked through the CVS pages of sample scripts. I was far from impressed.

quote: Do you know any good points or bad points about ferite?
Bad: It is designed to be a "simpler C".
Bad: It has unnecessarily verbose syntax. (Who needs an alias keyword?!)
Bad: Its closure construct has convoluted, unintuitive syntax (please take a look at Python's lambda for comparison).
Bad: It unnecessarily introduces namespaces (a Console namespace to be able to print? What is this, Java?)

[Edit: Bad: It's immature.]

Good: I'm not using it. Neither should you.

[edited by - Oluseyi on January 12, 2004 12:03:56 PM]
Go with Python. You won''t be disappointed.

daerid | Legends | Garage Games | Spirit | Hapy | Boost | Python | Google
"Doomed to crumble, unless we grow, and strengthen our communication" - Maynard James Keenan, Tool
daerid@gmail.com
Thank you Oluseyi, thats the kind of cons I was looking for!

AP: Yeah we briefly toyed with the idea of writting our own script... but it would just prolong our development time which we really don''t want to do.

Kylotan: I think your right, there just isn''t a silver bullet out there

You guys are all mentioning python. I was under the impression that LUA had its advantages over Python - especially in the area of speed?

Sorry don''t mean to take away from the discussion here:

http://www.gamedev.net/community/forums/topic.asp?topic_id=199348

Yeah its looking more and more like ferite isn''t really a good option. If any of you have anymore dirt you could dig up against ferite let me know so I can present it to our programmers. We are going to make our final decision this weekend in our programmers meeting.

Thanks again

Wijitmaker™
member of WFG
0 A.D.
Wijitmaker™member of WFG0 A.D.
From the little research i did on Lua vs Python i chose Lua because it was..., well I thought it was cooler. Lua may be a bit faster but it does a hell of a lot less for you. They are both used in the industry so i wouldn''t say Python is too slow.

If you have a lot of scripts written already then stick with Lua and try to get your last guy to teach you a few things if he has the time. Otherwise, read through that thread you just posted and take your pick.
quote: Original post by Wijitmaker
Thank you Oluseyi, thats the kind of cons I was looking for!
My pleasure. Seriously

quote: You guys are all mentioning python. I was under the impression that LUA had its advantages over Python - especially in the area of speed?
Lua has advantages over Python. Python has advantages over Lua. C has advantages over assembly. COBOL has advantages over FORTRAN. X has advantages over Y.

Generic statements are worthless without specific context - in which case they are no longer generic. You have a project and a set of goals for that project; does Lua completely meet your base requirements? Does any other language? If none of them do, which comes closest?

quote: We are going to make our final decision this weekend in our programmers meeting.
I sent CheeZy an email through your forums. Pester him about it.

This topic is closed to new replies.

Advertisement