Menu

SteamEngine / News: Recent posts

Site moved

the homepage of steamengine has moved to "http://kec.cz/tartaros/steamengine/html". In the future the adress will be "steamengine.kec.cz"
The news and everything is now managed from there.

Posted by Jan Slavetinsky 2004-03-13

duping things, triggers, TypeInfo, Globals

Lets look again what I did in the last days. Details are in changes.tx, so just briefly: I Finished Splitting and Duping Things using copying constructors, so we are no more relying on System.Object`s default copy method.
I also Began refactoring some old triggers and creating new ones, so that they are called not only on triggergroups, but also as virtualmethods on possible Thing descendands (i.e. it is now "oficially" supported the possibility to write own subclasses of Thing in compiled scripts). Following triggers now work this way: @create, @click, @dclick, @equip, @unequip, @pickup_pack, @pickup_ground, @dropon_item, @dropon_char, @dropon_ground, @step, @destroy. For every trigger where it makes sense there are both item and character versions. I am also writing testing triggergroup and Item`s subclass that display debug messages on these triggers.
I have a bit "relieved" the MainClass class
- moved script compiling stuff to internal TypeInfo class (which is also to be instantiated for every Thing subclass, can be quickly searched by name, and ensures the Thing subclass is "legal")
- out of MainClass`s inifile stuff, GlobalCommands, and Server.globals, I built a new class - Globals. it is practically that what in sphere is "serv".
I also "founded" a "TODO" part in changes.txt, so one always knows what will come next :)

Posted by Jan Slavetinsky 2004-01-28

DevPack updated to support Anonymous CVS

Release 7 of the SE DevPack is now available. The major change is that it now supports anonymous CVS through an additional EXE (Anonymous.exe), meaning that non-developers can quickly and easily download the source to SteamEngine (and related utilities also on CVS) without needing to install and set up a CVS client. Additionally, the readme is now in HTML, and includes a section for non-developers (i.e. people who just want to download the source to SteamEngine).... read more

Posted by Richard D. 2004-01-20

If you're wondering why there hasn't been any news lately

If you're wondering why there hasn't been any news posted for a while (looks like almost 2 weeks, wow), it's because we're just too darn busy working on SE to post news. Actually, we've been keeping track of what we've been doing, in the changes.txt file on CVS: http://cvs.sourceforge.net/viewcvs.py/steamengine/steamengine/changes.txt?view=markup

That's in chronological order by date, the most recent changes being at the bottom. Sorry for not posting news more often, but we really are focusing on SE as much as possible, and the less time we spend talking about what we've done, the more time we have to actually do things. :P

Posted by Richard D. 2004-01-18

I've been back for a few days, and so here's some news

I've been keeping a changes.txt file (it's on CVS in the steamengine module) and writing changes in it as I make them (or shortly thereafter), saving me the trouble of trying to remember exactly what I've changed.

As a result, you get a lot more details. Here's what's in changes.txt for everything up to right now:

Jan 03, 2004:
Accounts.cs:
(SL) Password hashing debugged, tested, and is working now. (Saving hashed passwords was working, but loading wasn't.)
(SL) Save version 5 is read correctly now.
(SL) Save version increased to 6. Plevel is saved in addition to maxPlevel now.... read more

Posted by Richard D. 2004-01-06

Various things and ... vacation!

There's an INI flag to enable/disable hashing passwords (on by default), which means that passwords will be stored on disk and in memory in a format which isn't reversable. Unfortunately, right now there isn't anything that can be done to protect passwords in transit from the client to the server (Until a real encryption system is implemented - see http://sourceforge.net/tracker/index.php?func=detail&aid=866003&group_id=90522&atid=593934 - However, that is something which probably won't be done any time soon, we need to finish SE first :P). You can change that INI setting back and forth if you want without screwing up your accounts or anything, but since hashes can't be turned back into passwords, SE will have to use the hashes still until it sees the correct password again (Again, hashing is one-way, so SE can be sure that a password matches the hash, but can't determine the password FROM the hash).... read more

Posted by Richard D. 2003-12-30

Devs: Some suggestions for something to read

I've been doing some research lately, and here's some interesting reading (Multiple links and quotes follow):

http://longhorn.msdn.microsoft.com/lhsdk/ndp/cpconreflectionemitscenarios.aspx: Reflection Emit Dynamic Method Scenarios

[i]Executing such calls with reflection, using Invoke, delivers very poor performance. Performance can be improved by using Reflection.Emit to create the necessary code at runtime, but this can result in a larger working set and greater complexity.... read more

Posted by Richard D. 2003-12-26

Commands, Textual Save+Load, IContainer interface, Logger

I haven`t posted any nes since some time, so now there is a bit more news in one bunch. In short, the commands are more or less finished, I implemented textual saving and loading, remade the way items are internally stored in containers, and made an interface IContainer that unifies the way you tell Creatures and Containers what to do with contained items.

And now a bit detailed:
To the command parser I added a method that discovers even commands in unstandard syntax. The result is that you can now say the same thing in more ways. These commands are now equal: x(show(tag(foo))), xshow(tag(foo), xshow(tag.foo), x show tag.foo, x show tag(foo). All of them should now make an targetting cursor appear, and after you target something, it shows you the contents of tag(foo).
The X command is a bit special, because it is recognized automatically when it is the first character in the actual string, you cannot do for example .setshow(...) and await it has the same effect as xshow. In sphere (55i) it would do that. But that is intentionally, to allow you to name your functions "setsomething"...
The Show and Echo functions can now show even an ArrayList, hashtable, or Array, in the form of ['value', 'value2'] or {'key' : 'value', 'key2' , 'value2'}. If you know Python, you know my inspiration :)... read more

Posted by Jan Slavetinsky 2003-12-17

Chardef importing

The initial chardef script importing code has been written, tested, and used to generate basic chardef scripts. Note that like the existing itemdef script importing code, this is only the initial skeleton, just enough to allow creating pretty much any NPC or item by its sphere defname or ID #. Bear in mind that most item types aren't scripted yet (Though they are being scripted, as additional triggers are added), AI isn't coded yet, etc.

Posted by Richard D. 2003-12-15

Effects

Effects have been made easier to manage in scripts. When a script calls AddEffect to start an effect timer now, it has to specify a TagDef (Basically the name of a tag) which the effect will be connected to. SteamEngine automatically sets the tag to point to the effect, and allows calling HasEffect, GetEffect, and RemoveEffect with that TagDef. Essentially, the TagDef is used as a reference to the effect.... read more

Posted by Richard D. 2003-12-13

Packet-logger bug reports

I've gotten a bug report (in IRC) about the 2nd release of the packet logger, but unfortunately, the bug report doesn't tell me enough to find the problem. I asked the person reporting the bug exactly how he was starting the client, what client version he was using, etc, and gave an example of the information I wanted by stating how I was running UO, etc, but I didn't get a decent answer and instead got "im running windows xp home" and "u might want to say it has to run threw uogateway in your text than" - I didn't say it has to run through UOGateway because it doesn't have to run through UOGateway. The readme has specific details anyhow, and does mention that if it doesn't work you should try UOGateway, etc. So, if you (anyone) have *ANY* problems with release 2 of the packet logger, please submit a bug report on the SteamEngine SourceForge site, and please include as much information in the bug report as possible, and please try to do what the readme says to do if it doesn't work for you, because that can help me find the problem too (Or the readme might tell you how to fix it, if it's something simple like trying to use an encrypted client (the packet logger won't log those, because it can't decrypt the communications, but UO should still work regardless)).

Posted by Richard D. 2003-12-13

Updated utilities

Several utilities have been updated, namely, the packet logger, the DevPack, and I've also actually improved POLRestart for the first time since it's release 18 or so months ago, and renamed it to UOSvrRestart, since it really isn't only for POL, and that might have been confusing some people, like whoever runs Tanjiers - POLRestart is listed under POL Utilities there, and not listed anywhere else on that site either. Here's more details on the three new file releases (The UOSvrRestart one says it was made yesterday, because I made the release group yesterday, but didn't add any files to it until today, because testing and debugging the new code in it took more time than I anticipated):... read more

Posted by Richard D. 2003-12-11

Map sectors, saves, owner, brain, more triggers, etc

IsNPC, IsPC, IsDeleted all exist now. The code for loading individual map sectors when needed from the MULs is in, along with the INI option to load the entire map instead. Right now, the loaded map sectors will not be unloaded ever, even if they aren't used for hours. However, .NET will move them to disk cache, which is essentially the same thing except it might possibly be faster for .NET to restore them when they're needed again rather than to reload the map sector from the MULs. Of course, it hardly takes any time at all to load a sector from the map mul anyways. An INI option to unload a sector's map information after x amount of time of not being used may be added in the future - Especially if it's asked for (In a feature request, click the "RFE" link on the SteamEngine SourceForge page, or on the forums (Yes, the sourceforge ones)).... read more

Posted by Richard D. 2003-12-09

More updates

ItemDefs can have 'height' to specify their height - This is really only necessary for containers and anything not defined in tiledata (i.e. something you patched into verdata, since SE doesn't read verdata yet). You can also have 'maxContents' or 'holds', which are synonyms, for containers, to specify the maximum # of items they can hold. This is also specified in the tiledata, so you don't have to have either of these, but they allow you to override what the tiledata says. And items dropped into a container have a random spot now, and will stack if there's something in it they can stack with. (@beforestack is called before that and you can return 1 there to prevent stacking.)... read more

Posted by Richard D. 2003-12-05

Various updates

I've done a lot of things recently and forgot most of them (*wink*), but here're some:

Changed item information to send 0x1a instead of 0x78 - Item info packets are smaller now, and color and flags and amount are only sent when nonzero. Also stackables are being split correctly again (The spherescript stuff was failing to correctly mark itemdefs as stackable), and str/int/dex/hp/etc are all tags now, and there's a default script which sets them when you do char creation, and so forth. maxhits/maxstam/maxmana are supported. When they are set, then they are used, but if they are not, str/dex/int are used automatically instead. The @step repeating code (for when you stand on something) is done, and I'm testing it now. If I remember the other things I did, I'll add them to this post. :P (That's why I normally post news so often, so I don't forget what I did!)

Posted by Richard D. 2003-12-05

Packet Guide

For the past week or so, Celeron ( http://www.twilightmanor.net ) has been working on improving the packet guide, by rewriting it to use SQL. Well, he's pretty much finished now, and yesterday, I added styles (You have four, though the last one is unfinished. Plain and Gold are the two styles from the previous incarnation of the packet guide, block is what he had it looking like before I added styles), tweaked it a bit, and then converted all the packets in the previous incarnation of the guide over. This new version of the guide combines PHP, CSS, and SQL to deliver a sortable & styleable packet list with the packet details not shown on the same page as the table of contents (We ought to be able to add a special page which shows all the packets at once for printing out, later), which is easier for us to edit and add new packets for. And it still looks good, too, while loading much faster than, say, Jerriths' guide. (You can reach this new version by clicking the Packet Guide link on http://steamengine.sourceforge.net - If you have the old guide bookmarked, there's a link at the top of it now to the new one.)

Posted by Richard D. 2003-11-30

Sphere support code being worked on

By the way, comments are supported in IniHandler, so the comments are back in SE now. I did that a few days ago. For the past few days, I've been working on initial Sphere-script support. The part I'm working on right now converts itemdefs to the SE def format, in memory. The output can either be loaded directly (the behavior if you put .scp files in scripts/custom) or written out to an actual .def file (The behavior if you put .scp files in scripts/import). The same converters are always used no matter what the end result is, so there can't be any bugs in one and not the other, which means if a sphere script we're testing while implementing this does not work right, we can throw it in the import folder to see what it's converting it to. (Actual execution of sphere triggers, functions, etc, will be done in the same manner - conversion to PScript, which isn't coded yet, and then running PScript. Note that you do NOT want to script directly in PScript. That'd be like scripting in MSIL, except eviller since PScript strongly resembles LISP (Of course, if you LIKE LISP, you can script directly in PScript, but I wouldn't advise it - PScript exists to provide a script format which can be easily converted to a rapidly executable tree format, not to be used directly for scripting (In other words, PScript is what will make spherescript run FAST in SE). Luckily, you won't have to script directly in PScript. Aside from the .NET compiled langauges, you'll be able to script in various languages which are 'compiled' to PScript. Such as SphereScript.)

Posted by Richard D. 2003-11-27

steamengine.ini

SteamEngine.ini now has multiple sections, with INI options separated into them, as well as having several new options as well. It now uses IniHandler (Which gained several improvements, and will gain more in the future, such as the ability to write pure comments to a new INI, since there are several pure comments (I.E. Comments that are on a line by themselves instead of with an INI option) I want to put back into steamengine.ini but can't until I add that code).... read more

Posted by Richard D. 2003-11-22

VB.NET, JS#, and C# scripts

VB.NET and JS# scripts can be compiled and used now with SE (In addition to C# scripts). (Spherescript support will come later.)

Posted by Richard D. 2003-11-20

Scripts, INIs, AOS 3d...

AOS 3D is supported now, along with 2D. LBR and older should work as well. IniHandler is coded, tested, and working. It's used for scripts which will have INI files (Which go in the scripts/config folder). The Script class is coded, tested, and working. It's extended by custom C# (or VB.NET, etc, when those are in) scripts. Here's an example script which uses the features of Script and IniHandler which is also coded, working, and in use (:P):... read more

Posted by Richard D. 2003-11-20

Shadowlord's UO Packet Logger : Release 1

"Shadowlord's UO Packet Logger" is so named because there are other UO packet loggers, such as the one which nobody can download from Lord Binary's homepage, and the one nobody can set up which can be downloaded with ignition. And... Heh. Well, in any event, it's on the File Releases page for SteamEngine, under 'PacketLogger', and the source is up there too. Both zips come with a readme.html and a license.html file, and you can also see the readme (So if you want to look at it before you download, for instance), by clicking on the book icon to the left of "PacketLogger-win32-R1" - And, in case you're lazy, here's a direct link to the readme: http://sourceforge.net/project/shownotes.php?release_id=198246

Posted by Richard D. 2003-11-17

P.S. Packet Guide updated

By the way, the packet guide was updated today, and some yesterday too. I updated some information on it, and added a couple more packets, and Beholder (beho on sourceforge) added documentation for the two main fastwalk packets (which are subcommands of 0xbf). (The fastwalk documentation in the move request packet is still the same, that is, a quote of the fastwalk documentation in that packet in the version of Jerrith's guide which is available on the FUOC website)

Posted by Richard D. 2003-11-17

DevPack updated

The DevPack (for using CVS (If you're a developer)) has been updated yet again: Release 4 is now on the SF file releases page.

There were three changes to existing programs: AddFiles and RemoveFiles no longer call cvs add or remove for modules for which you don't specify any files (at the prompt you get when you run them), and RunFirst now creates a ssh_sf.bat in the same folder as it's in (Which you can use to SSH to shell.sourceforge.net).... read more

Posted by Richard D. 2003-11-17

Unicode

Unicode support is now 100% in. If you have supportUnicode set to true (It is set thus by default) in steamengine.ini, then all text is sent to clients as Unicode, which means that people can talk and hear each other in languages other than english, scripts can cause speech, emotes, etc, to be in other languages than english, or to have accents, etc. The INI option, however, exists because a single character of unicode text takes 2 bytes whereas a single character of ASCII text takes one byte. English-only shards can set that option to false, and all text sent to clients will be in ASCII. This'll cut down on bandwidth usage, but only server->clients bandwidth usage (server's upload bandwidth), not clients->server bandwidth usage - Clients will still send unicode when they want to (So far, it looks as if they only send ASCII instead when the spoken text includes keywords, like 'bank,' 'buy,' 'vendor,' etc). There's an option to send names (when things are clicked) in ASCII regardless of the supportUnicode setting. This is off by default so that the text for names looks like the same font as speech - unicode and ascii look like different fonts when sent to the client, AND the colors don't match either.... read more

Posted by Richard D. 2003-11-16

Automagic configuration & more

When SE is run for the first time now, it will automagically determine if you have a router (or, in fact, if you have anything which causes your IP as it appears to the rest of the internet to not be one of your actual network card addresses), and if so, when it creates the initial steamengine.ini, it will actually put in the proper routerIP setting for you (Though you can still change it if you want, say, if you have a dynamic IP and have a dynamic DNS entry you want used). (If it determines that you don't have a router, or if you're not online, it won't set routerIP, but you can.)... read more

Posted by Richard D. 2003-11-15