Discussion:
[ANN] Open Croquet for Squeak 5.2 (32bit) release
(too old to reply)
Nikolay Suslov
2018-10-26 02:47:35 UTC
Permalink
Hi all,

I'm pleased to announce, that the experimental version of Open Croquet for
Squeak (https://blog.krestianstvo.org/en/open-croquet-for-squeak-6/) is now
updated to the recent Squeak 5.2 (32bit)
<http://files.squeak.org/5.2/Squeak5.2-18225-32bit>.
This update includes critical FIX for the Croquet's IslandReader, which is
related to the new Squeak image segment loader code.
The included Croquet demos have become usable in network scenarios, but
with some requirements: For replication to work, a participant must run a
Master of the selected demo at least once on its image (for example doing:
CroquetMaster new openInWorld). Then that participant could connect to any
running Master on a network (for example doing: CroquetParticipant new
openInWorld). In the future updates this will be fixed.

*Preloaded images:*

- All-In-One Squeak 5.2 VM with preloaded Open Croquet image and content:
https://www.krestianstvo.org/sdk/croquet/Squeak5.2-18225-32bit-All-in-One-Croquet.zip

- Only Squeak 5.2 with image with preloaded Open Croquet:
https://www.krestianstvo.org/sdk/croquet/Squeak5.2-18225-32bit-Croquet-Image.zip

- Only content (Textures, Models, etc.):
https://www.krestianstvo.org/sdk/croquet/Content.zip

*Loading manually:*

(Installer fromUrl: '
http://sdk.krestianstvo.org/sdk/croquet/croquet-sn.3.mcm') install.
Don't forget to download and extract 'Only content
<https://www.krestianstvo.org/sdk/croquet/Content.zip>' package to
/Contents/Resources/ folder.

*How to use it on the network:*

If Master wanted to be discoverable, it's network address must be specified
here:
CroquetHarness dispatcherAddress.
Participant should specify a Master's network address here:
CroquetHarness defaultBroadcaster.

Here is the screenshot of one Master (on macOS) and two Participants (on
Windows and macOS) collaborating together.

[image: Screenshot-croquet.jpg]

Best reagards,
Nikolai
Robert Hirschfeld
2018-10-26 11:59:25 UTC
Permalink
*** Great! ***

Thank you, Nikolai. :)

Best,
Robert
Post by Nikolay Suslov
Hi all,
I'm pleased to announce, that the experimental version of Open Croquet for Squeak (https://blog.krestianstvo.org/en/open-croquet-for-squeak-6/) is now updated to the recent Squeak 5.2 (32bit).
This update includes critical FIX for the Croquet's IslandReader, which is related to the new Squeak image segment loader code.
The included Croquet demos have become usable in network scenarios, but with some requirements: For replication to work, a participant must run a Master of the selected demo at least once on its image (for example doing: CroquetMaster new openInWorld). Then that participant could connect to any running Master on a network (for example doing: CroquetParticipant new openInWorld). In the future updates this will be fixed.
- All-In-One Squeak 5.2 VM with preloaded Open Croquet image and content: https://www.krestianstvo.org/sdk/croquet/Squeak5.2-18225-32bit-All-in-One-Croquet.zip
https://www.krestianstvo.org/sdk/croquet/Squeak5.2-18225-32bit-Croquet-Image.zip
- Only content (Textures, Models, etc.): https://www.krestianstvo.org/sdk/croquet/Content.zip
(Installer fromUrl: 'http://sdk.krestianstvo.org/sdk/croquet/croquet-sn.3.mcm') install.
Don't forget to download and extract 'Only content' package to /Contents/Resources/ folder.
CroquetHarness dispatcherAddress.
CroquetHarness defaultBroadcaster.
Here is the screenshot of one Master (on macOS) and two Participants (on Windows and macOS) collaborating together.
<Screenshot
Chris Muller
2018-10-26 18:26:59 UTC
Permalink
One of Squeak's coolest projects ever, thanks Nikolay!

One question, sorry I didn't try but will it work in 64-bit Squeak and, if
not, why not and when will it?

Thanks!
Post by Nikolay Suslov
Hi all,
I'm pleased to announce, that the experimental version of Open Croquet for
Squeak (https://blog.krestianstvo.org/en/open-croquet-for-squeak-6/) is
now updated to the recent Squeak 5.2 (32bit)
<http://files.squeak.org/5.2/Squeak5.2-18225-32bit>.
This update includes critical FIX for the Croquet's IslandReader, which is
related to the new Squeak image segment loader code.
The included Croquet demos have become usable in network scenarios, but
with some requirements: For replication to work, a participant must run a
CroquetMaster new openInWorld). Then that participant could connect to any
running Master on a network (for example doing: CroquetParticipant new
openInWorld). In the future updates this will be fixed.
*Preloaded images:*
https://www.krestianstvo.org/sdk/croquet/Squeak5.2-18225-32bit-All-in-One-Croquet.zip
https://www.krestianstvo.org/sdk/croquet/Squeak5.2-18225-32bit-Croquet-Image.zip
https://www.krestianstvo.org/sdk/croquet/Content.zip
*Loading manually:*
(Installer fromUrl: '
http://sdk.krestianstvo.org/sdk/croquet/croquet-sn.3.mcm') install.
Don't forget to download and extract 'Only content
<https://www.krestianstvo.org/sdk/croquet/Content.zip>' package to
/Contents/Resources/ folder.
*How to use it on the network:*
If Master wanted to be discoverable, it's network address must be
CroquetHarness dispatcherAddress.
CroquetHarness defaultBroadcaster.
Here is the screenshot of one Master (on macOS) and two Participants (on
Windows and macOS) collaborating together.
[image: Screenshot-croquet.jpg]
Best reagards,
Nikolai
Nikolay Suslov
2018-10-28 12:55:14 UTC
Permalink
Hello Chris,
Post by Chris Muller
One of Squeak's coolest projects ever, thanks Nikolay!
One question, sorry I didn't try but will it work in 64-bit Squeak and, if
not, why not and when will it?
Yes, actually it should.
I just have updated Open Croquet integration with support of SmallFloat64
class, which is used by default on 64 bit Squeak.
I have tested this on Windows'10 with
http://files.squeak.org/5.2/Squeak5.2-18225-64bit/Squeak5.2-18225-64bit-201810190412-Windows.zip
and Croquet works.
Don't forget to enable B3DXUsesOpenGL=1 in Squeak.ini for OpenGL.

Here is the preloaded 64 bit image:
https://www.krestianstvo.org/sdk/croquet/Squeak5.2-18225-64bit-Croquet-Image.zip
or do (Installer fromUrl: '
http://sdk.krestianstvo.org/sdk/croquet/croquet-sn.4.mcm') install.

As for macOS, there is seems to be a problem with the B3DAcceleratorPlugin
for 64 bit, which constantly craches the VM.
May be somebody had a success of running B3DAcceleratorPlugin with OpenGL
on 64 bit Squeak for macOS?

Best regards,
Nikolai
Post by Chris Muller
Thanks!
Post by Nikolay Suslov
Hi all,
I'm pleased to announce, that the experimental version of Open Croquet
for Squeak (https://blog.krestianstvo.org/en/open-croquet-for-squeak-6/)
is now updated to the recent Squeak 5.2 (32bit)
<http://files.squeak.org/5.2/Squeak5.2-18225-32bit>.
This update includes critical FIX for the Croquet's IslandReader, which
is related to the new Squeak image segment loader code.
The included Croquet demos have become usable in network scenarios, but
with some requirements: For replication to work, a participant must run a
CroquetMaster new openInWorld). Then that participant could connect to any
running Master on a network (for example doing: CroquetParticipant new
openInWorld). In the future updates this will be fixed.
*Preloaded images:*
https://www.krestianstvo.org/sdk/croquet/Squeak5.2-18225-32bit-All-in-One-Croquet.zip
https://www.krestianstvo.org/sdk/croquet/Squeak5.2-18225-32bit-Croquet-Image.zip
https://www.krestianstvo.org/sdk/croquet/Content.zip
*Loading manually:*
(Installer fromUrl: '
http://sdk.krestianstvo.org/sdk/croquet/croquet-sn.3.mcm') install.
Don't forget to download and extract 'Only content
<https://www.krestianstvo.org/sdk/croquet/Content.zip>' package to
/Contents/Resources/ folder.
*How to use it on the network:*
If Master wanted to be discoverable, it's network address must be
CroquetHarness dispatcherAddress.
CroquetHarness defaultBroadcaster.
Here is the screenshot of one Master (on macOS) and two Participants (on
Windows and macOS) collaborating together.
[image: Screenshot-croquet.jpg]
Best reagards,
Nikolai
Eliot Miranda
2018-10-27 16:47:57 UTC
Permalink
Hi Nikolay,
Post by Nikolay Suslov
Hi all,
I'm pleased to announce, that the experimental version of Open Croquet for Squeak (https://blog.krestianstvo.org/en/open-croquet-for-squeak-6/) is now updated to the recent Squeak 5.2 (32bit).
Great news, thank you!
Post by Nikolay Suslov
This update includes critical FIX for the Croquet's IslandReader, which is related to the new Squeak image segment loader code.
Can you explain what the bug was, and what is the fix?
Post by Nikolay Suslov
The included Croquet demos have become usable in network scenarios, but with some requirements: For replication to work, a participant must run a Master of the selected demo at least once on its image (for example doing: CroquetMaster new openInWorld). Then that participant could connect to any running Master on a network (for example doing: CroquetParticipant new openInWorld). In the future updates this will be fixed.
- All-In-One Squeak 5.2 VM with preloaded Open Croquet image and content: https://www.krestianstvo.org/sdk/croquet/Squeak5.2-18225-32bit-All-in-One-Croquet.zip
https://www.krestianstvo.org/sdk/croquet/Squeak5.2-18225-32bit-Croquet-Image.zip
- Only content (Textures, Models, etc.): https://www.krestianstvo.org/sdk/croquet/Content.zip
(Installer fromUrl: 'http://sdk.krestianstvo.org/sdk/croquet/croquet-sn.3.mcm') install.
Don't forget to download and extract 'Only content' package to /Contents/Resources/ folder.
CroquetHarness dispatcherAddress.
CroquetHarness defaultBroadcaster.
Here is the screenshot of one Master (on macOS) and two Participants (on Windows and macOS) collaborating together.
<Screenshot-croquet.jpg>
Best reagards,
Nikolai
Nikolay Suslov
2018-10-27 22:42:11 UTC
Permalink
Hello Eliot,

I am very inspired by the new Squeak 5.2 VM and its amazing speed! Just
dreaming of having Open Croquet working on it. And now after first early
steps of porting from Squeak 4.x, even without formal tests, it is seen how
much faster Open Croquet demos are working.
Post by Eliot Miranda
Hi Nikolay,
Hi all,
I'm pleased to announce, that the experimental version of Open Croquet for
Squeak (https://blog.krestianstvo.org/en/open-croquet-for-squeak-6/) is
now updated to the recent Squeak 5.2 (32bit)
<http://files.squeak.org/5.2/Squeak5.2-18225-32bit>.
Great news, thank you!
This update includes critical FIX for the Croquet's IslandReader, which is
related to the new Squeak image segment loader code.
Can you explain what the bug was, and what is the fix?
Actually, this fix is in adapting the IslandReader segment loading methods
to the new behaviour of '#primitiveLoadSegmentFrom: segmentWordArray
outPointers: outPointerArray': "Upon successful completion, the wordArray
will have been becomed into anArray of the loaded objects." In original
Open Croquet for Squeak 4.x, 'IslandReader>>#loadSegmentFromData:
segmentWordArray outPointers: outPointerArray' traversing the loaded
WordArrayForSegment with #nextObject for post-sending startUp message to
objects ('#startUpInIslandReader: reader'). But, in Squeak 5.2 it should
uses an array of the loaded objects, instead WordArrayForSegment object.
That's it.


Best regards,
Nikolai
Post by Eliot Miranda
The included Croquet demos have become usable in network scenarios, but
with some requirements: For replication to work, a participant must run a
CroquetMaster new openInWorld). Then that participant could connect to any
running Master on a network (for example doing: CroquetParticipant new
openInWorld). In the future updates this will be fixed.
*Preloaded images:*
https://www.krestianstvo.org/sdk/croquet/Squeak5.2-18225-32bit-All-in-One-Croquet.zip
https://www.krestianstvo.org/sdk/croquet/Squeak5.2-18225-32bit-Croquet-Image.zip
https://www.krestianstvo.org/sdk/croquet/Content.zip
*Loading manually:*
(Installer fromUrl: '
http://sdk.krestianstvo.org/sdk/croquet/croquet-sn.3.mcm') install.
Don't forget to download and extract 'Only content
<https://www.krestianstvo.org/sdk/croquet/Content.zip>' package to
/Contents/Resources/ folder.
*How to use it on the network:*
CroquetHarness dispatcherAddress.
CroquetHarness defaultBroadcaster.
Here is the screenshot of one Master (on macOS) and two Participants (on
Windows and macOS) collaborating together.
<Screenshot-croquet.jpg>
Best reagards,
Nikolai
tim Rowledge
2018-10-27 23:42:18 UTC
Permalink
Trying this out on a Raspberry Pi (obviously).
First major problem is that

OGLUnix>>openGLLibraryName
^Smalltalk osVersion = 'linux'
ifTrue: ['libGL.so.1']
ifFalse: ['GL']
has a #'' (apparently a ByteSymbol with just char value 0 in it) at the end of the method ; which of course a BlockClosure does not understand.

After 'fixing' that it goes on a little until we get to OpenGL>>#glMatrixMode:
glMatrixMode: mode
"This method was automatically generated."
"void glMatrixMode(GLenum mode);"
<apicall: void 'glMatrixMode' (ulong) module: '#openGLLibraryName'>
^self externalCallFailed

The" module: '#openGLLibraryName'>" looks a bit odd to me... shouldn't that have been recompiled to use the real library name?

tim
--
tim Rowledge; ***@rowledge.org; http://www.rowledge.org/tim
Tranc
Bert Freudenberg
2018-10-29 19:26:17 UTC
Permalink
Post by tim Rowledge
Trying this out on a Raspberry Pi (obviously).
First major problem is that
OGLUnix>>openGLLibraryName
^Smalltalk osVersion = 'linux'
ifTrue: ['libGL.so.1']
ifFalse: ['GL']
has a #'' (apparently a ByteSymbol with just char value 0 in it) at the
end of the method ; which of course a BlockClosure does not understand.
After 'fixing' that it goes on a little until we get to
glMatrixMode: mode
"This method was automatically generated."
"void glMatrixMode(GLenum mode);"
<apicall: void 'glMatrixMode' (ulong) module: '#openGLLibraryName'>
^self externalCallFailed
The" module: '#openGLLibraryName'>" looks a bit odd to me... shouldn't
that have been recompiled to use the real library name?
Yes, but it doesn't change the source code. Follow the senders of
openGLLibraryName
to see the magic.

- Bert -
tim Rowledge
2018-10-30 00:49:31 UTC
Permalink
Post by tim Rowledge
Trying this out on a Raspberry Pi (obviously).
First major problem is that
OGLUnix>>openGLLibraryName
^Smalltalk osVersion = 'linux'
ifTrue: ['libGL.so.1']
ifFalse: ['GL']
It's actually a bit worse - the osVersion returned by Raspbian is 'linux-gnu' - so I tried changing that to
openGLLibraryName
^(Smalltalk osVersion beginsWith: 'linux')
ifTrue: ['libGL.so.1']
ifFalse: ['GL']
which got a bit further.
Post by tim Rowledge
has a #'' (apparently a ByteSymbol with just char value 0 in it) at the end of the method ; which of course a BlockClosure does not understand.
[snip]
Post by tim Rowledge
The" module: '#openGLLibraryName'>" looks a bit odd to me... shouldn't that have been recompiled to use the real library name?
Yes, but it doesn't change the source code. Follow the senders of openGLLibraryName to see the magic.
OK, so it's supposed to send #openGLLibraryName at some startup point. Very clever. Unfortunately it appears something else goes wrong pretty quickly and OGLExtManager>>#loadExtension: uses glExtGetProcAddress: which even decompiled says
<cdecl: ulong 'glXGetProcAddressARB' (char*) module: 'GL'>
Which doesn't seem right. Should it also use the #openGLLibraryName thing?

I'd love to see this working on a Pi but I'm going to need help with anything to do with making the opengl trickery work.

tim
--
tim Rowledge; ***@rowledge.org; http://www.rowledge.org/tim
Strange O
Bert Freudenberg
2018-10-30 23:48:42 UTC
Permalink
Post by tim Rowledge
Post by tim Rowledge
Trying this out on a Raspberry Pi (obviously).
First major problem is that
OGLUnix>>openGLLibraryName
^Smalltalk osVersion = 'linux'
ifTrue: ['libGL.so.1']
ifFalse: ['GL']
It's actually a bit worse - the osVersion returned by Raspbian is
'linux-gnu' - so I tried changing that to
openGLLibraryName
^(Smalltalk osVersion beginsWith: 'linux')
ifTrue: ['libGL.so.1']
ifFalse: ['GL']
which got a bit further.
Post by tim Rowledge
has a #'' (apparently a ByteSymbol with just char value 0 in it) at the
end of the method ; which of course a BlockClosure does not understand.
[snip]
Post by tim Rowledge
The" module: '#openGLLibraryName'>" looks a bit odd to me... shouldn't
that have been recompiled to use the real library name?
Post by tim Rowledge
Yes, but it doesn't change the source code. Follow the senders of
openGLLibraryName to see the magic.
OK, so it's supposed to send #openGLLibraryName at some startup point.
Very clever.
Yep, in OpenGL>>initialize it calls "self privateInstallLibrary: self
openGLLibraryName." which patches the library name into all compiled FFI
methods.

Unfortunately it appears something else goes wrong pretty quickly and
Post by tim Rowledge
OGLExtManager>>#loadExtension: uses glExtGetProcAddress: which even
decompiled says
<cdecl: ulong 'glXGetProcAddressARB' (char*) module: 'GL'>
Which doesn't seem right. Should it also use the #openGLLibraryName thing?
Ah, that seems to be an actual bug.

#privateInstallLibrary: does not go into the subclasses. In OGLWin32, that
method has the correct 'opengl32.dll' module. OGLMacOSX uses a different
mechanism entirely. And OGLUnix relies on "GL" linking to the right thing.

So I'd say in privateInstallLibrary: we need to patch both OpenGL and
OGLUnix.

- Bert -
Eliot Miranda
2018-10-28 18:54:56 UTC
Permalink
Hi Nikolay,
Post by Nikolay Suslov
Hello Eliot,
I am very inspired by the new Squeak 5.2 VM and its amazing speed! Just
dreaming of having Open Croquet working on it. And now after first early
steps of porting from Squeak 4.x, even without formal tests, it is seen how
much faster Open Croquet demos are working.
Ah, that's *great* to hear! Any quantitive info appreciated when you have
it. For example, knowing what's happened to frame rates would be good.
But more interesting, and perhaps more difficult, is discovering precisely
what activities in Open Croquet are affected and by how much.
Post by Nikolay Suslov
Post by Eliot Miranda
Hi Nikolay,
Hi all,
I'm pleased to announce, that the experimental version of Open Croquet
for Squeak (https://blog.krestianstvo.org/en/open-croquet-for-squeak-6/)
is now updated to the recent Squeak 5.2 (32bit)
<http://files.squeak.org/5.2/Squeak5.2-18225-32bit>.
Great news, thank you!
This update includes critical FIX for the Croquet's IslandReader, which
is related to the new Squeak image segment loader code.
Can you explain what the bug was, and what is the fix?
Actually, this fix is in adapting the IslandReader segment loading methods
to the new behaviour of '#primitiveLoadSegmentFrom: segmentWordArray
outPointers: outPointerArray': "Upon successful completion, the wordArray
will have been becomed into anArray of the loaded objects." In original
segmentWordArray outPointers: outPointerArray' traversing the loaded
WordArrayForSegment with #nextObject for post-sending startUp message to
objects ('#startUpInIslandReader: reader'). But, in Squeak 5.2 it should
uses an array of the loaded objects, instead WordArrayForSegment object.
That's it.
Ah, good; that makes perfect sense. Thanks!
Post by Nikolay Suslov
Best regards,
Nikolai
The included Croquet demos have become usable in network scenarios, but
Post by Nikolay Suslov
Post by Eliot Miranda
with some requirements: For replication to work, a participant must run a
CroquetMaster new openInWorld). Then that participant could connect to any
running Master on a network (for example doing: CroquetParticipant new
openInWorld). In the future updates this will be fixed.
*Preloaded images:*
https://www.krestianstvo.org/sdk/croquet/Squeak5.2-18225-32bit-All-in-One-Croquet.zip
https://www.krestianstvo.org/sdk/croquet/Squeak5.2-18225-32bit-Croquet-Image.zip
https://www.krestianstvo.org/sdk/croquet/Content.zip
*Loading manually:*
(Installer fromUrl: '
http://sdk.krestianstvo.org/sdk/croquet/croquet-sn.3.mcm') install.
Don't forget to download and extract 'Only content
<https://www.krestianstvo.org/sdk/croquet/Content.zip>' package to
/Contents/Resources/ folder.
*How to use it on the network:*
CroquetHarness dispatcherAddress.
CroquetHarness defaultBroadcaster.
Here is the screenshot of one Master (on macOS) and two Participants (on
Windows and macOS) collaborating together.
<Screenshot-croquet.jpg>
Best reagards,
Nikolai
_,,,^..^,,,_
best, Eliot
CalmoSoft
2018-11-25 08:15:09 UTC
Permalink
Hello all,

Here is the updated version of *CalmoSoft Fifteen Puzzle Game*
I attached the source code and necessary texture images.

CalmoSoft Fifteen Puzzle Game Source
<https://groups.google.com/group/opencobalt/attach/2e49fcff9e8c7/CalmoSoftPuzzle.zip?part=0.1&authuser=0>

See the next video:

CalmoSoft Fifteen Puzzle Game Video


Greetings,
Gal Zsolt
(~ CalmoSoft ~)



-----
***@gmail.com
--
Se

Loading...