GameMonkey Script

GameMonkey Script Forums
It is currently Fri May 24, 2019 7:54 pm

All times are UTC

Post new topic Reply to topic  [ 1 post ] 
Author Message
PostPosted: Mon Apr 18, 2005 6:50 am 

Joined: Mon Dec 15, 2003 1:38 pm
Posts: 708
Frequently Asked Questions about GM from this forum

1 How free is GM Script?

GameMonkey Script uses the MIT license, which is free software, having the only requirement to let others know it is free also. You may freely use, modify, redistribute and sell any or all parts of it. Read the full license in the download package for more information.

2 Does GM support this feature?

2.1 Limit thread execution time
Description: GM threads are cooperative routines. They will execute indefinately until they exit or block. There is currently no method to automaticaly restrict thread execution time. However, the debugger does just that. In debug mode, lines of code or specific instructions tell the VM to exit, returning a running state. This behavior could be extended for general use. Update: The current version has a definable callback that can be used to break or limit thread execution.
Caveat: Cooperative threading ensures dependable execution order, particularly between C++ and GM Script. If the VM is paused in the midde of some dependant operation, undefined behavior could occur. Someone implementing this feature must take this into consideration and chose an appropriate time and place to terminate execution. A varient implementation of this could be an endless loop detector which simply counted instructions and terminated the thread (with warning) as code is either errant, or requiring redesign.
Work around: Insert yield() at appropriate places in time consuming code or loops. Redesign processes as update function(s) that can be called repeatedly.

2.2 Serialize the virtual machine state
Description: There is currently no built in way to serialize the state of the VM. This feature could be added as a binding. Modifications may be required if not enough of the VM is already exposed.
Caveat: C++ can call GM functions and GM can call C++ functions. These calls may be nested, so the logical call stack contains both C++ and GM functions. Serializing such a state is not possible, so any implementation would have to serialize only when GM is in valid state.
Work around: Make Load/Save style functions for your objects and call them in C++ and/or GM as necessary to store or restore them from disk.

3. How can I simplify binding C++ data and functions to GM?
Try gmBind over here:

4. Why is this FAQ so short, and not answer my question?
I'll summarize more FAQs from this forum sometime. In the mean time, use that search button, then ask a question in the forum.

5. Why don't you hurry up and implement my feature, or fix/improve GM this way?
I need to make this very clear...
Since GM v1.0 was Open Sourced, I have been maintaining MY build and making it public. I have no intention of controlling or dominating further GM development. Frankly, I don't have the time to. What I am committed to, is supporting the language by 1) fixing real bugs when and if they are discovered. 2) regularly visiting the forum to help with community support. 3) continue to host this forum and web site, (with the help of SomeDude), with no time limit on these.
Everybody has different needs. Some people want specific features, others really safe interfaces, others brute speed, others everything ;) Any change I make, should be tested thoroughly, documented and uploaded. These things take time, that is why I update the 'current beta' fairly regularly with small changes that may not be fully tested, but get the change out fast. You can also imagine that any feature I add to my build, is likely to be something I need, or think most people will use, without compromising legacy code, or adding unnecessary performance penalty.
Does this mean GM development has ceased? No. Since Matt and I wrote the original code, we plan to continue to support the existing language, and, I hope, make GM2 one day, using the value of hindsight and GM1. Right now, the goal is to make GM stable and usable so people can add their own bindings and make modifications to the core code with reasonable ease.
What should you do as a experienced developer and GM modder? 1) Share you code so others can benefit immediately. 2) Be free to make your own full build of GM so people do not have to integrate with some old version of mine. I often refer to my build as 'The So Called Official Build', but I would be delighted if several people from the GM community, individually or together, release their own builds that take GM into a future with more functionality, better performance and platform compatibility. I don't have the time or tools however, to maintain a public source repository or source control system.

Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 1 post ] 

All times are UTC

Who is online

Users browsing this forum: No registered users and 1 guest

You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group