Discussion
Loading...

#Tag

Log in
  • About
  • Code of conduct
  • Privacy
  • Users
  • Instances
  • About Bonfire
'(vidak) _(:3」∠)_ boosted
vga256
vga256
@vga256@mastodon.tomodori.net  ·  activity timestamp 2 days ago

although i very much appreciate this is a 0.00001% public interest bit of knowledge, i just found the web's only surviving example of MetaPlace's markup language which its MetaScript interpreted.

in the late 90s and early 2000s, data streams sent between the server and client on mmo's was almost always a handtuned custom binary stream. e.g. UO was tuned down to the byte, because the target minimum connection speed was 14400 baud at some point (which is 1.3 kb/s).

by the late 2000s bandwidth had loosened up quite a bit, so it wasn't as critical to write super compressed data streams. in other words: you could start sending entire text streams instead just like http.

while most developers today angle for json or xml, raph said these were too heavy for use back in the late 00s.

instead, his team wrote a mini tag-based markup language.

in other words: you could just connect to an metaplace server and it would start barfing a stream of markup at you. it was up to your client software to interpret the markup language into graphics, 2d tile maps, GUIs, etc.

i'm so thankful that @crwth thought to capture that text stream. it turns out to be incredibly straightforward:

https://camelpate.blogspot.com/2009/06/outputtouser.html
[O_HERE]|10013|0:308|5|4|0|0|Crwth|0:1|0| |0

[P_ZOOM]|1.000000
[W_SPRITE]|24080:135|0.375|0.140625|255|255|255|http://assets.metaplace.com/worlds/0/24/24079/assets/images/dwnbtnpress.png|dwnbtnpresspng_|2|0|.|4|0|0

in the above three examples, each line of text is broken up into two parts:

[tagname]|argument1|argument2|argument3|argument4|...

the tag name goes in the brackets, and the arguments that you want to apply to that tag go between the pipes that follow it. unlike xml or json, there is no concept of nested properties (that i can see anyway).

#metaplace #ultima #ultimaOnline #programming

OutputToUser()

Back from vacation, and it looks like our last server release has lots of goodies in it. One of the best ones, in my opinion, is "Added su...
  • Copy link
  • Flag this post
  • Block
vga256
vga256
@vga256@mastodon.tomodori.net  ·  activity timestamp last week

Metaplace Postmortem (2008): "Snow Crash is a Lie"

jussst after i wished there had been some kind of postmortem done on raph koster's Metaplace, i found out that he himself presented one at GDC 2008!

https://www.gdcvault.com/play/34/Metaplace-Postmortem-Reinventing

if you're not familiar with Metaplace, I don't blame you. It was an attempt at making a web-based graphical MUD/MUSH/MOO/MMO virtual world development system that could be played online in any browser. it disappeared almost as quickly as it was developed.

what i find most fascinating about it was that it had a Lua-based scripting system called Metascript. it featured some really hot runtime behaviours like being able to load/unload scripts on any object. (which means you never needed to recompile to test your world)

#mud #moo #worldWideweb #lua #gdc #mmo

Metaplace Postmortem: Reinventing MMOs

vga256
vga256
@vga256@mastodon.tomodori.net replied  ·  activity timestamp 2 days ago

although i very much appreciate this is a 0.00001% public interest bit of knowledge, i just found the web's only surviving example of MetaPlace's markup language which its MetaScript interpreted.

in the late 90s and early 2000s, data streams sent between the server and client on mmo's was almost always a handtuned custom binary stream. e.g. UO was tuned down to the byte, because the target minimum connection speed was 14400 baud at some point (which is 1.3 kb/s).

by the late 2000s bandwidth had loosened up quite a bit, so it wasn't as critical to write super compressed data streams. in other words: you could start sending entire text streams instead just like http.

while most developers today angle for json or xml, raph said these were too heavy for use back in the late 00s.

instead, his team wrote a mini tag-based markup language.

in other words: you could just connect to an metaplace server and it would start barfing a stream of markup at you. it was up to your client software to interpret the markup language into graphics, 2d tile maps, GUIs, etc.

i'm so thankful that @crwth thought to capture that text stream. it turns out to be incredibly straightforward:

https://camelpate.blogspot.com/2009/06/outputtouser.html
[O_HERE]|10013|0:308|5|4|0|0|Crwth|0:1|0| |0

[P_ZOOM]|1.000000
[W_SPRITE]|24080:135|0.375|0.140625|255|255|255|http://assets.metaplace.com/worlds/0/24/24079/assets/images/dwnbtnpress.png|dwnbtnpresspng_|2|0|.|4|0|0

in the above three examples, each line of text is broken up into two parts:

[tagname]|argument1|argument2|argument3|argument4|...

the tag name goes in the brackets, and the arguments that you want to apply to that tag go between the pipes that follow it. unlike xml or json, there is no concept of nested properties (that i can see anyway).

#metaplace #ultima #ultimaOnline #programming

OutputToUser()

Back from vacation, and it looks like our last server release has lots of goodies in it. One of the best ones, in my opinion, is "Added su...
  • Copy link
  • Flag this comment
  • Block

bonfire.cafe

A space for Bonfire maintainers and contributors to communicate

bonfire.cafe: About · Code of conduct · Privacy · Users · Instances
Bonfire social · 1.0.2-alpha.7 no JS en
Automatic federation enabled
Log in
  • Explore
  • About
  • Members
  • Code of Conduct