🎉 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!

AngelScript 2.2.0 WIP 5 (2005/05/31)

Started by
41 comments, last by kaysik 19 years ago
Well, unfortunately I'm not doing game development for a living. I work as software developer at Convergys IMG, an american company with offices here in Brazil. We develop large scale software systems to perform billing tasks for telecom companies.

AngelCode.com - game development and more - Reference DB - game developer references
AngelScript - free scripting library - BMFont - free bitmap font generator - Tower - free puzzle game

Advertisement
There's something else the UnrealScript does, as far as i have heard, i Suppose it converts them to a C++ equivalent code, and calls Make and Link at runtime , compiles them to machine binary, and links them thru a DLL, this should give any script the best performance possible. Do we have this on the cards for Angelscript. is this possible in the near future?
Jayanth.KRaptor Entertainment Pvt. Ltd.http://www.raptorentertainment.com---------------------------------------------------------Why Mr. Anderson? Why? ...Why keep fighting? Do you think you're fighting for something - for more than your survival? Can you tell me what it is? Do you even know? Is it freedom, or truth, perhaps peace, could it be for love? Illusions Mr. Anderson, vagaries of perception. Temporary constructs of a feeble human intellect trying desperately to justify an existence without meaning or purpose.
That would be a very nice feature. But AngelScript is very far from that.

I suppose that once I've changed AngelScript to a register based VM instead of stack based, then it will be easier to JIT compilation of the code. JIT compilation is something that I want to add, but I prefer to focus on other library features for a while.

I believe you are mistaken regarding UnrealScript converting the code to C/C++. From what I understand, Unreal has a tool that exports a C interface to the scripts, but this is only stubs for calling the script functions, the scripts themselves are still executed through the UnrealScript VM. Of course, it might be I who is mistaken.



AngelCode.com - game development and more - Reference DB - game developer references
AngelScript - free scripting library - BMFont - free bitmap font generator - Tower - free puzzle game

I've used SoftWire to do some JIT assembly through script, i don't think it would be very difficult to make Softwire JIT assemble AS code.

I was thinking of doing it myself. My understanding is that I would only have to change the part where the script goes into the VM. In a similar manner to how the VM works now, I would run all the script bytecode through softwire, compiling essentially the same code that you have for the ASM VM, except through softwire.
I think that wouldn't make much difference in speed, the ASM VM doesn't have much overhead already (it's just the data structure that stops it from being faster). The great improvement in speed with JIT is where you can make operations with a single instruction instead of 10 or even 20 instructions as in the ASM VM. Once the VM is register based, this should be quite easy, since then there will be a more direct conversion.

However, when I do start implementing JIT, I still don't want to loose the properties of a scripting language. It should still be possible to pause 'latent' functions (if I may use UnrealScript terminology). There are a lot of decisions that I have to make before jumping into implementing JIT compilation. Also the JIT implementation has to be optional since it will not be very portable.

Don't worry, I'll get to JIT compilation in the future, but so far there are many other features that are way more important.

Regards,
Andreas

AngelCode.com - game development and more - Reference DB - game developer references
AngelScript - free scripting library - BMFont - free bitmap font generator - Tower - free puzzle game

WitchLord, I was just wondering, how did you learn how to do all this stuff [smile] Is it all on a basics of Assembly knowledge? Any tips on what I should study in order to be able to do something like AS? Thanks!
I agree with the portability Issue, since script languages are mostly used for games, and Most games run on Windows/Xbox/PS2, you could start Branching a seperate version called Angelscript JIT for which you could obtain a common platform in AS and Angelscript General for other applications. each branch for Speed versus portability( which is the same issue with C# and Java as well).
Jayanth.KRaptor Entertainment Pvt. Ltd.http://www.raptorentertainment.com---------------------------------------------------------Why Mr. Anderson? Why? ...Why keep fighting? Do you think you're fighting for something - for more than your survival? Can you tell me what it is? Do you even know? Is it freedom, or truth, perhaps peace, could it be for love? Illusions Mr. Anderson, vagaries of perception. Temporary constructs of a feeble human intellect trying desperately to justify an existence without meaning or purpose.
Quote: Original post by Drew_Benton
WitchLord, I was just wondering, how did you learn how to do all this stuff [smile] Is it all on a basics of Assembly knowledge? Any tips on what I should study in order to be able to do something like AS? Thanks!


Study compilers.


Also, about softwire as a means of JIT. While you may know of some more optimizations that could be achieved through true JIT compilation of the script, initially the performance gain over the ASM vm would be that instead of being in a giant loop of
for(int i = 0 ..)
{
execute(bytecode)
}

you would just call the softwire assembled code.

I don't fully understand how the angelscript engine operates, but i do see now where you say how some byte codes could be reduced to very few instructions and i guess i also see why softwiring the code would not produce a gain in efficiency really because the asm vm just uses jmp's to progress to the next instruction.
GameDev has a nice books section for scripting:

http://www.gamedev.net/columns/books/books.asp?CategoryID=27

I own the book 'Game Scripting Mastery', it's decent. I've only read parts of it though. (Lua stuff).
Out of those books, Game Scripting Mastery would be the one to read/get. If goes through the implementation of an actual script engine called XtremeScript after it talks about LUA

This topic is closed to new replies.

Advertisement