Finger info for phaethon@icculus.org...



Raw source and immediate archive at http://www.icculus.org/~phaethon/plan/

Entries are currently sorted in: Newest First

Syntax (time and date in UTC, my local timezone is PST/PDT):
[YEAR].[MONTH].[DAY] <space> ~[APPROX. HOUR] <space> <space> [SUMMARY]
<empty line>
[CONTENT]
<empty line>
<empty line>



2002.11.22 ~00 A limerick inspired by PunkBuster

Originally I planned to have a four-line poem as a suitable .sig, but I
also wanted to capture the essence of my PunkBuster experience by
cutting off the last word with a PunkBusterism. I thought both A-A-B-B
or A-B-A-B rhyming pattern would be unsuitable, due to my plans for
omitting the final word (not enough "priming" for fill-in-the-blank).
A-A-A-A would have worked best. After wanting to mention "autoaim"
(aimbots), I worked through rhymes, coming up with "shame", which
perfectly describes a connection under the influence of Pb. Then I
made up the first line on the fly to fit the AABBA rhyme pattern.

This version is slightly toned down. My intended "distribution use"
version changes "incredibly" into a far more colorful phrase.

 It's harder to stay on the Quaking way...
 Had to reinstall PunkBuster again today;
  The ping is a crying shame,
  And llamas can still autoaim,
 oh my gawd, this is incredibly g***ERROR***
 ^5client in distress - could not load pbcl.so



2002.11.20 ~08 Blue skies: vt100, ncurses, and Q3VM.

Firstly, I wanted a way to place random text on a random location on
the screen at random times. There is already a function in cgame for
this functionality. A problem arises if I need to shift the location.
If done in all-C, the module needs to be recompiled. Alternatively, I
could write a QuakeScheme wrapper so the position is adjustable from
Scheme... but if I wrap DrawString(), why not DrawChar()? And the
cell-measuring functions? How about the whole font system?

Then there's the cvars method, but then comes the question of having
more than one string to draw. Have a set of cvars like "string0loc",
"string1loc", "string2loc"? Or the dimensions laid out like "0:20:foo"
in a cvar? I can see this method getting very very messy.

I got around to thinking about cells-based positioning, like a tty with
an addressable cursor. Row 3, Column 42. First model that came to my
mind was vt100. One possibility presented by an addressable-cursor
screen is a full-screen text editor. In real life, there already is a
full-screen text editor with a Lisp back-end. Or rather, a full-screen
Lisp acting as a text editor.

Anyone moderately involved with text mode is likely to be familiar with
the curses library, which helps utilize an addresssable cursor terminal
by presenting a terminal-independent interface (an API). The curses API
is fairly well-established in the area of text mode, and so is a useful
basis for C-coding to a full-screen text mode in Q3. One of the free
implementations of the curses interface is "ncurses", which is part of
the GNU system and thus why its most familiar to me.

As an aside, the Q3 UI is based on a 640x480 units coordinate system
regardless of resolution (and scaled up to current screen resolution);
character cells are 8x16 units. This yields a textscreen resolution of
80 cells horizontal and 30 cells vertical.

If I can whip up the necessary glue code to attach ncurses to Q3VM,
other potentials open up. For one, ncurses also comes with a text
windowing system. In a pinch, the ncurses windowing system can fill in
as a half-baked forms GUI. Porting (or rather gluing in...) ncurses
also allows porting ncurses-based programs to Q3VM. Such as... err...
um... tetris??...

Well, here is one far-fetched possibility arising from getting in
ncurses: Q3nethack.


2002.11.18 ~07 Q3VM glib

In another of those mad-scientist streaks, I added enough libc headers
so that glib-1.2 compiles without error. The libc headers are in CVS
for my Q3 mod; glib itself isn't. I haven't tested glib, yet. The
funny thing, I forgot why I wanted glib in the first place.


2002.11.13 ~11 QVMlibc

In the CVS repository for my q3 mod, I added a subset of libc and SUS
(POSIX). Covers ctype, strings, stdio, stdlib, errno, assert, unistd,
fcntl, dirent, time.

With some of the off-the-wall stuff I try, I'm thinking of renaming my
mod to something like: "Nonlinear Experimental R&D-Type Stuff Modding".


2002.11.09 ~13 Compiled vs Interpreted

I actually started on a long-winded entry on my thoughts about criteria
for "compiled" or "interpreted" for a language, when a google trip
turned up this link that is pretty much a superset of my ideas:

http://www.oche.de/~akupries/ics_lang.html

I had pondered over compiled vs interpreted as I mulled over the Q3VM
specs and the way it makes a distinction between code space and memory
space (JUMP to address 0 is vmMain(); a LOAD from address 0 does not
return the bit-level representation of vmMain()). I decided the
dividing line comes down to observing how the Program Counter (or
Instruction Pointer, et al.) acts, whether it branches into newly
created code (compiled) or stays within already pre-existing code
(interpreted). Since a VM has its own (emulated/simulated) PC, this
would mean bytecode would technically be compilation (from the point of
view of the VM), but still interpreted by the host machine (as the host
machine does not branch directly to the byte sequence).

I had considered bytecode to be a middle ground between compiled and
interpreted, but then I wondered if there may be other categories as
well -- echoes of the zero-one-infinity principle. As the mentioned url
illustrates, the whole gig is a matter of how many layers you need to
tear through; "compiled" and "interpreted" are relative terms. Java is
"more compiled" than Bash, Perl is "more interpreted" than C, and so on.


2002.11.08 ~10 Pb rant addendum

Right about now, I feel I'd rather play on a server full of aimbotters
than fucking with Pb. At least when I take out a cheater, I can
righteously gloat haughtily for the rest of the game. With Pb on, you
can't really be sure if a cheater slipped through or not...


2002.11.08 ~09 Punkbuster Burn@g3

The inevitable has thus happened. But a lot sooner than I expected.
Punkbuster managed to fuck itself in the ass with a short one.

Word in the grapevine is that the cheats/anticheats war is divided into
two goliaths: OGC and Punkbuster. Apparently OGC has something to do
with aimbots or other cheats or something. Punkbuster is... well, most
of the quakers know by now. Seems there's a back-and-fro between these
two camps, and the fun-seeking fraggers have gotten the short end of the
stick yesterday. Or the day before. Something.

What I observe: being randomly kicked from a server for "technical
difficulties" in loading "pbag". Whatever the hell that is. The kick
period ranged anywhere from before even seeing the loading screen to 50
minutes tops. The kick effect ranged from a graceful "disconnect" style
(with error messages el al) to a process murder so violent that the
entire computer locked up (fuct vidcard state).

I've tried whatever I could to restore playability, ranging from
restoring from backups to copying files from strange places to
reinstalling Q3 1.32. Results are mixed. As I write this .plan entry,
I cannot play on *any* Pb-enabled Q3 server. For values of any
including local server (dedicated mode) on network loopback.

For fuck's sake, **LOOPBACK**!!!!

Rumor has it the Pb folks (evenbalance.com?) were so eager to push out
an anticheat update that they missed installation or propagation
validity, or somesuch.

To add to the irony further, www.evenbalance.com was unreachable as of
6pm local time. So no manual updating/fixing. An acquaintance
theorized (D)DoS attacks by the counter-punkbuster camp -- take down the
master while Pb updates are broken and still in flux.

I managed to peruse part of the evenbalance forums before it went
unreachable. There was one thread where one very angry server admin was
venting over Pb's b0rk3ness (to the extent that he was getting kicked
off his own (presumably remote) server), calling for the ability to
revert to earlier (unbroken) versions (countered as being contrary to
Pb's lifestyle), or the ability to selectively choose or tweak Pb checks
(countered for similar reasons -- "all or nothing"), or announcing
significant changes in updates (countered as being a loudspeaker
announcement to cheaters). The response from the Pb folks was basically
along the lines of "the EULA you agreed to says you agree to ride along
with whatever updates we push out as they're pushed out; if you don't
like it, don't use it". The server admin's rebuttal was along the lines
of "we shouldn't have to put up with BROKEN updates -- this stuff is
supposed to work transparently". Then the rest of the thread were
basically denouncing the thread starter for being hot-headed and rude,
pointing out "cheats in general", history of cheats, yadda yadda,
without really addressing the points raised. In fact, one responder
even declared there was no point in the post. Then the usual "if you
don't like it, don't use it" fluff.

(I think one of the funnier exchanges in the evenbalance forums was
someone establishing the correlation of punkbuster's appearance with a
lack of cheaters in RTCW as being a purely cause-effect relationship.)

What disturbs me is the "don't use it, then" part. There is no middle
ground, no competitor, no alternative. It either is or isn't. Admins
would like anticheat mechanisms, but as things stand at the moment, the
choices are either Punkbuster (with all its secret agendas, benevolent
or not) or absofuckinglutely nothing at all.

I think that's what disturbs me the most about Punkbuster. Not any
unknowable ulterior motive, not the fact that reflexive voodoo magic is
bound to fuck itself, not that all anticheat mechanisms are
fundamentally breakable. But rather the fact that there is no other
choice, except larking out stark raving naked. An adage from a darker
age of telecommunications comes to mind: "you have any choice of
telephone color, as long as it's black".

You have any choice of anticheat software, as long as it's Punkbuster.


Life: No Life found.

Project:
1. Project FI, Quake 3 mod (http://www.icculus.org/fi/)
 a. provide an extensible environment for a Q3 mod. The intended notion is that of "mutators" in Unreal Tournament.
 b. FI:WFC, a more faithful reproduction of Q2WF for Q3 than WFA.

2. QuakeScheme
 * Extensible language for Project FI.
 * Builds on TinySCHEME (http://tinyscheme.sourceforge.net/)
 * Deal with idiosyncrasies of Q3VM not handled by most other Scheme impls.

3. Q3VM libc
 * Implementation of Standard C Library for Q3VM bytecode.
 * Implementation of a subset of Single Unix Specification v2 (SUS v2).
 * Help import third-party library into Q3VM.

4. QS GUI/widget set
 a. Need to research advanced OO and GUI of Scheme derivatives and Common Lisp.
 b. Replication/extension of boxy widgets in Q3TA (Q3 PR 1.27+).
 c. Pie menus -- just to annoy theoddone33.

5. Q3 compilation toolchain
 [X] q3lcc sources (official version out with Q3A SDK 1.32)
 [X] q3asm - get static to work, dammit.
 [ ] q3as - assemble-only (.asm to .o).
 [ ] q3ld - link-only (.o/.a to .qvm).

5. PalmOS stuff
 a. PiNGer (gfx viewer)
  * generalize interface to a "any-gfx" viewer (libpnm?)
 b. ZBoxZ (file manager)
  * beef up its appness: menus, dialogs, pen actions


When this .plan was written: 2002-11-21 19:41:27
.plan archives for this user are here (RSS here).
Powered by IcculusFinger v2.1.27
Stick it in the camel and go.