Toilets, New Orleans, Video games, Linux, PostgreSQL, the Marigny, Restaurants, Live Music, Bars, Hollywood Hotties and all with 30% less fat!!

There's no place like home.
Home

Recent Additions.
What's New


Tell me that you love me!!
Feedback / Submit Reader Photos


PGDesigner Datamodeling Tool
PGDesigner


The Greatest Game of all TIME!!
Cylindrix


Links
Links



Personal









Links:

Watch Me Eat a Hot Dog

www.glitch13.com

Live New Orleans

Yaddoshi's site

Six Ten Split

Fleshbot

Offbeat
Hardcrawler -- How things change

2006-11-07: Hardcrawler -- How things change - Hardcrawler
A lot has changed since we last talked about Hardcrawler. I went to the lua channel on IRC and immediately solved my Lua fragility problem. I consolodated all of my lua states into one global lua state. I bought the lua book and discovered how to implement very powerful object-oriented data structures in Lua. At this point, I am not implementing any new behaviors in C++. In C++, I only implement interface functions, and ALL of my custom behavior is implemented in Lua. I have implemented many many Nethack behaviors without my C++ code even being aware of the behavior. From tinning kits, to wands, to Magic Markers, I am able to implement extremely complex objects completely in Lua.

I had to make a painful decision, though. Hardcrawler is no longer a multiplayer game. I was keeping the client/server functionality in simply because I had devoted so much time to the coding. In reality, there was no compelling gameplay reason to have a client/server architecture. In fact, the networked design slowed my progress. I was still dealing with minor bugs related to tracking of server entity state, notification of item destruction, etc.

I gutted all of the networking from Hardcrawler in a day. This is partially because my implementation had an essentially identical client and server. The client made requests to the server, and the server modified its internal state based on these requests. Any changes in state on the server resulted in packets being fired to the client notifying it to change its state. Fundamentally, the client and the server were identical. All I had to do was pull all of my server responder code into the client request functions, and the client state was correctly updated.

The magic of properly abstracted code. Don't look at it, though, I can't take the criticism.

Immediately upon moving the a standalone program, I was able to implement a slew of functionality that was difficult before. Implementing fog of war and player blindness was now trivial. (Before, on the server, if I were to implement fog-of-war I would have to actively track where the player had been and only send packets from the revealed squares, plus, if the player was blind, I could not send any packets from unseen entities due to the risk of hacked clients.)

On the day I moved over to standalone Hardcrawler, I implemented (fully functional) the following: Blindfolds, blindness intrinsic, potion of blindness, warning intrinsic, ring of warning, fog of war, saving/loading of fog of war. That may not seem like a lot, but it took one day!



Permalink to this post.

Philosophy

Computer Stuph

My Weight Loss Program

Misc Stuff

Dream Page

My Adventures

Media Reviews

Poker

People

Hardcrawler

Toilets

Gods of F*!@ING Rock!

Starcraft II

Video Games

Random People

Live Show Reviews

John's Guide to Being a Metrosexual

My MAME Project

The Coolest Men on Earth

Hottest Hotties of Hollywood


My Taiwan Adventure


My Hong Kong Hijinks