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