Monthly Archives: October 2013

Stuffs

Various Notes

MovieClips don’t get any ENTER_FRAME events until they are added to the stage (via an addChild() or something to that effect). Makes sense.

Layer Carnage

Something that really drives me nuts about Flash is the inability to interact with layers in ActionScript. And before anybody gets pedantic and says that’s mistaken thinking, unask the question, l2flash, git gud or anything like that, yes, I understand (I think) the design choices that make this the ‘wrong’ way of thinking, but I still think it’s stupid.

My understanding is that layers are purely design-side elements, and that once your flash gets exported they’re gone and it doesn’t make sense to try to interact with them at runtime. Okay, I can see that design decision, and fine, you want to be consistent, okay great you win the consistency prize. But as a programmer/builder of interactive things, I want the ability to put objects on different layers at design time and runtime, and that’s just not possible. It doesn’t make intuitive sense that layers go away at runtime. You can place, say, a square on the stage, give it a name and then move it around at design or runtime. Yet layers go away? Why can’t you just name them and they become Sprites or something?

One solution is to create a Sprite for each layer you want when your Engine initializes, then add all your objects to the appropriate Sprite. Which is a fine solution except that it completely sucks, since you have to duplicate your layer structure in code, so hooray we get to build everything twice, what could possibly go wrong, oh and also that will all be on top of the stuff you built in Flash Pro itself, so have fun manually reordering things, or you build it once in code and can no longer design anything in Flash any more. Either way it sucks.

The better way is to add an invisible/size 0,0 display object of some kind at the origin of the appropriate layer, then add stuff in code to those display objects. Of course event the most cursory examination of this method reveals it’s a total hack, but all the same it’s a much better solution: it gives the illusion that layers still exist – each created display object exists at the proper z position already and so it’s like the Sprite solution except sensible.

This is how I solved the problem in the first flash test game that I made; unfortunately that code is miles away and I don’t have access to it, so I’m fumbling trying to recreate it. Do you just place like a square at 0,0? But if you make the size 0,0 or make it transparent Flash just destroys it (…why? Can we not have invisible or infinitely small things?). Kind of dreading the internet search that is to follow.

Okay, 30 or so minutes later the solution: create a new MovieClip in the library and put an instance at the origin of each layer. So I did:

  • Insert –> Symbol…
  • Call it Layer
  • Drag it onto the stage on the proper layer; manually set x and y to 0
  • Name the instance – in this case I went with layer_projectiles

There’s a lot of debate on variable name prefixes. Many hatefully oppose it, but I’m going to justify it like this: AS isn’t exactly strongly typed, so it’s not like I’m saying

int __int_myInt; // an integer

or some shit like that. Prefixing with layer_ will let me organize mentally better than just projectiles, enemies, etc.

WordPress Categories vs. Tags

As I’m going to categorize/tag this post I’m looking at my options and thinking two things:

  1. I don’t really know what the difference between tags and categories is
  2. So far my choices for categories are ActionScript, Angst, BS, Development, and FMB. Well, all of those categories apply to this post, and every post I’ve yet made. In fact it’s pretty safe to say every post about FMB Development will indeed involve much Angst about ActionScript BS.

So: TODO figure out difference between cats and tags and use them appropriately. Also write about happier things.

Keyboards

For typists, and programmers especially, the right hand pinky finger is ridiculously overused. Unless you rolled a natural 18 DEX it’s absurd to have to type things like:

p0["'>:-0'"] += ‘{p}’;

Especially considering the number of backspaces one will probably need to employ along the way. So I always move my hand when sequences like this are required – which is just about every line of code. But that’s horrible, because then your hand shifts out of home position and chances are you’re going to come back wrong, slowing you even more and making more mistakes.

Furthermore, look at your keyboard: chances are the keys are staggered so that each row is shifted to the left of the row directly below it. This makes sense for the right hand, because it naturally comes in at an angle from the side of your body to the keyboard; to hit the proper key with the proper key you extend the finger forward relative to your hand. But for the left hand it’s disastrous. Your choice is either a really unnatural finger movement, or a horrible wrist position to accommodate a natural finger motion.

I’ve seen keyboards that don’t stagger their rows, but this alone is not sufficient to solve the problem – you need to then tilt the keys to face the hands properly. On a laptop this becomes absurd. Why not stagger the two sides of the keyboard oppositely, then move some of the pinky punctuation keys to the space in the center that opens up? Why has nobody done this yet?

Trigonometry

I’ve done this so many times and each time I have to mega-think my way through it all over again. And I always do it wrong the first time, then the lights dim in the room as I power ponder the solution out. Given that I’m going to forget it the next time I need it, I’ll leave some notes here.

So a ninja throws a star at a dude. That star follows a trajectory that describes the hypotenuse of a triangle with a and b sides equal to the difference in x and y positions start to finish. The star has a velocity which we’ll express as the number of pixels it can move in one second, which will be some percentage of the length of the aforementioned hypotenuse. We’re interested in knowing how far the star will travel in the x direction and the y direction each second.

We need what I’m calling a unit vector, and it can be expressed in a couple ways. We could do it with just an angle and a velocity, which is really easy and vector intuitive. But we need to apply the change in x and y 60 times a second, so we don’t want to make the calculations to translate that vector into its components over and over again. So the better way is reduce it to it’s components once then work with that. (Note that if the momentum changes over time, due to say friction or whatever it would be useful to keep the angle and magnitude around because we will need to make those calculations every time.)

The easiest way to express the unit vector then is as a single point [x,y] which represents the distance from the origin the star can travel in a second. So if our momentum is [3,4] the star will travel (using graphics orientation) 3 pixels to the right and 4 down each second. (Incidentally the total velocity in this case, as we all know, is 5 pixels/second and the angle is… something, whatever, who cares.) Here’s the bit of code that works this out:

var adjacent = target.x – tosser.x;
var opposite = target.y – tosser.y;

// TOA: tan(theta) = opp / adj ==> angle = tan-1(opp/adj), so:
var angle = Math.atan2(opposite, adjacent); //angle will be in radians, as required

momentum = new Point();
// CAH: cos(theta) = adj / hyp ==> adj = hyp * cos(theta)
momentum.x = Math.cos(angle) * velocity;

// SOH: sin(theta) = opp / hyp ==> opp = hyp * sin(theta)
momentum.y = Math.sin(angle) * velocity;

Goddamn it’s late.

Fucking WP

Jesus god is WP ever monumentally failing me right now as I’m trying to put code tags around my code.

Release 0.0.1

Meeting

Had a Skype meeting with Sean. Agenda: progress report, discussion, next steps, these goddamn kids these days, Fumie Abe, video games, slow emotionally crushing death in the cold black of space, etc., etc.

For some reason internet at my undisclosed location was malfunctioning: going to google.com would redirect you to yahoo.com. Google hangouts didn’t seem to like that, although Skype seemed to work. Don’t know what’s up with that, but it’s every device in the place, which indicates some problem at the ISP or the router to me. Some malicious Yahoo hack attack? Marissa Meyer getting revenge (for what?), one household at a time? Who knows!

Release

Not like we’re actually releasing it in the sense that anyone will ever see it, but this is the state of version 0.0.1. Observe the viewing globe:

(note: don’t insert images at the top of a WP post, or apparently you’ll be sorry)

We have a stage on the left, with five players (the various multi-colored squares at the left (from top to bottom Funkmouf, Gravelthroat, Leper Skinz, Bass Boy, Frank (colors based on their background colors in FMB media)), who are charged by ninjas (the yellow squares) distributed across five lanes. The ninjas currently have a chance of trying to attack with ninja stars, though they are sadly unable to follow through just yet.

Mechanics

Q. Does the concept of lanes make sense? As of now all enemies and players are locked to a certain lane, Plants vs. Zombies style. I suppose enemies in a band member’s lane could only attack that band member. The other options is to have enemies have unrestricted movement and arbitrary targeting. If we go with lanes, should we have a mechanic to reposition band members? Enemies that can move across a certain number of lanes?

A. Just go with lanes for now.

Sean worked on the story, which is on Google Drive, which I am unable to view because of this crazy internet clusterfuck that’s going on now. But we went over it a little bit and it’s sounding pretty good.

Q: Should we introduce strategy element? Like a resources management kind of thing, getting to the next gig, playing solo/smaller gigs to build up pimp buxx, etc.?

A: maybe? But we probably need to focus on one gameplay element at a time. Let’s plan to get the storm-the-stage thing working first, then see if we can introduce additional gameplay elements once we’re feeling pretty good about that.

OR if we have a really solid design, we could get to work on it. But for now we’ll work on the basic stage gameplay and see if we can get a better sense of things from research and experimentation.

Game progression

Maybe we could start out with the band separated, have to get them together? Then battles start with one player (FM), then find another player. This works as tutorial plus difficulty and complexity progression.

Maybe that’s the first 1/3 (or less?) of the game, then the rest is take-over-the-world kinda thing.

It could either be the band origin story (which Sean already has worked out), or they can start the game artificially separated (through trauma/nefarious schemes of Dick Dangerous?)

Then does the resource management thing get introduced immediately, with just one band member, or at a certain point as a surprise-we-do-this-too mechanic, ala ADR?

Plan

Rich: Get gameplay working good, forget all the other stuff. Get enemies attacking, then players attacking.

Sean: Work on story narrative, flesh it out, look at Flash.

Both: Read over flash game development article in depth, absorb it, accept it, embrace it, investigate its links.

Goddamn Kids

http://www.youtube.com/watch?v=lSJyNiHDx94

Turn your volume down before clicking this link

Next meeting

Sunday 27 oct 2013 4:30 ET

12oct2013

Flash Animation Pain

Apparently I’m still struggling like a base villain with Flash animation principles. Before I go into it I’ll note the solution and very basic principle I learned so I won’t need to plow through a goddamn epic to figure it out again when I’ve forgotten it:

Symbols (eg. MovieClips, etc) are containers for objects and other Symbols and stuff. Symbols can be animated/tweened, but base objects cannot. When you convert something to a symbol, then open it and try to animate it, you can’t because you’re inside a Symbol trying to animate an object; can’t be done. You need to convert that object into yet another Symbol in order to do the simple shit you had in mind.

It’s a bit like the homunculus problem – if your consciousness is like a little man inside your head telling you what to do, who’s inside his head? Etc etc, we get it, that’s great, we get it. In other words, it’s a mess.

I wanted a spinning ninja star. So I bumbled my way through the basic design and creation of a four-pointed star, heroically using not-object-drawing mode (unheroically forgetting what that’s called at the time of this writing) so I can easily combine the body and edge together and pull out the hole. I thought I was so clever. Took me a while to get the gradients thing figured out. Also ran into a problem where I drew the interior of the star then tried to modify the gradient (specifically: the shade of grey on one end by setting the brightness) but each time I set it Flash would set the value back to the original value but change the way the gradient looked anyway. Didn’t spend any time looking up why the F that would happen, since the answer would likely make me mad, like why can’t they just make something that works, or if that’s how it’s supposed to work at least make it look like that’s how it’s supposed to work, see I’m a little angry about it anyway, dammit Adobe can’t you hire at least one competent UI/UX person? But that’s not what I’m here to talk with you about today.

I got the basic thing down, converted it to a Symbol with a MovieClip base and wrote stub classes for it. Then I figured I would animate it, so I opened it up and tried to create a tween and was rewarded with this message:  ”The selected item cannot be tweened. You must convert this to a symbol in order to tween. Do you want to convert and create a tween?” With the options “OK” and “Cancel” which every two year old knows are not the proper set of answers to that question, goddamn it that’s fucking basic shit isn’t it? Sorry, sorry. A google search found the answer. In case that page goes away, here’s the relevant quotes:

… each movieclip is like a scene. They have their own timelines. Motion tweens can be applied to objects, not simple shapes. So when you enter inside first clip, you now select the shape inside it. Thats why it asks to make it a clip again

and

… you may only tween a symbol. … This is just how they designed flash. Flash only knows how to tween “symbols”.

… when you double click [a created] symbol in the library, you go “into” the symbol. Inside there you’re right back where you started, looking at the image you imported, which is not a symbol. Again, you cannot tween that image,  you must again convert it to a symbol before flash can tween it.

If you intend on making encapsulated animations like you seem to be, yes, you will end up with 2 symbols (or more). One that contains the overall animation, and another symbol for each asset inside it. You then toss your container symbol on the timeline as you did and you will see the animation, as you’ve found out.

Why are quotes in this wordpress theme so goddamn big?

Anyway there’s the solution: convert the interior stuff to a symbol, an instance of which is then inside your container symbol, then animate the interior. Which kinda sucks, cuz now there’ll be two ninja star symbols hanging around inside the library which is non-obvious and confusing.

It actually raises another more important question, which is somewhat related to object oriented design: where should that animation happen? Does the world/stage control the spinning of the ninja star, or is that inherent to the star itself? I think it’s a pretty easy answer in this case – having the stage spin the star is laughably cumbersome – but it could presage more difficult design questions in the future.

Time spent on this simple crap: about the length of the special edition of Ghost – Infestissumam (1 hour)

More Learning by Badly Doing

Here are the proper steps, learned the hard way, for animating a rotating object.

  1. Insert -> Motion Tween
  2. Set the tween to the proper length (I chose 40 frames, which in 60fps means 2/3s)
  3. Select the first frame of the tween, which means first deselecting the whole tween which is non-obviously selected and non-trivially deselected.
  4. In the properties panel, under rotation, choose a direction
  5. There should be a keyframe at the final frame of the animation. It should be identical to the first frame. This is bad; when we loop, there will be two identical frames in the sequence, which may not be noticeable but why not do things right?
  6. Select the next-to-last keyframe. Insert a keyframe there. The object should be almost fully rotated.
  7. Select the final keyframe. Right click -> Remove Frames. It should loop correctly

Note that the animation is now 39 frames long. So that’s maybe undesirable. But the solution isn’t to stretch the tween, because the distance from the final frame to the start point will then be slightly longer than every other frame, but to start out with 41 frames in the first place. Would have been nice to put that information in the proper steps, right?

Source for some of this info, though it may have annoying advertising.

After all that I have a spinning ninja star (which, aren’t they a pop invention and historically inaccurate? Whatever), although it’s all wrong, because the gradient, which is a simulated lighting effect, rotates along with the star, which is pretty ignorant. What’s the right solution? An overlay on top of the star? Bah, doesn’t matter now; it’s something to handle when we’re trying to do animation for real. Should probably have more of a hand-drawn look anyway.

Tidbits

Overriding functions: you must use the override keyword to override non-private functions. The declaration must match exactly; no, you won’t get any help from the compiler.

toString(): the documentation I found was outdated; you need to use the override keyword:

public override function toString():String { ... }

The ConstruKction of Shite

I just did something that’s… weird… man, and I don’t know how I feel about it. So PlayerCharacters and Enemies will need to be able to talk to the game engine (class Engine, which is the main class of whole #!), because they’ll need to interact with the world, Ninjas will throw stars, etc. So you could pass a reference in when you construct them, which is probably how I would structure it in Java, which works but like who wants to do all that work. So I tried having a static instance of Engine within Engine itself, and setting it at Engine construction time, then having a static function getEngine() that returns that static instance, or null before construction, but when is that ever going to happen, like, what could possibly go wrong. Kind of like singleton pattern, but… weird. And… it works. But it shouldn’t, right? Because shouldn’t you not be able to set your reference in the constructor, because it hasn’t been constructed yet? I would have done it the traditional way, by constructing it at first call to getEngine(), but that’s impossible because Flash instantiates it itself. So… weird, right? But it seems to work. It bears further investigation.

(1.5 hours later) Okay, I have some some answers, and my understanding is now Good Enough™ to go on. The first reason it was weirding me out is Java-based – you don’t want to go passing this around until the object is fully constructed. Could be Dangerous. In this case, I think that’s mostly okay, since all we’re doing is grabbing the reference, which in the limited testing I’ve done seems to check out. The other reason is it’s like a violation of OO. If you make things statically accessible, then really you’re just moving one step closer to procedural programming, and you’re only using classes as namespaces, so why bother with OO in the first place. Steve Yegge wrote a big attack on the Singleton pattern which makes this argument quite strongly. I don’t totally agree with it (which has the side effect of making me feel inadequate as a programmer incidentally – his rhetoric amounts to “if you disagree with me you have no chance of working for me; if you agree with me I’ll hire you”), as you just need one case where you’ll only ever need a single instance of an object (eg off the top of my head, a game engine) to make singleton a valid choice. So I think his case is overstated, and he seems to admit to that to in the classic “these statements not intended to be factual” parenthetical manner at the end of his post but what the fuck this isn’t supposed to be a review of a fucking Yegge blog post.

I found some answers on StackOverflow that indicated a static instance set in the constructor is valid, so that’s good enough for me for the moment. So it ain’t pretty, but it looks like it’ll work. Anyway, long story long, that’s how we’re doing it and it’s off to bed for me.

10 10 Ninjas

Sup Ninjas

Got ninjas added to the game. 10 ninjas enter the room from the right, one at a time, and charge towards the stage at varying speeds. Each ninja has a randomly generated name (well, randomly selected from a batch of ninja names I came up with). Each ninja has a randomly generated speed with an upper bound and a lower bound. Last time I ran it everyone reached the stage, then in the distance there appeared one slowpoke ninja shambling forward.

Have I mentioned all the players are colored blocks and the ninjas are yellow blocks? Yeah, that’s some exciting gaming right there.

Ninja subclasses Enemy; adding a different enemy type (rhinoceros, maybe?) would be a matter of making another colored block, specifying its speed and name, and Enemy handles the rest.

I should be able to add attacking these ninjas within the next couple days.

Youth are Nice

I went out to dinner with my dad at a small place near the dyke on lake Wallenpaupak. It was just turning dark. He dropped me off near the entrance and went to park around back so I wouldn’t have to hobble very far. I made my way to the door and stood facing the roadway while I waited for him to park. As I leaned on my crutches a small SUV drove down 507 towards me; the restaurant sits on a curve so they were coming nearly straight on and had a good look. They approached, at least 3 young guys, and they leaned out the window in my general direction and laughed loudly and yelled “AHAHAHAHAHAHAHAHAA <inaudible> FAGGOT <inaudible>!!!!” I can’t be sure if that’s what they actually said, because of the wind and the noise from the car and the road, that’s just my best guess. They drove on down the road. I looked around and didn’t see anything or anyone else they might be yelling at; I suppose it was me, the crutches indicating my infirm condition, though the true reason we will never know.

We went inside and ate dinner and talked about the finish on the wooden tables and I got a chocolate milkshake.

Stats

324 lines of code

40KB worth of xlf

15KB swf

09 Oct 2013

In the Poconos recuperating, escaping a somewhat trapped and confined existence at home. Much easier here.

Sketches of Pain

Spent some time sketching out the stage and characters by hand on some graph paper. Learned that I’m out of practice. Trying to work out the perspective, as there will be multiple problems to deal with there. You can go straight top-down, but you want the characters to be in semi-profile so that will look kinda like they’re all lying down on the stage, which isn’t a thrilling show. Maybe not a huge problem, I mean think about computer chess games – you don’t throw them out the proverbial window because the pieces are technically on their sides. But still a top down view with cartoon-realistic players is gonna look strange I think.

You can alleviate some of that by tilting the board, bringing the camera down. In real life doing that will put the whole stage in perspective – the back will be smaller on screen than the front, etc. That also means that lane 1 is technically narrower than lane 5, the characters will be smaller, and in general everything has to scale down, which adds a layer of translation to certain calculations, which I don’t want to do. I really just want fake 3d here.

So you can just ignore all that and keep everything the same size, which is physically ridiculous but easier to handle and so is much more appealing, and I think is reasonable to the user. Look at Streets of Rage, for example. Or Peacekeeper. As long as the gameplay is fun we can ignore some physical realities. So that’s fine, but I need to work out how that will be done and fit on screen. So I’m looking at reference, sketching out different layouts, etc.

I think it’s probably a bad idea to rotate horizontally, ie so that characters in a vertical line appear diagonally (think Radiant Historia, eg). It lets you pack the characters closer together, and is more exciting, but it messes with user perspective in a bad way in pseudo-action game I think.

So probably the right angle is just a rotation down vertically from the top to something that looks nice. Still trying to find it.

Listened to this interview with DFW while drawing. Earlier listened to his commencement address, which always helps set me straight. Main message: you can choose what to think, what to pay attention to, to be aware, to be compassionate, to not be automatic, and it’s not easy, but you can. Perfect thing to listen to while I’m trying to reset myself in the poconos.

 

Git Shit

Git Repository

Bumbled through some git carnage. Set up git tracking for the project. Set up a remote repository on my web host. Had to go back and look at some documentation for how I normally set this stuff up. Questions:

  • I have access to my web host as a single user, can’t create another. Can I only then use git (via ssh) as that single user? Can I add another public key that will allow someone else to access the repository, but won’t allow them to log in as me? Or must every git user also have the full access of the web host user?
  • If that limitation exists, is this the wrong way to do it. Should this be done with GitHub instead; is that non-free if this is a private repository?
  • Is it more sensible to try to set up direct connections between development machines? Seems…shitty.
  • Should I look into a different protocol?
  • Given how much mental overhead git is, is it even sensible to use it at all?

I always hate dealing with this shit. Just want to build stuff, don’t want to deal with the intricate idiosyncrasies of some auxiliary tool. As a sub-note, it took me about 2 minutes of testing, deleting and retesting to figure out the correct spelling of “auxiliary.”

Time spent: Let’s call it an inconsistent 1h

You Stunk my Babbleshit

WordPress Spam

Within, no joke, 2 minutes of the christening of this brand new blog – which is not linked, as far as I know, anywhere on the internet – with a sparkly, bitter and tart first post, the opening spam salvo was launched across the bowels of the internet landing squarely on the poop deck. Then another within a few minutes. Around the fifth spam I rushed to the computer and rage unclicked the “email me when a new comment is received” option, cursing mightily and also ineffectually. I made a note to sort it out tomorrow.

Which day came and I awoke to 60 comments awaiting moderation, all of them total garbage, needless to say. Only two people know about this blog right now: me, and every goddamn spammer in the world. (Yeah, 60 is a small number, believe me, I know from the days of managing the DS email).

First step was to disable commenting for all but logged in users. Second step was to research some shit. So, really, we probably only want logged in users to be able to comment (so, two commentators, wow), but it’s the principle of the thing, so I looked at some WP best practices and checked out Akismet, which I signed up for like I need another online account somewhere. We’ll see how that works out.

Time spent: roughly 0.5h

The Endginning of the Begend

So I figured it would be nice to document the process a bit. For one, because as a developer I’m always solving obscure problems, then forgetting the solution, then encountering the very same problem later and racking my brain trying to remember what the solution was. For two, to act as a work log on the project. For three, for maximum transparency. For four, for fun and profit.

It should probably be pretty private; I intend to post some intimate things about the problem solving process, which experienced programmers may look upon and scoff at my abilities, which will hurt my feelings. Also because I dislike having eyes on the embryonic stages of a creative process; or any stage of that process, come to think of it.

I debated for a bit whether to use the existing CMS on my site, or install WordPress, and went with the existing solution because, really, laziness. Then I reversed that decision and just manned up and installed WP. Not sure anybody in history has had to actually get manlier to install WP, but there you go.

Some shit I had to deal with yesterday:

Actionscript inheritence

I have different classes for each player character, all subclassing the “abstract” PlayerCharacter class. Quotes because AS doesn’t really have abstract classes. So just like promise not to instantiate one, ok? Problem: no var inheritence. So you can’t define

public function get playerName():String {
    return this.__name;
}

in PlayerCharacter then just override the __name var in the file, because you can’t override vars. So that raises the question: do you just set __name in the constructor, or override playerName() to return the right name?

The problem with the constructor method is that it’s like invisible. There are some things you can override but you have to dig around the superclass to find them, or the (eventual) documentation. But because there’s no real abstract classes, you can’t just leave playerName() unimplemented and get a compile-time error letting you know to implement it. You could throw a runtime error or something but that’s… unseemly.

I went with the constructor, because: 1. it kind of reminds me of django, where you do something similar if you subclass a Model; 2. code reuse – you don’t have to write getters like 100 times or whatever; 3. you can do this with functions also; and

4. thinking ahead, I’d like to be able to read character settings and instantiate from file. This is so a collaborator could say, e.g., I don’t think FMB is firing fast enough, and then change the setting in a text file (or use a tool for same) without having to touch code or recompile. That’d ease the balancing process.

WordPress

Is it better to install an old version of WP (3.1) automatically from Fantastico, or manually install a later version (3.6)? I’m thinking manual, since then you’re not depending on yet another tool for your tools. Downsides: you gotta keep on top of updating. Maybe a big security flaw comes out, maybe you get hacked, maybe you end up responsible for zombie nuclear site attacks, or worse, spam.

This started yet another colossal rabbit hole tech one-thing-after-another hate fuck. Can’t download wordpress because my local website repository died in my HDD crash a few months ago. Need to git clone it from my server. What was that URL again? Can’t remember. Or do I restore it from backup? Should I restore it then git it? Did I do anything since the last backup? I should check my laptop, since I think I last developed from there. Do I even want to maintain the WP install with git? Does that even make sense?

Can one/should one deploy a simple website with git, instead of the typical FTP and pray method?

http://sebduggan.com/blog/deploy-your-website-changes-using-git/

http://toroid.org/ams/git-website-howto

http://www.bitbonsai.com/git-deploy-website-5steps/

Yes, one can. But that’s effort, and anyway it seems like a weak deploy solution, so should I look into capistrano? For a simple fucking website? Ugh. I just wanted a pepsi. Still so tired, I guess from the injury and healing or something, maybe residual percocets, even though I didn’t take any today in hopes of not being so tired. Foot hurts a little as a result, too. Sheeit.

So today:

F It

In the end I said fuck it, I’m not gonna try to git my site, I don’t even care about that right now. Just downloaded the latest wordpress, detarred it on the server – didn’t even unpack it down here, that’s how much IDGAF – ran the setup and here we are. I spent some time having a little fantasy about customizing the theme but that’s going in the trash for now. Who really cares what the random development journal looks like?

Just need to change up my subdomain configuration and add a user for Sean, assuming he wants in on this garbage.

Next

Since I’m already in a morass of non-development, I may as well get up a git repository or two. In the process I suppose I’ll see if I can recover my website and get that figured out. Same with all the other projects that died with the HDD – I can’t remember now where I backed them up, or when, or if I changed anything since the last backup that’ll be lost forever, lol.

For development, next is to get all characters on screen, then queue some enemies and get them moving.