Progress on my game continues to go rather well. It's gone so well, I'm including an exclusive early screenshot at my project.
Okay, perhaps that screenshot is a little too early. It's just part of my BYOND DreamMaker window. Aside from being an interesting under-the-hood shot of what I've doing (and a potential source of future exploits amongst the crafty which will cause me to rue ever posting it) it does show a couple things I wanted to mention:
First, this is turning out to be pretty damn ambitious for a first project. I've got about 200KB of raw code generated so far, and I'm not done yet. I'm getting close, though, and I hope to have a beta version v1.0 - playable but perhaps without saving functionality - available soon.
What I've assembled is already fun enough that I think it's worth pushing through to completion, and the best is yet to come. I think it'll be a great contribution to the BYOND game library when done. (The "Project Xenoverse" name is just a project name, by the way.)
Second, I've integrated some math code from AbyssDragon to handle my lines and circles and I want to give him a shout out. Thanks much for that "Ultra-Fast Bresenham Line-Drawing Algorithm," it's coming in very handy. (While I can hack it together well enough to expand a line based on a slope, I'm not super great at math.)
Really, the BYOND community here is pretty great. Just poking my nose into the Developer How-To forum today, I uncovered a couple of powerful bits of knowledge about how to use the 4X skin "grid" component as a screen.object button and how to add/remove verb access to the user during runtime. I'd been hacking my way around that before - and it worked - it just wasn't as elegant as knowing the better ways.
Enough procrastination, back to work. (Ah, who am I kidding? BYOND development is my favorite form of procrastination right now.)
ID:49126
Oct 9 2008, 2:46 pm (Edited on Oct 9 2008, 2:57 pm)
|
|
It's good to see you're diving well into the depths of BYOND's development process. Very few new comers get this far so quickly. I'm very impressed sir.
Adding and removing verbs at runtime is fairly easy as well, you should also look into client/Command() if you don't want the hassle of using verbs for interfaces. (Remember, there are short cuts for a user to access the verb list, that generally being, clearing the default input and pressing space.) Always remember, be sure to add security to your interface. =) |
Tiberath wrote:
Always remember, be sure to add security to your interface. =) Intimidating post. Now, I wonder how vulnerable I am to exploits without going through the trouble of routing everything through my own command interpreter, and that looks like a hassle. Ah well, I'll forge ahead with completing my design then come back and work on putting in an insulated GUI layer if that turns out to be a problem. |
Well, it's not as hard as all that.
If all your commands are verbs, that's fine. A verb can be called using the same method as a proc. So a simple method would be to discontinue the verbs execution if a specific variable isn't true, and let it continue if it is (set true by client/Command). Then you can set your buttons to execute the command in client/Command() and call the verb using src.verbname(params). If you catch my drift. The extra work will be there, but it's not a complete recode. =) |
Ah, good thinking.
I'm definitely a proponent of the "The client is in the hands of the enemy" approach, and developed most of my commands to not be so influential in the game that simply activating them will give somebody an advantage. But double checking and adding more security never hurts! |
My view is, the client is a monster looking to destroy your game using whatever means possible. I intend to rid them of every opportunity.
|
You know, we try to be kind to our players, but that's a good view to hold nonetheless.
Even as far back as when I used to run bulletin board systems - out of my Commodore 64 yet - there existed people who would exploit every single inch you gave them. The same goes for online games. Give them an inch, they'll take it. Many of them even hold the philosophy (some more self-servingly than others) that it's not cheating if it's possible. There's only so much security to deal with when you've an already developed platform. That's one of my major attractions to BYOND. However, it's good to know we've community members such as you looking on how to plug up the remaining holes. |
I think XKCD said it best: "When designing an interface, imagine that your program is all that stands between the user and hot, sweaty, tangled-bedsheets-fingertips-digging-into-the-back sex."
With that in mind, I intend to make sure the user is getting about as much sex as I am... *cries* |
*laugh* I like that.
All I can say in response is that sex is all well and good, but a good game leaves significantly less regrets in the morning. ;) |
Either way, sounds good so far. I'll try it when it's done!