NoshBar's Dumping Ground

The Uncharted trilogy is a fantastic series of games, 1 and 2 being amongst my favourite games.

I’ve finally started playing Uncharted 3 and can’t help but notice how it’s not so much holding my hand, as holding my head on the sides and rubbing my nose in the answers to puzzles screaming “GOOD BOY, GOOD BOY!”

A lot of talk has been going on about how the new Mario on 3DS is condescending, in that it will basically finish a level for you if you look the other way for too long.
Also, Dark/Demon Souls and Super Meat Boy are heralded as a return to proper hardcore gaming, made intentionally difficult to do anything in (which is condescending in itself, isn’t it? “Oh, the games are too easy for you? Shame, here, try THIS on for size.”)

So, what is my problem with Uncharted? Well, it’s mostly a crapload of shooting, with some puzzle and exploring bits in between.
Puzzle bits. Puzzle. As in, “something to figure out”, or as Wikipedia puts it: ”A puzzle is a problem or enigma that tests the ingenuity of the solver”.

The thing is, I never get a chance to be tested in Uncharted 3.
It “hints” things to me before I get a chance to explore the room (A graphic comes on the screen telling me “HINT” and to push “up” to see it… and won’t go away until I do).
Added to that, I have a hint-book on me in-game at all times, with pretty much everything I could ever need to know in (that the game constantly reminds me about).
But that’s not enough, no, the characters in the game go “DRAKE! DRAKE! I found something! It looks like what we need! I bet if we pushed this EXACT tile then it would open the secret door hidden behind this obviously non-matching textured stone in the wall! Sully want treat, TREAT!”… and walking anywhere within 10 meters of said discoloured-tile brings up an icon telling me to push the green triangle button to make it happen.

So not only do I get told where to look and told to read what to do, I have characters that ruin it for me as I’m exploring the beautiful level design.

The worst part is that sometimes I know exactly what I should do, so I start doing it, and halfway though the puzzle, the characters decide to start warbling on about how I should maybe start doing what I started doing about 5 minutes before.

You know what guys? Why don’t you shut the hell up and get shot or something?
You’re ruining it for me, seriously. I no longer have a desire to search around, to figure anything out, because you interfering bastards are just going to treat me like a moron anyway.

And… AND! I get treated like the stupid one, but Drake seems more than happy to casually look at the hint area while being shot at, no reaction at all.
Not only that, he will gladly dive into some water from a height one time, but another time he’ll fall 1 meter maximum, and seemingly be struck by Zeus himself as he hits the water, letting out a scream and dying like he was made of scream-capable tissue paper.

Kirby’s Epic Yarn is a game that gets it right. You might argue that it isn’t as complex as Uncharted, but the game turns you into several different vehicles along the way, with completely different handling, and all it gives you is a simple icon hinting how to move it around, the rest is up to you to play around with and discover.

So, puzzles are solved for me, gunfights are insane, there is little need to explore anything… why, if I wasn’t having so much fun shooting South Africans, I’d stop playing.

Fortunately, all this fuels me to want to make the most condescending game ever… because spare time was invented so that it could be used to ignore people you care about, right?

P.S. I just played Tintin on the iPad, and the first thing it does is tell you to touch glowing objects. Really? I thought gates just normally glowed with a circle on them. Not only that, while seeing how the onscreen d-pad worked, I happened to walk past a hole in the wall, blocked up by planks. I tapped them as an obvious way to get past the wall, but no, first I have to walk to the gate, try tapping on it, find out it’s locked, THEN I can go to the planks, which are now glowing with a circle on too.

Gah dammit guys.

[ view entry ] ( 372 views ) permalink print article

So, I finally managed to get myself a TouchPad, and it's even more awesome than I thought it would be.
It's currently set up to dual boot between Android and WebOS, and it runs Ubuntu within WebOS just peachily.
WebOS just feels so good to use, the browser just _feels_ nicer to use than Android's or iOS's.

Anyway, kicking the nerdiness up a notch, man oh man is the PDK nice and easy to use, providing OpenGL and SDL from the start, with the ability to test and debug things on Windows.

The fairy tale version of my porting story: I barfed up a bit of SDL bootstrap code to create a window and handle inputs, and everything else just worked!

The real version: I am a bleeding tool. I initially looked at the PDK samples, one called "simple", which included an OpenGL ES 2 header file.
So I went on a learning escapade where I FINALLY addressed my lack of GLSL knowledge and suspiciously loving attachment to the fixed rendering pipeline.
Shaders and whatnot had never made sense to me, until I found this awesome tutorial.

So I finally had some shaders up and running, I had some hand-coded matrix maths stuff going, I had 3d models on screen and rotating and... annoyingly disappearing (some Z issue) and going all over the place.

In an effort to see what else GLES 2 provides, I decided to see if there were any other header files...
There were/are.
An OpenGL ES 1 header file.

So yes. Drumpster runs on the TouchPad fantastically.
Take that Joggler.

Oh, and I found and fixed the bug in MonkeyBot... and got it running on the BeagleBone and Bifferboard.
I'll upload the new code "soon".

[ view entry ] ( 314 views ) permalink print article

While that's not strictly true, I am overly paranoid about a bunch of things, opening a port on my firewall being one of them.
Not because I think SSH might have flaws, or the firmware on my modem, but because I'm a complete dufus with no self-esteem who doesn't trust himself, and I really don't feel like setting up my PC again, post internet-abuse.

Sooo, introducing (Helper)MonkeyBot, a little instant messenger bot that sits and worships and listens to your commands.
You also get a single-page PHP file to view the stored messages more purdy like.
MonkeyBot is open source and released under the ZLib licence, and is thus compatible with its dependencies, SQLite and Gloox (which uses GnuTLS).

It's a little program that logs into an XMPP account and listens for commands from another specified XMPP account (with a secret handshake phrase), and basically stores whatever you type to it (with a category), with the option of recalling/viewing/deleting/searching the data via IM, as well as downloading files for you so that they are ready by the time you get home.

An example dialog would be:
nashbor@gmail: Hey Asshat. What do you want? todo: Make Drumpster less poo. Stored. (MessageID: 1) download: Stored. (MessageID: 2)
...<time passes so slowly, slowly...> Download finished successfully: search:Drump* ID1: Make Drumpster less poo. Search finished.

MonkeyBot is super easy to compile on Ubuntu.
apt-get install gcc g++ libgloox-dev
change to the folder with the 7 or so MonkeyBot source files
compile sqlite with FTS4 support
g++ *.o *.cpp -lgloox -lpthread -ldl

On any other platform though... I came across some PITA's:

Not every version of Linux has a package manager, especially when trying to use embedded systems, so you're stuck compiling things for yourself.
I spent much too long trying to get libnettle to compile (WHY? Why can't you see the libnettle include files? The paths are PERFECT you piece of gangrenous armpit slug!), which GnuTLS needs, which Gloox needs.

For Windows however, you can get a precompiled GnuTLS DLL and DEF off the gnu website, which you can create a LIB file from, and link against in Visual Studio.
I thought it would be:
Compile Gloox, linking to GnuTLS. (of course, you have to remove some files from the solution and make a typedef before it will compile)
Compile MonkeyBot, linking to Gloox.
Make sure all the GnuTLS and Gloox DLL's are in the MonkeyBot.EXE folder.

But nooo, that gave me weird connection issues in Debug mode, or a crash in Release mode.
However, deleting all the GnuTLS DLL's from the .EXE folder made the Debug build connect just fine all of a sudden.
My random-unproved-and-probably-shitty theory is that the Debug Gloox.DLL includes the GnuTLS stuff, at least it should, given its size.
As for the Release mode crash... some std::string thing that I couldn't be bothered trying to find out about.

I'm considering rewriting the ChatEngine class so that it can use either Gloox or the XMPPFramework for OSX/iOS... with plans to run MonkeyBot and Apache and PHP and the viewing program on a poor abused jailbroken iPhone I got handed down to me by someone rich because I'm so 3rd world.

Anyway, it works for me for now, I discovered a crash when creating custom actions JUST as I was uploading the files to my site... so I guess v0.2 will be coming soon... annnd that you should probably take the time to learn about cron and watchdog scripts...
Lots to still be done on MonkeyBot, like remote shell, not sucking, reminders that do something actively...

Use it, don't use it, I don't care.
Rock on.

[ view entry ] ( 348 views ) permalink print article

Over the past few years (for a million different self and non-self inflicted reasons) I have become insanely uptight, often getting upset about things I don’t actually care about.

Deep down, I’m incredibly relaxed and calm, and nothing bugs me, because it’s all just life, and we’re all going to die in the end anyway, so who cares.

However, I must have decided somewhere along the way that I didn’t deserve to be happy, or perhaps just layers of crap started to form on top of the don’t-care-core, smothering it. I didn’t deal with things right there and then, so more and more crud formed, in the end it left me as some sort of walking guilt-sponge that feared everything.

I felt fear when wanting to do anything at all. I’ve always been indecisive, but this was crippling.

However, the biggest problem for me (consciously observed) was that my coding -the only thing I was sure I still enjoyed- was suffering.

I would sit in front of my PC knowing what I wanted to do, but filled with fear that it would be the wrong way. I felt like I had to think things through a million times before I even started typing. Once I did start typing, I thought “if this ever gets code reviewed, this is wrong, I could do this better…”, it was torture.

I like to think that I care very little of what others think of me, but in this state, I had started to care, or at least, started to judge myself in a way I thought others would, worse than the real thing because I’m far more harsh on myself as I wouldn’t hold back.

To me, coding has always been a creative thing, a silly statement to make perhaps, but there are those who see it as logic that can be done in one correct way only.
And that’s the thing, I had become dulled, my creativity replaced by doubt.

Then I started working on Drumpster again, I sat down with the source, admiring how well I had thought things through. I had worked on it for quite a while, re-engineering it many times to be “better”, so much so that the functionality was almost non-existent.

Then came the day where I wanted to generate textures on start-up, needing to blur things, draw circles, basic primitive stuff. I had a buffer of bytes for the texture, needing to draw to them.

Something clicked.

All of a sudden my body was filled with a sensation of joy and freedom, my brain tsunami’ing full of memories from when I was younger, mode 13, 0xA0000000… I started typing like a maniac who types very well (considering he was never taught). It all just flowed through me, the joy of being creative, not giving a damn how gross the code ended up being (and man oh man, is it gross… awesome!).
It was like the good old days, when I knew what I wanted as an end goal, discovering how to program what I wanted along the way, with little thought towards architecture or style that had been dictated to me.

Since then, I have been trying to deal with things about/involving me that I know have been wrong for years, talking about them with the awesome people in my life, sitting in my head thinking a lot, crying in the shower like Ace Ventura, zoning out during meetings with the squirrels more than usual.

I also created a new program, my HelperMonkeyBot (coming to a download near you soon… if you dare!)… also of extremely dubious technical Kwality… but it works, was fun to write, and continues to be fun to hack in.

It gives me confidence and strength I need to talk about things, to see that they aren’t all my fault, and to realise that I don’t care, despite being conditioned to care and worry about every single thing.

So while I’m nowhere near the sugar-explosion-hyperactivity me of old, and I’m still wracked with fear, I’m working through this, coding with a smile on my face, finally able to start dealing with things, fortunate enough to have someone awesome who listens and talks sense to me.

And sure, work is still work, where I code professionally and do the right thing, but my personal life is just that, it’s mine, no one else’s, so screw you all.

Happy code is happy life.

[ view entry ] ( 237 views ) permalink print article

So, I finally decided to release Drumpster.
Even though the only reason it works slightly is because it is so broken (it can't even get being broken right).

The configuration/song creation tool is about 80% done, so until then, some documentation on how to do stuff is here.

Binaries for Windows, Ubuntu and OSX are available... with varying degrees of working between them.
They all load and display songs, which is all I wanted it to do for now, so yay!

I needed to rush to get this out before Uncharted 3 comes out, because otherwise it never would.
Also, this makes me feel like someone in the world might be using it, meaning I have to give this some sort of priority.

Now, back to playing!

[ view entry ] ( 245 views ) permalink print article

<<First <Newer | Older> Last>>