|
|
|
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
|