Le 11 mai 2014 17:22, "Eliot Miranda" <eliot.miranda@gmail.com> a ��crit :
>
> Hi Hilaire,
>
> �� �� mornin'. ��Thanks for such a helpful, in-depth answer! ��You ask about support for ARM... answer below.
>
>
> On May 11, 2014, at 3:09 AM, Hilaire Fernandes <hilaire.fernandes@gmail.com> wrote:
>
> > Morning!
> >
> > As several people mentioned it, I may have a few tips to share regarding
> > developing educative applications with Pharo (you can read Squeak as
> > well, but you may have a better support with Pharo if you want to target
> > touch devices as well, I don't want to write the Squeakers are helpless
> > -- not at all -- but it seems to me there are more experiences to bring
> > Pharo applications on touch devices from A to Z -- from the developer to
> > the consumer I mean).
> >
> > You are a Smalltalker so you definitely know the related benefits to
> > develop with Pharo, so no need to spend words on that. You also know
> > your application will be portable to the three workstation operating
> > systems, very easily as the VM are routinely compiled for these hosts.
> >
> > To get an idea about how could look your end user application, I suggest
> > you take a look at Dr.Geo - http://drgeo.eu for workstation and touch
> > devices ; then also iStoa for Linux -
> > https://launchpad.net/istoa/+download. These are packaged for end user.
> > For Windows the installer could be improved with installed entry in the
> > system menu.
> >
> >
> >> 1) I know I have to build a suitable executable but I have never done
> >> this. ��I have only written Smalltalk code that I then
> >> �� ��use. ��So how do I build such an image and how big is it (assume code
> >> for game is small (say 3000 lines of code)).
> >
> > To build the end user application, you will have to do it in two steps:
> >
> > 1. Prepare your image: install your source code and related source code
> > package, set the state of the image, shrink your image and save it. You
> > will use Metacello. I use smalltalk script for that.
> >
> > 2. Build your application package: you will use a pre set application
> > hierarchy with the VM, icons, execution script if needed, etc and
> > install your image, the necessary media and translation if any. I use
> > bash script to do so.
> >
> > For inspiration you can have a look at Dr. Geo subversion repo[1] or
> > iStoa launchpad repo[2]. The later one may be easier to follow as I gain
> > some experience from Dr. Geo work.
> >
> > Once you setup this, building your application is easy. It is just a
> > matter to update your ConfigurationOf. and executing your bash script.
> >
> >
> >> 2) ��How do I get the virtual image on the customer's machine. ��Keep in
> >> mind the customer is someone somewhere
> >> �� �� on the Internet who probably knows little about how to install
> >> Smalltalk or anything else. ��I am assuming here that
> >> �� �� installing the game and installing the VM are two different tasks.
> >> Is there a way to make this a single task?
> >
> > No installing the game and VM will be done at the same time.
> > You ship your application in a zip archive or auto-installable
> > executable with VM, image, and related media, documentation and
> > translation files.
> >
> >
> >> 3) ��So far I am assuming the target machine is ��Linux/Windows/Mac on a
> >> Desktop/Laptop.
> >> �� �� But can Smalltalk be run on any of the ��IPad/Notebook/etc out there?
> >> �� �� These machines represent a larger game market I believe.
> >
> > Yes it is possible. Look at DrGeo on AppStore[3] and GooglePlay[4].
> >
> > Sadly we do not have JIT support for these devices.
> > Is it just a mater to support the ARM instruction set or much more
> > complicated? I would be please to know.
>
> On iPhone Apple expressly forbid JITs other than their own so until that changes the fastest VM on iPhone will be the Stack VM.
>
> On Android JITs are allowed. ��Tim Rowledge is currently working on the Cog ARM back end which was started by Lars Wassermann, and is making good progress, working in the VM simulator. ��He is targeting the Raspberry Pi. ��I don't know whether he'll have time to port to Android, but I'm sure someone can. ��I don't want to talk for Tim but I expect he'll easily be finished this year.
>
> On a related tack, Doug McPherson has recently implemented the ARM support for Cog's FFI module, so there is now FFI support! ��And the Pharo team have taken on a person to work on AsmJIT for ARM. ��So at least on Android the Squeak/Pharo support will be good (although I expect more work is needed to provide good touch support).
>
> Hilaire, perhaps you can tell me whether touch support is OK or whether work needs to be done in the VM?
>
> > Any way for touch devices, you still have the two aspects of Smalltalk
> > to consider:
> > 1. The VM: it will be the interpreted VM, or COG without JIT support.
>
> Cog without JIT support is called the Stack VM, (since it optimizes message sending by mapping contexts to stack frames). ��Soon (some time this year) we should have a Spur Stack VM which may be -35% to -40% faster.
>
> > Esteban and Dmitry were really helpful and collaboration was great to
> > let me concentrate on the image level considerations below.
> > 2. Your image.
> >
> > For point 2, you will have extra work, better to take it into account
> > since the beginning of your project if you target touch device:
> >
> > a) no support for multiple touch, at least as far as I know. I read
> > there and there people talking or doing things, but no real stuff.
> > Anyway it is definitely not a show stopper: you can be ok with tap and
> > dragging. But you need to consider it.
> >
> > b) support for the virtual keyboard, Esteban and Dmitry added hook to
> > show or hide the touch device keyboard (see drgeo code with
> > showVirtualkeyboard). In your GUI design, you need to be careful your
> > text zone is not hidden by the virtual keyboard. Again it is resolvable.
> >
> > c) the numerous screen resolutions of the touch devices. For DrGeo and
> > iStoa I took very different directions. Probably the most interesting
> > for you will be the one I took for iStoa. The application window is a
> > full screen morph with scaled bitmap. My bitmap are scaled for a Nexus5
> > screen resolution (~2500x1600), then graphics and font are downscaled
> > according to the used screen device. I suggest you take a look at the
> > Linux iStoa application and resize the window to see what is happening.
> >
> > Using Athens is definitely not an option now for 2 reasons: it is not
> > supported yet by touch devices; as long as it is not used in Pharo
> > itself, if you put in perspective delivering to end user you have to
> > consider it as unstable.
> >
> > d) native look and feel: it was really a big concern -- the bigger in
> > fact -- for DrGeo. For iStoa it is nearly irrelevant, but there are
> > still some widgets around. Again games does use native widget, so it may
> > be ok. For DrGeo I need to subclass a Pharo theme to remove window
> > decorations, force dialog to be positioned on the top and centered and
> > other details I forgot about. It looks pretty ok for me, but not for
> > touch device users.
> > I tried to share the experience and work on this point but without
> > success[5].
> >
> >
> >>
> >> 4) ��Assuming I can arrange for my computer game (if I write it) to be
> >> installed are there memory/cpu usage issues
> >> �� �� that I need to worry about (the game itself will use a minimal of
> >> memory/cpu except for graphics which also
> >> �� �� is pretty reasonable). ��I am thinking here of IPads etc. ��For
> >> Desktops/Laptops there should be no problem.
> >> �� �� Download time and subsequent storage space is also a concern;
> >> remember the device is probably used for
> >> �� �� lots of other things so the amount of space allocated for games may
> >> be small compared to the space on the
> >> �� �� machine?
> >
> > If your code and medias game are small, the image size will be a
> > problem, not something that will prevent your application to work
> > perfectly, but more a feeling of wasted resources.
> >
> > With Pharo1.4, I can shrink DrGeo image below 10MB, including DrGeo
> > code. With Pharo3, I can't get below 16MB with (smaller) istoa code.
> > It is really a deception, the new developer tools were not developed as
> > loadable code. I guess it was too difficult to be done, although it was
> > a promise (informal?) of the Pharo project when it start up.
> > Again it is not a show stopper.
> >
> > Good work on your project, I will be happy to read about its progresses.
> >
> > Hilaire
> >
> >
> >> 5) ��Sorry for the redundancy if these questions have been asked before
> >> (which I am sure they have).
> >>
> >> Thanks for any feedback; ��I am sure others are interested in this
> >> question too.
> >>
> >> Ralph Boland
> >
> >
> > [1] https://gforge.inria.fr/scm/?group_id=1308
> > [2]
> > http://bazaar.launchpad.net/~hilaire-fernandes/istoa/trunk/files/head:/build/
> > [3] https://itunes.apple.com/us/app/dr.-geometry/id559858173?mt=8
> > [4] https://play.google.com/store/search?q=drgeo
> > [5] http://forum.world.st/iOS-polymorph-theme-anyone-tt3557696.html
> >
> > --
> > Dr. Geo http://drgeo.eu
>
> Best regards,
> Eliot (phone)
I've had Pharo running on the iPad.
Once the VM and the app- wrapping works, a key benefit is that the image is just a file to drop in the resources folder.
And being able to develop on the desktop and use the image as-is on the mobile device is really a great time saver.
You will have to test for the morph stepping on order to have a nice feel.
Graphics and sound do work fine on iOS.
I am surprised that the tools in the new Pharo are not unloadable. That's bad for image size. People look at app size and anything large has a risk of being avoided for casual apps.
AAA games are gigabytes in size but that is the exception to the rule.
Phil