Always snap to grid

Legacy:Reconn/Developer Journal

From Unreal Wiki, The Unreal Engine Documentation Site
Jump to: navigation, search

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


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;
#exec OBJ LOAD File=MutatorArt.utx
// Don't call Actor PreBeginPlay() for Mutator
event PreBeginPlay()
function Timer()
    local Controller C;
    for (C = Level.ControllerList; C != None; C = C.NextController)
	 	 if (C.bRun == 1)
    else {
    				if(C.IsInState('PlayerSpidering')) {C.GotoState('PlayerWalking');}
     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.


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


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.


MythOpus: Yo ! (welcome) I like that idea of yours. When the player dies will they start turning 'un-dead' or will they turn directly to undead ?

CheshireCat: I'd kinda like to steal some parts of that idea... I've been kicking around an idea of a better "Vampire" mutator for a while now, where you gain health by doing damage like in the standard one, but constantly lose health, and die if you reach 0. Your "vampires vs marines" idea sounds interesting, I'm thinking I could make a gametype where one side is my "better" Vampire, and when you die, you spawn on the other team? It'd be interesting to see how the balance is between losing health all the time and gaining health for doing damage... I don't know about doing the light-causes-damage thing, though ;-)

CheshireCat: On second thought, I could make my original mutator idea, and provide an option to make it only effect one team - then you could use it with the existing Assimilation gametype to get the game I just described ;-)

Reconn: Actually that idea came around oddly.. I was puttering around and trying to come up with bizzare methods of having the players cause damage to each other. I suppose I must have been sleep deprived, because the idea I came up with was damage based on proximity to other players... some image of players running at each other and, if they could make contact, causing gibs. Just hurting them if they only breezed by their target. But on better reflection this made no sense whatsoever, since both players would be being hurt. Both would die at the same time. Somehow this turned into glowing players (like flag carriers and quad holders do in q2), and players being hurt by light. I made it so that darkness (real pitch black) healed the undead players, while lights hurt them, brighter lights hurting more, etc. I had this effect in the playerthink, so anything that had light caused damage; that meant muzzle flares, explosions, everything. But I just made it too complicated past that, and never implemented much more.

As for the undead-as-death, that was unpolished as an idea. I had a few working ideas, including having an almost undead class-based system.. human to ghost, ghost to zombie, zombie to ghoul (or some other random progression) each step having peculiarities/abilities. Then there was a more Typhoid Mary (Wikipedia:Typhoid Mary) style where one (hard to kill... undead need to be gibbed to really die) undead could "recruit" through killing. Balance on that one might not have been so great... a sliding scale, where it would get less and less fun as you were the only human left. So that left me just coming back to undead vs marines all the time, as if they were red vs blue (or aliens vs marines if you want to take an example {1, 2} where the teams are different.)

CheshireCat: Heheheheh... you could have almost an RPG-ish experience/level system for dead players that way... What if you added one for live players, too, where maybe your undead get different and more powerful attacks, and your living players say, have the same attacks that get more powerful and more accurate... Just a thought :-) the stuff I'm working on is small, and I don't think I'll be implementing any large ideas soon (like the JSRF conversion I only wish I could write)