Tuesday, September 28, 2004
I am building an animation class for Croquet. I have implemented similar mechanism for 3DSMax ASE format, but I am rebuild new class because old one was depend on ASE. The new one would be more compact, clean and readable. There is an issue about where should an animation scheduler belong. Defining animation is easy because animation could regard as function for time, but scheduling animation has environment specific problems. I have several option. - In a TFrame : TFrame and Morph has basic animation mechanism named stepping. This is most straightforward and easy option. An object starts heartbeat itself. - In global scheduler : In instance, AbstractSound uses global scheduler in Squeak. This way has a benefit that it is easy to blend two motions. I could make a scheduler in each TeaParty in Croquet. - In the user camera : Probably it is good for performance. When we don't see an animated object, the animation doesn't need to move. And to put scheduler in the camera, the frame rate of animation could be changed dynamically according to machine performance. At first, I will use TFrame to set scheduler.
Monday, September 27, 2004
To implement benchmark, I used #veryDeepCopy to duplicate a mesh object. I didn't sure this message works well in croquet world, but it worked with very small fix. Actually, I just only add TObjectFramework >> veryDeepInner: In general, we have to use deep copy carefully for fear of copying unnecessarily objects. Hence, I should test more. But it was enough to use benchmark scripts.
Saturday, September 25, 2004
Next month, we have Open-source Conference in Osaka. So we Osaka squeakers proposed to have a booth to show current Squeak activity. In last conference at Tokyo, we had lots of audience in Squeak BOF, I expect to meet many people who are interested in Squeak next month. Anyway, today I was making copies of a soldier animation to get benchmark. Our game would handle up to 6 players, and we have to move these characters smoothly. But I got a trouble to copy an animation object. To copy an animation, we need deep copy. But in general, deep copy has some issue, in instance, a geometry root and an animation frame is pointing same object through different path - diamond reference. In Morphic world, we can use veryDeepCopy to duplicate object. But in Croquet world, the message doesn't work. I don't sure I have to implement deep copier in Croquet world. But just the fact is I couldn't my quota today.
Friday, September 24, 2004
Before optimizing 3D animation, I have made small framework for unit test. The framework is to evaluate small croquet code from standard TestRunner in Squeak as unit test. This is just transitional scheme until Croquet's own development environment is finished, but now, it is useful for me. Actually, I had finished this system last month. But it didn't work in latest image because I just use #inWorld:sendTo: to pass a code from Squeak process into croquet world. Sometimes, it didn't work because local TeaParty (Croquet teaParty) has some restriction (joinRestricted) and #inWorld:sendTo: is invoked in this local TeaParty. And I tried to build other TeaParty and evaluate in it each test case. Thus the framework works well. But I have not understood how joinRestricted works yet.
Thursday, September 23, 2004
When I test a program, usually I use a workspace. In stead of move my mouse, I prefer writing small code which works same way as mouse operation. It is because code has repeatability and it is better if we want to do same test again and again. Also, I use my special workspace named Techo that it has multi-panes and is able to save into file easily. But the problem is I can't use workspace in Croquet. Actually, I fixed my private version of workspace to work in Croquet context several months ago. But last improvement of Croquet have made my workspace crash. I guess the reason is for some changes of TeaTime. TeaTime is an interesting feature in Croquet, but I have not got it completely yet. Anyway, the problem would be good opportunity to understand detail of TeaTime. After fixing the problem, I will try to improve the performance of Croquet.
Wednesday, September 22, 2004
Skeleton is one of my recent works which allows you to make declarative programing with spreads sheets like user interface. I have not touched for several months but it need more improvement for practical use. I made some plans for Skeleton. - Making smaller the goal. When I start the project, I want to do a number of things. But apparently, it is bad to do many things same times. What I need would be small declarative engine and supporting to write self descriptive rules, not whole scripting system. - Remove dependency with Connectors. The main reason of using Connectors was making funny animation in etoys. But for the aim, ODECo is better way. Skeleton should be more independent module to collaborate other project like Croquet. - Abandon original scheduling. Skeleton has an original scheduling mechanism for drawing beautiful graph to avoid randomness of step list. But sometimes it occurs confusing problems. - Discard original window. Skeleton has different UI against Squeak standard system windows. I like this design but it is not so useful. I guess it is better to use standard system window to show spread sheet.
Tuesday, September 21, 2004
I have developed for animation characters, but to tell the truth, my code have not worked in latest Croquet images. Although I had written codes on older images because I prefer stable image as possible, I feel I have to follow current update. So I have worked to merge my code into newest image today. Actually, this was not so easy. Most difficult part is #croquetTwin message which is added last month. The message works like #clone, but sometimes it occurs strange error. I noticed the problem is brought by drop event. When we send a message with any event into croquet world, we had to remove the reference of hand morph (probably any morph). Another reason of difficulty of the problem is that the debugger doesn't work well in the version. I spent all the day to fix the problem. But what I needed was to modify only one line!
Sunday, September 19, 2004
I have tried to hack if we could use a textual reference of a Player in a workspace as substitute for a Morph. It is useful when we introduce Smaltalk language from etoy script editor. But I failed for some reason. Actually we could use a reference name of Player in Japanese, but couldn't in English. That's a bit tricky but the reason is player's reference name is capitalized and it is recogonized as a global variables before parse by the workspace. Japanese has no case sensitive, so when workspace read unknown variable, it is handled by bindingOf: mechanism, but not in English. I gave up the task today. -- The goal is achieved to set Dot (default player) into doItContext. I don't sure the hack is right, but it seems to work well. I posted the changeset to Mantis at http://bugs.impara.de/ that is cool system.
The most interesting issue in Squeak workshop is how we introduce the idea of meta-media. Meta-media is one of the characters of Squeak. We can make a meta poject which aims at make other projcet. Abe-san have made such etoy projcets like a project for making music, a project for paint editor, and tile scripter made from etoys itself. We have to develop a curriculum to bring meta concept for university student.
Saturday, September 18, 2004
I have the first meeting about next schedule with Abe-san tonight. Actually, I don't like such meeting but I know I am too lazy without particular deadline. Also we have discussed next image of Japanese Squeak. He said current LanguageEditor is not useful when people translate other words all at once. I don't have exactly idea but that seems an interesting issue.
Goal 1: Moving all characters
- - Drone doesn't work now because probably it has other hierarchical structure.
- - Positions of weapon and hip are wrong.
- - Follow newest image (current changeset worked two month before image).
- - Optimization. Now Each frame and each mesh move independently.
- - Animation class it is not depend on ASE format.
- - A number of animation should belong to one mesh.
- - Keyboard sensor.
- - Put cubes along to designed data.
- - Use ODE to control character.
Friday, September 17, 2004
I learned about history of karuta today. Karuta is a kind of playing card whose root is from tarot in medieval times. I think we will use karuta as material for Squeak workshop next month. The aim of the workshop is "Art and Computer". So my idea is by connecting old media (karuta) and new media (Squeak), we can make new story in computer.
Thursday, September 16, 2004
Wednesday, September 15, 2004
Some people help me to improve ODECo.
- sumim-san's spring demo http://squab.no-ip.com:8080/collab/odespring
- Bernd's new function of ODE and 3-D demo.
I think ODE is truly useful tool for Squeak. And I am glad to know people are interested in dynamics simulation on Squeak.