There are a few ways to do it here is one: https://www.vmware.com/ If you want to use boost though this is how I would do it: http://members.gamedev.net/sicrane/articles/EmbeddingPythonPart1.html Ken -----Original Message----- From: programmingblind-bounce@xxxxxxxxxxxxx [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Tyler Littlefield Sent: Sunday, March 07, 2010 11:07 PM To: programmingblind@xxxxxxxxxxxxx Subject: Re: embedding scripting into a program: a few questions Hello ken, From what I've seen of the boost docs, the python setup is used for creating add-ons to python. Can I reverse that, or does it have more functionality beyond creating c++ libraries for python's use. I would love to use that, as I know python the best out of most languages, I just moved away because of the API for python; it seemed to have quite a few qwerks. Thanks, Tyler Littlefield http://tds-solutions.net Twitter: sorressean On Mar 7, 2010, at 8:39 PM, Ken Perry wrote: > > Tylor as you know on our mud we wrote our own compiled language using bison > and flex. I do not recommend that to anyone who has half a brain any more. > It's hard to up keep and even though our language resembles a combination of > c++, basic and Pascal it is none of the above. We have to write all the > docs which makes the job twice as hard to up keep and we have to debug each > little problem. > > Now with all that said I would use one of two languages either Python or > Java script which can both be embedded quite easy. I like LUA but there are > not a lot of documents so you would still have to write specialized > documents to fit your environment. Python on the other hand is a great > language to embed because there are so many coders who already know it and > the documents are amazing. Java script is the same way but it is a bit > harder to embed. You can have python in your game in seconds just buy > adding the right libraries from boost and then building on them. > > So I guess in short the most important things you have to think of when > adding scripting are as follows. > > 1) how easy is it to bridge the gap from c++ to scripting language > 2) How easy will it be for your builders to use and learn which means > documentation you will have to support > 3) What happens when the scripting language out there changes like python > going from 2.6 to 3.1 do they have upgrade scripts like Python does. > 4) What is the memory over head and speed of interpretation. We have over > 28,000 scripts on our current game and while that don't sound like much many > of those are scripts that hang around waiting on events so you need to know > that you have a way to deal with that like an event que of some kind. We > dealt with it by pretty much making our game server an OS and the scripts a > compiled binary but in the days of jvm's there are better ways to deal with > it. > > Ken > > > > -----Original Message----- > From: programmingblind-bounce@xxxxxxxxxxxxx > [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Tyler > Littlefield > Sent: Sunday, March 07, 2010 9:38 PM > To: programmingblind@xxxxxxxxxxxxx > Subject: Re: embedding scripting into a program:a few questions > > Hello, > Bevire I switched to angelscript, I was bouncing around the idea of Lua. >> From what I read, it doesn't support inheritance or classes, so I'm not > quite sure how I'd embed an OO setup like I want into a functional setup and > get the same sort of layout or design I'm working toward. > > Thanks, > Tyler Littlefield > http://tds-solutions.net > Twitter: sorressean > > On Mar 7, 2010, at 7:32 PM, Andreas Stefik wrote: > >> Tyler, >> >> This is just a thought, and you can discount it if you wish, but are you > familiar with the programming language LUA? LUA is a scripting language used > all the time in commercial video games (e.g., world of warcraft). The reason > it is used is because they have a fancy way of binding between C++ and the > LUA scripts, which makes doing this kind of interface relatively > straightforward. >> >> I'm hardly an expert on the details, but if it were me digging around in > this area, I might consider using LUA scripts and basically using its > internal system of binding between C++ and the scripts. >> >> Stefik >> >> On Sun, Mar 7, 2010 at 8:29 PM, Tyler Littlefield <tyler@xxxxxxxxxxxxx> > wrote: >> Hello Laura, >> The idea is that the world class be able to be exposed to the language--I > don't need to add methods to the world class. What I do need to do, and what > seems to be causing the issue is the component setup; All components will be > loaded at startup and as they're added, but I need to be able to inherit the > c++ component class and add to it in order to create scripted components, > then I can just register them with the world class. >> The issue is making the scripted components be usable. Obviously I can't > access a scripted component from c++, or I could through it's basic > functionality, but the idea is for the components to be able to be added to > any object whether scripted or not. >> >> Thanks, >> Tyler Littlefield >> http://tds-solutions.net >> Twitter: sorressean >> >> On Mar 7, 2010, at 7:23 PM, qubit wrote: >> >>> Hi Ty -- >>> Did I read once that your base is implemented in C++? >>> Let me clarify what you are saying you want to do: >>> 1. class A in your scripting language needs to interface with class > World in >>> your base, and use its methods, and also to add methods of its own, and > to >>> do this dynamically. Right? >>> 2. These new methods need to access class World in some way. Do they > need >>> to go so far as to touch private or protected data? Since you want > dynamic >>> insertion/removal of methods in class A, these methods will need to be > able >>> to work with World without being members of World. >>> 3. As an aside, you could of course dynamically create a new inherited > class >>> C for each method m(), which is derived from World and therefore can use >>> World's protected and public data. m() can be a virtual or nonvirtual >>> method. But this all has to be done in the interface to your scripting >>> language. This is an interesting problem, as it almost requires that > the >>> scripting language have the same inheritance structure as C++ to make > the >>> implementation fall out cleanly. But who ever heard of a clean >>> implementation in the "real world"...*smile* >>> Now, if your implementation goes so far as to create derived classes > with >>> their own virtual table for each function added to A, you will need some >>> dynamic linking to pull it off. >>> I'll have to think on this one for a while. >>> >>> Hey Ty, great job picking an interesting project. That should go really >>> well on a resumé. >>> Happy hacking. >>> --le >>> >>> ----- Original Message ----- >>> From: "Tyler Littlefield" <tyler@xxxxxxxxxxxxx> >>> To: <programmingblind@xxxxxxxxxxxxx> >>> Sent: Sunday, March 07, 2010 6:12 PM >>> Subject: embedding scripting into a program:a few questions >>> >>> >>> Hello all, >>> As some of you may know, I'm working on a custom mud base that I will be >>> releasing to the public and probably using for my own mud in the near >>> future. >>> I've got most of the stuff I want handled, except scripting; I was told > to >>> use Angelscript and was taking a look at it, but it seems to not be to > well >>> documented, so maybe someone has another idea. >>> >>> What I want, is to be able to make the world class (which stores a list > of >>> players, rooms, mobs, etc) accessible to the scripting language I use. >>> Secondly, I want to expose events so that the language can attach it's > own >>> functions to them. >>> Third and possibly more dificult, I want to expose my component system, >>> which I will explain. >>> >>> Rather than using a is-a setup (through inheritance), I decided to go > with a >>> has-a setup. This provides some really cool ideas for design, such as > being >>> able to let clothing use containers if you decide that your shorts need >>> pockets, without either moving container functionality up the > inheritance, >>> or using a multiple-inheritance setup, which can become messy. So, the >>> components get loaded with the object from a list. I can easily use an >>> AddComponent function to add the component to the list, but I'd like to >>> allow builders and coders that I don't want using shell or that have an > idea >>> for a component to be able to build one in the language of choice, then >>> register it with the dictionary that is used for holding components and >>> allowing other objects to use this setup. So, in short I need a sort of >>> transparent way to communicate back and forth, and not for the scripting >>> language of choice to just control the driver, etc. >>> >>> Thanks, >>> Tyler Littlefield >>> http://tds-solutions.net >>> Twitter: sorressean >>> >>> __________ >>> View the list's information and change your settings at >>> //www.freelists.org/list/programmingblind >>> >>> __________ >>> View the list's information and change your settings at >>> //www.freelists.org/list/programmingblind >> >> __________ >> View the list's information and change your settings at >> //www.freelists.org/list/programmingblind >> >> > > __________ > View the list's information and change your settings at > //www.freelists.org/list/programmingblind > > > __________ > View the list's information and change your settings at > //www.freelists.org/list/programmingblind __________ View the list's information and change your settings at //www.freelists.org/list/programmingblind __________ View the list's information and change your settings at //www.freelists.org/list/programmingblind