Hi Waldemar, This does look pretty useful, thank you!
Joe On Friday, June 15, 2012 3:44:40 AM UTC-7, Waldemar Kornewald wrote: > > Hey Joe, > since you're using Django you could try django-mediagenerator (an asset > manager) to compile your Python source to JS - standalone without the > GWT-like Pyjamas libraries. See here for an intro: > > http://www.allbuttonspressed.com/blog/django/2010/11/Offline-HTML5-canvas-app-in-Python-with-django-mediagenerator-Part-1-pyjs > > > I don't maintain that project, anymore, but it could still be useful for > what you want to do. As described in the post above, there's a pyjs filter > in mediagenerator which automatically tracks your client-side Python files > for changes and automatically recompiles them when necessary. You might > have to update the pyjs filter to work with the latest pyjs version, but > that should be relatively easy. The performance of pyjs is not bad and you > can set compilation flags such that you have the best compromise between > performance and Python support. > > Cheers, > Waldemar > > On Friday, June 15, 2012 12:33:56 AM UTC+2, Joe Ryan wrote: >> >> Hi, >> >> Hope I'm mailing the right place. I'm hoping to use pyjs in a project of >> mine but there's still some questions I have that I'm a bit confused about. >> >> First, to give you an idea of where I'm coming from and what my needs >> are: I'm working on an open source webgame engine for Python in Django. >> The engine is designed for tile-based games (games like civ, dungeon crawl >> stone soup, or puzzles), with an emphasis on allowing multiplayer play. A >> key feature of the engine is that it will do automatic lag compensation by >> automagically mirroring the game command code (a file with a bunch of >> python functions) and database locally (django models; the models interface >> is handled seperately but any custom methods need to be translated) on the >> client side, and then syncing with the server via ajax. In both cases, the >> functions in question consist mostly of fetching data from the database, >> manipulating it, and storing it back. The "fetching" and "storing" parts >> are handled separately; our concern here is only with the manipulation >> part. >> >> Our current attempt to do this uses the empythoned project ( >> https://github.com/replit/empythoned) to run python in the browser, >> which is actually Cpython compiled into javascript by emscripten and run in >> a web worker. This works really great actually, with a flawless local >> emulation of python, except that... its far too slow. An empty loop over a >> range of 30k will take about a half a second on a decent machine. =[ So, >> its nowhere near as extensible as we'd like. >> >> So, our next hope is pyjs. The idea here is instead of mirroring the >> python game code on the client side directly, we'll translate it into >> javascript instead. However, I'm at a loss of not only how to evaluate >> this possibility but even where to begin, lol. >> >> As far as I can tell, the pyjs project has both a python->javascript >> translator as well as some sort of widget interface compatible with GWT. >> The docs say that the translator is stand-alone, but all documentation >> examples seem to use the widget stuff. (we have our own UI already set up >> built with jQuery that we're happy with, so we're only interested in the >> python -> javascript translation part of pyjs). Something called >> 'pyjampiler' seems to be for stand-alone translation, but there is no >> documentation (that I can find) for it. I can not get the one from the >> github to work, although I was able to compile the example in this older >> version of pyjampiler I found here: >> http://www.smallbulb.net/pyjampilerHowever, this one seems critically out of >> date compared to the one in the >> github. >> >> So, my questions: >> >> 1.) Can I infact use the pyjs translator stand-alone without the widget >> stuff? If so, how do I use it? Do I do it with pyjampiler or some other >> way? >> >> 2.) How good is the translator? Is it basically production-ready, or are >> there some issues? I could help fix the issues if there are any significant >> ones beyond what I found on the Migration guide wiki page. (the limitations >> there being perfectly fine with me - my real worst fear is getting >> complaints about games that function correctly without lag compensation >> turned on but then are bugged (or can't compile) with it turned on.) >> >> 3.) How interfacable with normal javascript is the output of pyjs? Can I, >> for instance, construct an array with a simple for loop: >> >> var a = new Array(); for (var i=0; i<10; i++) { a[i] = i; } >> >> and then pass that directly to a function that was created with pyjs? I'm >> guessing not, but is there some kind of interface that will translate a >> javascript object to a pyjs javascript object (even via JSON is fine)? >> >> Anyways, apologies if I missed the answer to any of this in the docs >> somewhere, but I would really appreciate any help you got! >> >> Thanks, >> Joe >> >
