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.

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.
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


Reply via email to