Saturday, July 31, 2010

3 Weeks

I guess I should really get back into my old pattern of updating regularly (and having things about which to update?)... there is news though. It finally has a name... your delusions manifest in Hotel Solipcyst. The word comes from solipsism, this desperate idea that only your mind surely exists. The beauty is that this paranoia is not even enough... the whole point of this segment of the story is that memories are as mutable as anything as well. So what can you trust? Oh, and "solipsist" became "solipcyst" by an esemplastic whim -- "cyst" has that excellent parasitic connotation to it. Yeah, I saw Inception recently too -- but I've had these ideas for millenia prior.

In my last three weeks (officially yesterday) before moving, I will produce a trailer to something that isn't quite yet a game, something that won't be finished. I have a vague inkling why a trailer could still change things, but for all purposes, my motivation is the same as ever -- my own enjoyment. As always, I like creating effects, ideas, behaviors -- not necessarily fun ones or those with win conditions.

My goal right now will be excellent if it works how I envision -- basically, think spotlights for mood lighting. More later...

Sunday, July 25, 2010

Floating Points and Floating-Point Arithmetic

My Java experiment, which has been eating much of my development time lately, should soon be playable. Frame-independent movement (don't move 1 pixel per frame, move 15 pixels per second and track dt) and rounding issues were finally remedied, and I got my logic improved for jumping from rising platforms. I also briefly implemented a scrolling background layer that doesn't seem to eat too much more CPU. Net effect of all this work? I could have my falling Santa game going within the week. Which means I could bug people who won't have time to help for sprites.

Mnemonic-wise, I haven't done anything. I really would like to turn out a trailer before school starts -- making the one last summer was really fun. As for making an RPish game playable and -- more importantly -- fun in three weeks, it won't happen. That doesn't bother me, so I guess if anything, my goal would be to finish fleshing out the environment for a future fun experience. My sense of time and haste will be inverted a bit tomorrow, so I'll try to focus on Mnemonic instead for a day, see what happens.

Monday, July 19, 2010

Another Return, not a Yield

I haven't done enough parallel programming to really make that joke in the title yet. But anyway, I am back from UT Austin (technically have been for a few days, but stayed really busy until today). I remain astounded by orientation, the OAs (student leaders/RAs there, basically), the friendliness of everybody I met, my own unexpected socialness, the city's breadth and the campus's depth, and the spectacular advisors and students from Dean's Scholars and Turing Scholars. I'm taking 17 hours this fall -- Vector Calculus, CS theory, CS data structures & algorithms, a philosophy of the arts, and two two intriguing classes associated with DS. I guess that means Mnemonic really will fall on the wayside. Nevertheless, I will work on it when time is available. More importantly, the work I do continue all started here... ultimately I've created a playground for multi-agent experiments, a bestiary of pathfinding techniques, a home where a few people hung out, if only for a few minutes in passing...

But it's a month too early for sentiment. In my few days back, I tweaked guest crowd behavior again to time their routes through the Hotel better. I'm not happy with their "pace around aimlessly in a room for 30 minutes" behavior yet, though. Since I'm diffusing this bloody useful influence gradient from each staircase/exit on each level at init-time, I decided to use it not only for pathfinding between rooms but also for wandering around. Pick a staircase and a random scent level (not 0, which would be the staircase itself) and hill-climb up or down to reach that point. Continue for as long as needed. This works for the most part, but I'm observing lots of agents getting caught in local minima -- they'll spazz out between a few tiles. Gotta examine the scent levels there to figure out why.

I've also been continuing my Java experiments. Today I got "frame-independent" movement going... rather than trying to run the game at 60FPS by sleeping variable amounts of time, I'm having the thread/game loop sleep a constant time and tell movement functions dt -- that's change in time since the last tick. This lets me specify velocities way easier anyway -- 50 pixels per second? No problem, it's been 349/1000 seconds since last tick, so a touch of dimensional analysis (fancy-speak for "multiplication" in this case) and some floating-point positions, then things are moving consistently no matter how well the game is running. Sadly, my collision response-fu isn't quite as strong -- my trick to fix overlap by the axis over which the instigating entity was originally trying to move, it isn't working so great when you're constantly falling and also trying to move left/right. Once I fix that, hopefully the other major issue will clear up too -- movement isn't fluid at all. My numbers are probably way off -- and the keyboard repeat rate bug isn't helping (more on that another day) -- but acceleration due to gravity feels clunky still.

Well, it is late.

Friday, July 9, 2010

Cyclic Graphs, Rejuvenated Lifestyles

I haven't vanished. Today I felt claustrophobic in the Hotel, so I finally filled out two areas. First we have the vending hall...
Followed by the laundry room, with animated washing machines! The phrases floating around are relevant and will eventually be animated and helpful as well. For now, little jokes in Latin are sufficient.
Lastly, we've got the gift shop. I wanted that Earthbound-esque mall look, hence the second floor. A valid use for escalators! Not sure how the 'interact' command will work with things like shelves of items yet... it's no fun to go press the spacebar next to each shelf until you find the clue you need.
So what else has happened, and will happen? A new joy has entered my life in an unexpected way and remains on a distant pedestal for good reasons. This next week, I shall be away from any form of a computer, so sorry, I will be composing ideas only. It's for university, though, so I'm quite happy! I suppose once school starts and I have less time to work specifically on MnemonicRL, I'll tag some posts as UT (UT Austin, that's my home) so I can show off my baby steps in the world of formal Computer Science education. Anyway, I'll be working harder than ever once I get back so I can release something by the summer's end. Await with curled toes!

Oh, and Java. I'm liking it. Sometimes choice is a bad thing -- SDL, Allegro, OpenGL with a 2D perspective matrix...? Swing and AWT just work, and they just work everywhere. I fixed the flickering issue in the detangle-the-strings applet, and I'm about to start on a new idea for a game. More tomorrow, hopefully, before my great journey begins.

Tuesday, July 6, 2010

Appletizing

Eh, today wound up with my eyelids numb and pupils dilated. Curse you, optometry! I wound up playing with Java much more than working on crowd behavior. Finally appletized my detangle-the-strings game. Click and drag the circles till no lines intersect. Try it? Server might go down anytime, and the flicker is a known issue. Guess I'll start tagging non-MnemonicRL posts, since as university starts, I'm sure to be talking about different projects. No fears, I'll get back on track with the Hotel tomorrow!

Monday, July 5, 2010

My own Personal Army

Sometimes I just have to start with a picture. Basically I've got 100 guests running around the Hotel (which still needs a name, blast it!). Already it adds mood. Once I time their movements better and create a cyclic logical graph for them to traverse and add waiting regions near tables and such, it'll seem much more immersive.

I'm going to be very busy next week (more on that later) and indeed my summer's hours are spiraling away, but I'm going to try my best to get both a new trailer and a complete, playable, and fun game segment out by August.

Saturday, July 3, 2010

Java Adventures, Mostly

I somewhat sheepishly offer a screenie of the new ripple effect in the Atrium.
I also began drafting the first guest's schedule, personality, and backstory. I think they'll have the appropriate balance of intrinsic creepiness and charm.

Most of today I have spent beginning my first experiments in Java. I love the concept of interfaces and am still working my current idea of callbacks and the observer pattern into this. My first project is to implement a simple tangled strings puzzle, where you move little "knobs" around to detangle the attached strings. I've got the knobs moving by mouse, presently, after an hour or so of work. The Java API is clearly the toughest part for me, so I'm still learning lots of details about AWT and Swing, the drawing and GUI libraries. But I'm really enjoying it -- it's a fresh idea for a project to do, and a new language... one that I'll be using extensively at university in... well, less than 2 months now!

Friday, July 2, 2010

Animating ASCII Water Ripples

See rec.games.roguelike.development for an explanation of my algorithm.
The results are reasonably pleasing. The wave interference passes at a glance. Here the effect can be seen in the hotel pool:
The aqua ~'s expand in a random blob shape outwards, and interact with other ripples.


Improvements are still needed. Large areas with many ripples bottlenecks, but this can be alleviated by giving ripples a certain lifetime rather than permitting them to expand until they exhaust the body of water. Tomorrow I shall try to connect more of the hotel and work on guest pathing behavior. Excitement soon!

Thursday, July 1, 2010

A new overworld

Because the old one wasn't cutting it. I mean, it had no hotel vibe at all. So I present... the Atrium.

A grand staircase, tiled floor, two floors.

And there's the fountain... look familiar? Gonna work on a few effects for it. From the atrium are connections to the elevator, giftshop (working on this), laundry/vending room (another new one), kitchen, ballroom, pool, and themed guest floors. I really feel that this area has a better hub vibe to it. I'm working on connecting all the areas and fleshing out a few more, so guests may be trodding within the walls this weekend. Feeling much more enthused about the project again.