Worst-case scenario: the UEd Goblin wipes the map and burns down your house.

# Legacy:Reconn/Developer Journal

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

I'm posting things reverse chronologically, scroll to the bottom to read old stuff. Feel free to start a comments section after any date, or even stick your comments right in the meat of the posts (just clearly label them if you do).

### Wedensday, February 19, 2003

#### Simper Fi

Technically it's the 20th, but I keep track by when I go to bed, or the sun. I'm still up from yesterday.

Things are going slow now, as I've been out of town and otherwise busy. Building my dad's new PC, but monitor isn't getting any signal (hope i didn't fry something), lots of snow here, et cetera, et cetera, et cetera.

When I'm at work, I think about UT2003, my friends that I don't see anymore, and ninjas. Also, I'm reading some books. But between all that, I'm still working on this crap. I'll tell you when I've done something, and probably in a really excited tone that makes it seem more important than it will be.

### Friday, February 14, 2003

#### re: Spidering View

Calculus is hard.

If only they'd actually had an answer for me when I said "when will I need this in life?" Here I am trying to make sense of dot and cross products. I figure what I need to do (to keep you aimed at generally the same spot after switching your subjective floor while spidering) is take into account the angle of your view against the plane of your new floor. But I'm having to keep going backwards in math to understand exactly how to do that, and to even understand what it is the original view changing code does.

From PlayerController.uc:

```            // translate view direction
CrossDir = Normal(RealFloor Cross OldFloor);
FwdDir = CrossDir Cross MyFloor;
OldFwdDir = CrossDir Cross OldFloor;
ViewX = MyFloor * (OldFloor Dot ViewX)
+ CrossDir * (CrossDir Dot ViewX)
+ FwdDir * (OldFwdDir Dot ViewX);
ViewX = Normal(ViewX);

ViewZ = MyFloor * (OldFloor Dot ViewZ)
+ CrossDir * (CrossDir Dot ViewZ)
+ FwdDir * (OldFwdDir Dot ViewZ);
ViewZ = Normal(ViewZ);
OldFloor = MyFloor;
ViewY = Normal(MyFloor Cross ViewX);```

### Wednesday, February 12, 2003

#### Initialization

I've got a few ideas in mind on things to work on as introductions to UnrealScript.

First off is a simple weapon tweak to the Rocket Launcher, a conversion of something I played with in Q2. Gravitically Accelerated Rockets: a fancy name for rockets that accelerate the entire time they exist, rather than launch with a steady speed. The rockets "fall" in the direction you've fired them. It's a good starter project because it gets me quickly into the code, dealing with vectors and normals, and it's simple as a weapon mut. It's also plenty fun in-game, and requires more skill (perhaps just different skill?) than normal rockets.

My other idea is to see what I can do with PlayerSpidering to smooth the transition between surfaces. Namely, the view jerking that disorients you and requires that you entirely re-aim your shots. I think it'd be nice to keep your aim steady as you transition, in the tradition of WallMatch, the failed Q3 mod/SDK. I'm going to try using the wallmatch post-mortem as a guideline, since this is fuzzy territory for me, and very possibly beyond my current skill. Having spidering already present though gives me hope, and I might be using the result in my later project(s).

If you haven't yet, you can try out the default PlayerSpidering by way of MutSpider, a component of RegularX's xxxpak. This is the entirety of MutSpider.uc, pasted here from the xxxpak's included source:

```//=============================================================================
// MutSpider - Puts everyone in SpiderMan mode
//=============================================================================
class MutSpider extends Mutator;

// Don't call Actor PreBeginPlay() for Mutator
event PreBeginPlay()
{
SetTimer(1.0,true);
}

function Timer()
{
local Controller C;

for (C = Level.ControllerList; C != None; C = C.NextController)
{
if (C.bRun == 1)
{
C.GotoState('PlayerSpidering');
}
else {
if(C.IsInState('PlayerSpidering')) {C.GotoState('PlayerWalking');}
}

}
}

defaultproperties
{
GroupName="Spider"
FriendlyName="Spider"
Description="Walking allows you to walk on walls. ||Warning: Still very beta.   ||Net Support: Full |Bot Support: None"
}```

You might also check out Dma/SpiderMode, which must be similar, although I haven't looked at it much yet.

Another area of improvement for Spidering would be to look into the threshold for being on a wall – i.e., steps and other small changes in the surface you're on should be ignored; i'm not sure how well the existing code does this (if at all).

update: It actually does this fairly well. The little bit of quick-switching it does might not be annoying once I solve the view problems. /update

After those, I'm going to look into grapples and see what's been done so far. I want to work on "Real Physics" grapple that would allow you to swing, retract/extend the rope (to raise/lower yourself), and maybe anything else I can come up with.

#### Elaboration

Since it came up in comments for my last post, I'd like to reiterate that everything I contribute to the wiki is (tentatively → see Reconn and Project Copyright/Discussion) under CreativeCommons by-nc-sa license. That means you should always feel free to crib stuff from me; nothing would make me happier than to see my ideas being used by other people, as guidelines, inspiration, anything at all. I'm not possessive, and I'm not competitive.

### Sunday, February 9, 2003

#### Introduction

I've never been able to dedicate to any of my pursuits the time and practice that it takes to become well skilled. Well versed perhaps, and certainly beyond the "newbie" stage, but never to the region in which one refines one's crafts and really becomes skilled. This is true of programming and mapping as well as of more disparate fields such as music and writing.

I don't know if this is due to a lack of attention span, or perhaps to a childhood belief in skating by on natural talent. Perhaps I set my sights too high, and get discouraged. I'm sure I could invent countless excuses – all of varying flattery and deprecation to myself, depending on my mood – to expain it, but the fact is I haven't worked hard enough on becoming well skilled in any of the fields I'm interested in.

Consider this journal an experiment in my own dedication. I want to learn UnrealScript and to implement my gameplay ideas. I want to refine my programming skills. Should the entries cut off unexpectedly, assume I've failed.

#### Et Cetera

Most of my programming experience actually comes from working with the Quake 2 gamex86 source. There are smaller influences and projects I've dabbled with, but I kept returning to Quake 2. There were lots of unfinished projects on my harddrive, a little implementation backed by a lot of documentation. Most of my time went into daydreaming and writing the design; probably the most enjoyable part of the development. Things always got more complicated than I'd intended.

This time it's a little change: light_level deals out damage to the players! they're vampires or zombies or whatever. there'll be one or two light based weapons or runes or something. ...time passes... ok, so it's marines versus vampires in space, there's some kind of decent into undead-ness that happens when players die instead of respawning, and there are whole new weapons and alternate ammo choices to take advantage of the light damage, like phosphorus and magnesium slugs and flare grenades and it'll rule!

Rereading them now, I still say the designs would have been fun, but the point is moot as I never could stay interested long enough to finish any, or certainly get far enough to interest other people (a major milestone, and perhaps a point beyond which it might be easier to self-motivate).

So now I'm giving UT2K3 a shot, and I'm not expecting a whole lot of myself. I have hope however, that with an understanding of my previous failings I can better focus and maintain interest.