Man, this place is deserted

Hi there. What’s up? Oh, not much is going on with me either - I just realized I only have 6 classes, 16.5 credits, between me and graduation.

Holy crap.

Well, except that I have to take 11 more credits of honor’s courses. Oh, and I have to do an honor’s thesis. Don’t forget that I probably don’t want to graduate at 20, either.

Anyway, suffice to say that that was a smack to the face. I could almost be out of academia permanently - I only have a semester’s worth of classes I must take (as opposed to the filler classes I’m probably going to take). So, hopefully you’ll start seeing some new content around here, because I don’t want to spend the last of my carefree days playing Guild Wars 2 (which I have a lot to talk about) or just sitting around being bummed (which I also have a lot to talk about, but here is not the place, and never will it be the time).

I learned a lot about Linux during the summer, so… Maybe something about Linux? Any ideas?

Javascript!

http://www.straypixels.net/daGame/huptest.php

What does it say about me that I program after a final to relax? Well, watch this spot for further updates.

(No long writeups until finals are over and I have some time)

John Dies at the End

John Dies at the End Cover Image from David Wong’s Blog @ johndiesattheend.com

I’ve been meaning to write a post on John Dies at the End. Forgive the lateness - I know the book was released in 2007, and the sequel’s going to be released soon, but I only picked it up after I read Wong’s (or Pargin’s) article on the Monkeysphere on Cracked a couple months ago. Just before that, I’d seen the book, browsing around the internet. The article persuaded me enough to buy and read the book.

A quick synopsis before we get into what I think. John Dies at the End uses the story-within-a-story device; it revolves around David Wong, the main protagonist as well as the author, telling a reporter about his and John Cheese’s experiences with the supernatural. They are ghost/monster hunters who have been so close to the edge of the universe (figuratively) that they got a look down into the void. After that, they started seeing things; things that no one else could see, like ghosts and snake women and wig monsters.  During the story, they face everything from Soy Sauce to fake Jamaicans to extra-dimensional warp holes_._

Minor spoilers and numerous references to other fantasy books below. This isn’t really a review as much as a discussion. If you’re looking for a condemnation or a recommendation (although I suppose this is a recommendation), look elsewhere.

Read more...

SDL Rotation and the Most Unsettling Book Ever

JAGS title screen New title screen. Don’t worry, the cornflower blue is temporary.

I was thinking about using OpenGL to port JAGS over, rather than blitting images using the SDL libraries, and now it looks like I may have to, even after porting all the code I’ve done so far. The reason is that apparently, there’s no good way in SDL to rotate things in real time. I can’t imagine why that is; then again, I have no idea how the SDL rendering engine is written.

Remember that rotations are kind of an important thing in JAGS, for two reasons: I’ve got to rotate the character sprite around to face the mouse, and I’ve also got to rotate projectiles. SDL_Gfx has a function to draw lines, which I hope is reasonably fast, but if I want to add in rockets or other things later then I’d like to rotate those too.

Read more...

Quick Post

There has been no news here for a while since the last post. A quick update, then.

This week, I should not be updating this blog. I should be studying. This is not what I should be doing. Here’s a quick snapshot of my week: I had a systems programming project due friday, a computer architecture project due yesterday, algorithms homework due yesterday, statistics homework due tomorrow, an algorithms exam tomorrow, a computer architecture test in the afternoon on Thursday and then a systems programming test in the evening on Thursday. Then I have the Trinity Firefighting Competition to go to over the weekend.

Well, at least it has a sort of symmetry to it.

Anyway, that’s why there haven’t been any updates - because I’m busy. The port of JAGS was progressing nicely until I hit this wall of projects and homework and exams. I’ve gotten to the point that it generates a level which you can walk around. I am not convinced I’ve made it tight against hacks and such (for now, the client calculates movement speed, not the server) but I can worry about that after I’ve got everything working. Hopefully I’ll have some time after all of this for my personal projects.

Also, in other news, I’ve been reading Shamus Young’s The Witch Watch. It’s not a very cerebral read, but it’s enjoyable so much as I’ve read it. I may give it a review sometime, after I’ve finished - Shamus needs more publicity. Although, I’m not sure if I can give it to him, with my 0 readers.

So it goes.

Doing Stuff

Over the last few days/weeks/months, I’ve pretty much been coasting. For some reason, going back to the terrain generator is simply not appealing to me. I didn’t update the last thing I did - well, take a look at this:

That, right there, is the edge boundary between two chunks. You don’t have to squint very hard to see that this definitely is, in no way, natural. I think it has something to do with the diamond square algorithm, and the paper I referred to earlier in my series on generation touches on the subject, but I cannot, for the life of me, get it to look natural. It always turns out like this.

So, instead, I turned my energies toward video games for a while, as I am wont to do, to recharge. However, I think it’s time to start something new. Well, really, more like continue with something old.

I’m going to attempt to port JAGS from DarkGDK to SDL. Then, I will add new features to the game. I will most likely quit before I change anything significant, other than porting it, but hey, that’s the beauty of personal projects - you quit while you’re ahead. So, I’ve gone ahead and made a copy of my JAGS project in Visual Studio, started a SourceForge account, and set up Mercurial using VisualHG, in an attempt to understand what is so important about source control. I’ve also switched over the include/lib directories for my JAGS-copy. I’ll post some more later on my progress. Right now, I’m staring at a screen filled with little red underlines - the lines of code, DarkGDK specific, which I have to replace with lines of code that are SDL-specific -  thinking about going back to playing Mass Effect 2 (in preparation for Mass Effect 3). There are hundreds of these little lines. Maybe almost a thousand.

I sigh, and shelve my dreams of defeating the Collectors for now, saving it for another day. Let’s do this.

Skyrim Creation Kit

The Creation Kit for Skyrim was just released last Tuesday. Here’s what I came up with:

SNIPER SWORD

I think the best part is when all the deer get Fus-Ro-Dah’d.

EDIT: Also, I am not sure why there are black bars around the video. I blame it on Microsoft Movie Maker/the fact that all video editing software is hard to figure out, overly simple, or costly.

Dustforce (old)

I’m… not so proud of this review, but for posterity, I’ve left it here. If you want a more informed opinion, I’ve since re-reviewed Dustforce.

One day, a guy named Terrence Lee met 3 australian guys who left their jobs and schools to form the Hitbox Team. They made Dustforce after a year. The end.

Thus is the story (in shortened form) of the notes contained within Fastfall, the soundtrack of Dustforce. I know this, because I bought it. I bought it, because these guys deserve to succeed. Just knowing that this is the story of the small independent group that made the game makes me want to buy the soundtrack again, to support these guys.

Dustforce is a precision platformer, in the manner of Super Meat Boy, where you play a janitor. No, I’m serious. A janitor. You run and jump around like a ninja, carrying around a broom, dusting everything in sight. Yes, it’s an absolutely ridiculous premise. At the very least you’d expect the game to be equally ridiculously cartoony. Well, it may be cartoony, but the game looks absolutely gorgeous. I just love the game’s style. Whoever directed - if even a director exists for these types of indie studios - did a great job on matching the music and the graphics. Just listen to this.

Read more...

CodeSprint

I’ve been working on the Terrain Engine, but I’m back at school now, so I won’t have much time. Moreover, there wasn’t any post this weekend because I was doing CodeSprint, a kind of competition for employers where inverviestreet releases a bunch of problems and you try to do as many as you can over 48 hours. I did… not that well. Although, I suppose I wasn’t planning to - I just made a snap decision to do it, without any preparation. At least I got some problems done.

They had some pretty tough problems on there - mostly because your program not only had to get the right answer out of some testcases, but it had to do it in the allotted amount of time. I was using C++, so my program had only 3 seconds to do any given test case. Anyway, I’m glad I did it, and I did manage to solve one of the problems, so I am barely eligible to apply to companies using CodeSprint. Not sure if it’ll do me any good, with how I did, but we’ll just have to see.

Infinite Terrain Generation - Part 3

First off, thanks goes to wpmathpub for the math markup plugin I’m using. It isn’t perfect, but it does the job. Ed. 1/11/2014: Post now uses latex.

Honestly, this series should not even be called Infinite Terrain Generation. We’ve just about stopped even talking about how all this applies to terrain generation, and instead just focused on “how to map the 2D integer space to the 1D number line such that there is a one-to-one relation.”

But, of course, this title would be too long to place in the title.

Anyway, this should be the last post describing all theory. I’ve got the groundwork - all that’s left is the implementation. Yesterday, I explained a method to get a unique integer seed assigned to each coordinate in an infinite 2D plane. It basically goes like this:

  1. Decide on some method of mapping the 2D plane to the 1D number line. It can be using boxes, diamonds, a spiral, or something else.
  2. Determine a point, consistent across all the boxes/diamonds/sides of the spiral, to use as a reference point.
  3. Determine a way to get this reference without needing to follow the pattern.
  4. Determine a way to easily obtain the 2D point from the nearest reference point.

In the previous part I was stuck on #4, and couldn’t decide on a good way to do #3. After mulling it over, this is the fruit of my efforts:

What is this I don't even What is this I don’t even

Now, if that monstrosity of a steno pad page didn’t scare you away, open that image up in another tab or window - I’m going to be referring to it a lot in this article. I’ll going to call it the main image.

Read more...