Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - roothorick

Pages: [1]
1
Development Deliberation / Re: Anti-bot protections
« on: September 30, 2007, 10:34:20 am »
Someone on IRC just pointed out that I'm kind of implying there's a botting problem in the first place. That wasn't my intention. I just had a brainstorm and felt like getting it on forum. That's all.

Ralleyon: I understand your concern, and there really isn't a lot that can be done about it. If it's any consolation, the authentication daemon and client unit (sans keys) would be open source along with the rest of the PS code. And it would be possible for the server maintainers to take submissions of user compiled binaries to be inspected and then add them to the database. (The question is of course if the maintainers would have the time to inspect your binaries. There's an argument about the human factor and clever macro hiding too.)

2
Development Deliberation / Anti-bot protections
« on: September 30, 2007, 10:07:03 am »
A recent IRC discussion (okay, I admit, it was mostly a monologue) got me thinking about bots and preventing botting. Anti-bot measures have frequently gotten on my bad side because they are typically a) easy to defeat b) unreliable (large numbers of false positives). Here's what I have on my mind:

On the server-side there would be an authentication daemon that has a database of correct checksums for a selection of approved PlaneShift client binaries (one for each supported OS/arch combination and possibly a few more for e.g. working around strange Linux distros). There would be a client side unit that takes checksums of the running PlaneShift binary as well as itself, sends that to the server over an encrypted connection, and then monitors the running program space for code injections from e.g. a debugger. (The exact mechanics of that depends greatly upon the OS. On Linux, we're probably talking about ptrace()ing the PS client and sounding alarms if the trace gets broken.)

Every time an account is created it would be assigned a private key. When a client logs in with an account it hasn't logged in with before, a unique compilation of the client side unit is generated on the fly and downloaded by the client. The account key is embedded in the client side auth unit in such a way that no automated process can extract it (probably by placing fragments of the key at completely random offsets, combined with some evil assembly tricks). The client side auth unit then establishes an encrypted connection with the authentication daemon, using the account's private key as the encryption key for the cipher of the connection itself. This connection stays active as long as the PS client is open, and has a heartbeat going. The PS client is kicked if the auth client stops responding or reports an anomaly (which requires the whole handshake to happen again next time they login).

If that's not enough to stop bots, we can start adding things on to the client, like scanning the system's hardware registry for known bots (a bit tricky on Linux since hardware information isn't all in one place) and searching the process list for suspicious programs.

Here's some rationale:

a) The client auth unit is specifically keyed to accounts for a reason -- if all clients had the same key, or randomly generated keys, it would be trivial to develop a distributable version of an exploit that could be used on any account. But if the auth client is tied specifically to each account, then the exploit must be hand-crafted for each account it will be used on, making it impossible to distribute, and completely shutting down script kiddies who are the real botting abusers. (Trust me, those yokels have never done any real work in a disassembler, and wouldn't be able to even begin hunting down an obfuscated key in x86 bytecode.)
b) The connection is encrypted for a reason -- if it was plaintext, a proxy could easily manipulate the checksums being sent to be "right". If it's encrypted using a key that is obfuscated in the binary, you could IN THEORY spend hours in a disassembler hunting down all the pieces of the key throughout the binary, brute force the right order, and then write a proxy that uses that to change the keys in it on the fly, but at that point, you're investing a MASSIVE amount of time and effort just to get a little automation going in a free MMORPG. And if you use a decent enough cipher, brute forcing the key directly from packets sent in the authentication would take literally years, and even if it does become a problem, you can make the account private keys time out.

The main drawbacks I can see:

a) Linux users will be required to use precompiled binaries. It's simply impossible to account for all the different possible compiler results and dynamic libraries and etc etc. that can result from compiling from source. But hey, if id Software and Epic Games can make binaries that'll run on any modern Linux distro, so can the open source community.
b) On the same token, people won't be able to bugger around with the sources to add features and run those features on the main server. For this reason you'll have to run a secondary "developer" server that will take any client that speaks the protocol.

3
General Discussion / Re: The Great inconsistency hunt is on!
« on: September 15, 2007, 01:10:41 am »
Not sure if it counts but: Each race description gives a maximum and minimum height for that race, yet everyone of a given race/gender combination is precisely the same height. My proposal is: translate the minimum and maximum height for each race into Engine Units and stick them in the static database. During character creation, assign each character a random height between the minimum and maximum height for their race, and throw that in the character database. Then send this height to clients along with the character appearance data. The client then divides the height (in Engine Units) of the character's base model (without armor) by the character's set height and scales the character's entire model (with armor) by that factor. That should produce a VERY convincing variation in heights among characters. (While we're at it, do the same for NPCs just for consistency's sake.)

The easiest way to handle klyros, at least for now, is to make them take only 1/2 falling damage.

I disagree. Make them fall half as quickly instead.

On second thought, based on some of the more interesting movement glitches, I discovered that falling damage is NOT based on momentum, but time spent "falling" (when you could actually be sitting on a weird cliffside). I once crawled up a cliff (that I shouldn't have been able to climb) only to get killed by "falling" damage when I got to the top. A good temporary fix would to do both -- Make them fall half as quickly AND take half damage. The BEST solution however would be to just fix the movement system and fix falling damage to be based on momentum instead of falling time, and just make Klyros fall half as quickly. (in a true physics simulation, you would simply double their air resistance.)

4
Linux Specific Issues / Re: Yet Another Unique Segfault (YAUS?)
« on: September 12, 2007, 03:38:20 am »
Yes, it's working perfectly now. Time to wipe the ebuilds...

-EDIT- Well, it's working as well as it can with the server being down and all... But that's a different issue entirely.

-EDIT2- The server's back up, and anything 3D doesn't render right. I can't see anything ingame. Oh well, back to ebuilds I go.

5
Newbie Help (Start Here) / Re: QUEST HELP FOR NEWBIES HERE!!! CLICK!
« on: September 08, 2007, 07:53:29 am »
Many quests give you something during the journey and not only after completion - faction points, items, etc.

So require people to wait a reasonable amount of time (one month would work) before retaking a quest they abandoned. People who still attempted to abuse quests would have to invest much more time and long-term commitment and ultimately gain very little advantage, if any. At the same time, legitimate users aren't prevented from reaping the potentially very useful benefits of the many one-time quests. Thus, the game would be more balanced as well.

6
Technical Help: Problems BEFORE entering the game / Registration woes
« on: September 06, 2007, 02:29:50 am »
So, I finally got the Linux client working, so I went to make an account. I filled out the registration page, hit Create Account, and got a white screen with the following on it:

Insert into accounts (realname, username, verificationid, created_date, status, country, gender, birth)values('roothorick', '[REDACTED]', '[REDACTED]', '2007/09/06', 'U','USA','M',1987)

I went back, tried "Resend Verification Email", but that just took me back to the main registration page with no message. I tried registering again, but it told me that the e-mail is already in use. I tried the "forgot password" page which simply told me the the account doesn't exist or hasn't been verified.

What gives?

-EDIT- I'm taking out parts of the query, as I just realized they're sensitive. steuben said he's going to look into it at some point, but the sooner it gets fixed, the better.

-EDIT2- I got it working. If you're wondering what happened, ask acraig or steuben.

7
Linux Specific Issues / Re: Yet Another Unique Segfault (YAUS?)
« on: September 06, 2007, 01:07:11 am »
Yes. UT2004 runs beautifully on this system.

8
Linux Specific Issues / Yet Another Unique Segfault (YAUS?)
« on: September 06, 2007, 12:42:06 am »
The topic says it all.

roothorick@leonard ~/opt/PlaneShift $ ./psclient --verbose
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class cel.pcfactory.defaultcamera in context `*static*' (from (null))
SCF_NOTIFY: registering class cel.pcfactory.camera.old in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class cel.pcfactory.region in context `*static*' (from (null))
SCF_NOTIFY: registering class cel.pcfactory.world.region in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class cel.pcfactory.commandinput in context `*static*' (from (null))
SCF_NOTIFY: registering class cel.pcfactory.pccommandinput in context `*static*' (from (null))
SCF_NOTIFY: registering class cel.pcfactory.input.standard in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class cel.pcfactory.mesh in context `*static*' (from (null))
SCF_NOTIFY: registering class cel.pcfactory.meshselect in context `*static*' (from (null))
SCF_NOTIFY: registering class cel.pcfactory.object.mesh in context `*static*' (from (null))
SCF_NOTIFY: registering class cel.pcfactory.object.mesh.select in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class cel.pcfactory.movable in context `*static*' (from (null))
SCF_NOTIFY: registering class cel.pcfactory.solid in context `*static*' (from (null))
SCF_NOTIFY: registering class cel.pcfactory.movableconst_cd in context `*static*' (from (null))
SCF_NOTIFY: registering class cel.pcfactory.gravity in context `*static*' (from (null))
SCF_NOTIFY: registering class cel.pcfactory.linearmovement in context `*static*' (from (null))
SCF_NOTIFY: registering class cel.pcfactory.collisiondetection in context `*static*' (from (null))
SCF_NOTIFY: registering class cel.pcfactory.move.solid in context `*static*' (from (null))
SCF_NOTIFY: registering class cel.pcfactory.move.linear in context `*static*' (from (null))
SCF_NOTIFY: registering class cel.pcfactory.object.mesh.collisiondetection in context `*static*' (from (null))
SCF_NOTIFY: registering class cel.pcfactory.move.movable in context `*static*' (from (null))
SCF_NOTIFY: registering class cel.pcfactory.move.movableconst_cd in context `*static*' (from (null))
SCF_NOTIFY: registering class cel.pcfactory.move.gravity in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class cel.physicallayer in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.documentsystem.binary in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.mesh.object.terrain.bruteblock in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class cel.persistence.classic in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.graphic.image.io.dds in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.font.server.default in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.graphic.image.io.jpg in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.collisiondetection.opcode in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.mesh.object.terrain2.collider in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.level.loader in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.texture.loader.checkerboard in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.texture.loader.image in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.texture.loader.cubemap in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.texture.loader.tex3d in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.graphic.image.io.png in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.syntax.loader.service.text in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.graphic.image.io.tga in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.decal.manager in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.documentsystem.multiplexer in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.culling.dynavis in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.mesh.object.emit in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.mesh.loader.emit in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.mesh.loader.factory.emit in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.mesh.saver.emit in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.mesh.saver.factory.emit in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.engine.3d in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.utilities.sequence.engine in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.font.server.multiplexer in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.font.server.freetype2 in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.culling.frustvis in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.mesh.object.genmesh in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.graphics3d.opengl in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.graphics3d.shader.glfixed in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.mesh.anim.genmesh in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.mesh.loader.factory.genmesh in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.mesh.loader.genmesh in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.mesh.saver.factory.genmesh in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.mesh.saver.genmesh in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.graphic.image.io.multiplexer in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.graphics2d.null in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.graphics3d.null in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.mesh.object.null in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.mesh.loader.factory.null in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.mesh.loader.null in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.mesh.saver.factory.null in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.mesh.saver.null in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.mesh.object.particles in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.mesh.object.particles.emitter in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.mesh.object.particles.effector in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.mesh.loader.factory.particles in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.mesh.loader.particles in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.mesh.saver.factory.particles in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.mesh.saver.particles in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.texture.loader.animimg in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.renderloop.loop.loader in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.renderloop.step.generic in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.renderloop.step.generic.type in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.renderloop.step.lightiter in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.renderloop.step.lightiter.type in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.renderloop.step.rendertarget in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.renderloop.step.shadowmap in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.renderloop.step.rendertarget.type in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.renderloop.step.shadowmap.type in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.renderloop.step.fullscreenquad in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.renderloop.step.fullscreenquad.type in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.utilities.reporter in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.utilities.sequence in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.graphics3d.shadermanager in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.terraformer.simple in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.terraformer.simple.loader in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.sndsys.manager in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.sndsys.element.loader in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.sndsys.element.ogg in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.sndsys.renderer.software in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.sndsys.element.wav in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.mesh.object.sprite.2d in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.mesh.object.sprite.3d in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.mesh.loader.factory.sprite.3d.binary in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.mesh.saver.factory.sprite.3d.binary in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.mesh.loader.factory.sprite.3d in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.mesh.loader.sprite.3d in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.mesh.saver.factory.sprite.3d in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.mesh.saver.sprite.3d in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.mesh.object.sprite.cal3d in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.mesh.loader.factory.sprite.cal3d in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.mesh.loader.sprite.cal3d in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.mesh.saver.factory.sprite.cal3d in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.mesh.saver.sprite.cal3d in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.utilities.stdrep in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.mesh.loader.factory.terrain in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.mesh.loader.terrain in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.mesh.saver.factory.terrain in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.mesh.saver.terrain in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.mesh.object.thing in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.mesh.loader.factory.thing in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.mesh.loader.thing in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.mesh.saver.factory.thing in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.mesh.saver.thing in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.kernel.vfs in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.documentsystem.xmlread in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.graphics3d.shadercompiler.xmlshader in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.window.x in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.window.x.extf86vm in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.graphics3d.shader.glcg in context `*static*' (from (null))
SCF_NOTIFY: registering class crystalspace.graphics3d.shader.combiner.glcg in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.graphics3d.shader.glps1 in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.graphics2d.glx in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.sndsys.software.driver.alsa in context `*static*' (from (null))
SCF_NOTIFY: registering plugin {unknown} in context `*static*'
SCF_NOTIFY: registering class crystalspace.sndsys.software.driver.oss in context `*static*' (from (null))
Segmentation fault
roothorick@leonard ~/opt/PlaneShift $

At no point does it ever open any kind of window, or take over the screen, or do anything graphical whatsoever. This happens both before and after updating. Gentoo Linux. I'm trying the ebuilds now.

-EDIT- 32-bit version. I'm on an Athlon XP 2200+, 512MB RAM, GeForce 5700LE with binary nV drivers, Sound Blaster PCI 512 (snd-emu10k1) using ALSA driver 1.0.14. I tried unloading the OSS emulation modules, to no effect.

9
Linux Specific Issues / Re: new stickies?
« on: September 06, 2007, 12:25:58 am »
I nominate this for a sticky:

http://hydlaa.com/smf/index.php?topic=27667.0

So far it looks like the only way I'll ever manage to get a PlaneShift client booting on this machine... the binary package just segfaults.

Pages: [1]