Alright, so I was hoping I’d be able to put all of this together fairly quickly, but things aren’t coming together quite as quickly as I had hoped. Of late I have been more or less reworking TwilightMMORL from the ground up. I spent a good 2 or 3 days entirely reorganizing the code, then I spend another little while reworking the way item drops work, and now I’m launching into a much bigger reworking of the world…
Posts Tagged ‘twilight’
A rather long time ago, I took a brief experimental stab at adding some diversity to the class system, with prestige classes. Each prestige class had a special attack associated with it. I decided I didn’t like that, so I revamped things so there’s no longer any such thing as a “prestige class”. Instead, when you use a rune or other magical artifact, it trains you in a particular spell. The spells may be a tad overpowered, but I’ll have to test more to see for sure.
So, I have absolutely no clue what I’ve done since the last time I posted. I’m pretty sure there was other stuff that I did that I didn’t write about, but it’s been too long for me to remember what it is.
Anyways, what I did today was to rename the “Skill Chart” option of the Help menu (hit ? in game) to “Affinity Chart” because that more accurately describes what it is. That also paved the way for me to add a “Skill List” option. Previously, since the introduction of skills, you could go to trainers, purchase skill training, and then use the skills. But the only method of figuring out which skills you had was to hit @ and look at your character sheet, but this gave no information on what your skills actually DO. The Skill List now enables you to browse through and both see what your existing skills do, and also plan for the future.
Quite awhile ago it was brought to my attention that Vista users were having issues connecting via SSH. I’m not going to editorialize on why I think that may have happened, but the gist of things is that the (somewhat large) SSH Key-Exchange-Init message was being fragmented into multiple packets, which my code didn’t anticipate. I implemented what I believe is a fix for this several weeks ago, but I don’t have a machine I can test with. If people could let me know one way or the other it’d be appreciated.
My Memory is Gone
Looking back over my previous posts and skimming them, I’m discovering that I have forgotten much of what I did during my last stint of development. I’m going to have to play the game for awhile and reread my old posts to figure out what the current state of the game is. There are good odds that whatever it was I was planning on implementing but didn’t get around to before I got busy with Real Life will get implemented sometime soon. I know that I’m currently in the midst of thinking through/coding out the capability to have extensive flavor texts as you play the game. For instance, you step into an area, and a message pops up describing the surrounding area in detail, or perhaps giving some backstory of what’s happening to Aezora. That being said, looking back over a few comments I made in this post, I may have already done some work on that that I have forgotten about.
Anyways, thanks for stopping by, and I’m looking forward to doing more work on the game now that I’m back into the dev mood.
It would seem superfluous to have two posts on the same day, but in addition to everything I talked about earlier, in the last few hours I’ve also added a screen that lists major areas of interest in the world. You can get to it by hitting ? and then d. Right now the list is fairly brief, it’ll grow as I add more quests.
I got really really bored yesterday and today, so I finally sat down and figured out how I wanted to incorporate more interactivity into warrior combat. And after I did that, I coded it all up. So now you can talk to a Master Swordsman in the very first town you spawn in, and if you hand him enough money he’ll teach you various skills that you can use in combat. You use skills in a way that’s sort of similar to World of Warcraft. You’ve got 4 skill slots that you can fill with skills, and then you select your active skill with a hotkey. The next time you attack, that skill gets triggered and has its effect, then it has a “recharge” span of time. While it’s recharging you can hit one of your other skill hotkeys to change your active skill.
Right now there aren’t all that many skills (9 different skills with 5 tiers of each), but I want to get a basis for how valuable/powerful skills should be before I get all crazy-creative. They do make combat more interesting, for sure, and it gives you a couple of different ways to play the game. If you’re really hardcore then you manage your movement, and your active skills. This takes a lot of concentration and precision, so it’s kinda tough to do. If you’re not that hardcore you can just turn auto-attack on and only manage your skills. I anticipate that this is how most people will play the game, and it’s a lot more approachable. I suppose you could also just set your active skill before battle and then only control your movement, but that doesn’t seem either as fun or as effective as either of the other two approaches.
One really important thing that I want to stress is that for awhile now, you’ve had the ability to edit and change your keybinds. I don’t think this is advertised well enough in-game, but it’s really helpful to be able to put your hotkeys where you like them, especially for skills. I really hate where the scroll hotkeys are, since so many terminal emulators don’t handle the F-keys very well. Unfortunately it’s hard to come up with a dozen sensible hotkeys elsewhere on the keyboard. Perhaps a 3 key system (prev, next, activate) would work, but I’m not sure.
On the note of stuff in the game that isn’t advertised, I’m really feeling like I need to put everything I know about the game down in some sort of comprehensive wiki, cuz I feel a lot like many of the features in the game aren’t easily-accessible. For example, the PvE, PvP, and “campaign” dungeons probably don’t get much traffic, just because people don’t stumble across them enough.
In addition to the skill stuff, I noticed that some class/prestigeclass combinations didn’t make sense, such as a warrior who’s a firemage. That’s just silly. So I went back and restricted certain prestigeclasses to certain base classes. Right now the only prestige class that everyone can be is Summoner.
So, as promised, I’ve sorted out the bugs in the new code, and have committed it to the public server. I’m not sure it’s quite dynamic enough yet, I may need to up the number of roving bands of nomads and the races that can be nomadic and that stuff. The static groups that stay where they’re spawned are pretty cool though, even if not always placed the best. One of the really neat things about this new feature, from the code side, is that I went through the trouble it took to get the groups to be dynamically managed. That means, when no player is within reasonable distance of them, all the monsters belonging to them get slain, and then they get spawned in when players get close. So I can have pretty much as many groups as I want, and they aren’t a resource drain, cuz they only exist when they’re actually doing interesting stuff. It’s tempting to try re-structuring the old-style (hand-created) monster groups into being dynamically managed too, but I don’t think it’s important enough to devote the time to right now.
As a small bonus on top of this, I also added a little feature by adding the concept of racial foes to the race definitions. It doesn’t really change much in the game, but if AIs see each other and are “foe” races (an angel and a demon, for instance), they will fight each other, even though they’re both “monsters.” About the only time you’ll ever see this is if a couple migrating groups of monsters that are foes happen to cross paths, but if a player happens to see it, they should appreciate it I think.
It should surprise no-one that I’ve been extremely busy with work and school lately, but nevertheless, I have not forgotten about Twilight. I was daydreaming at work during a slow day, and for some reason Left 4 Dead and Twilight crossed my mind at about the same time. I’ve never played L4D, but I’ve heard/read something to the effect that the designers wanted the game to function as a sort of director, in an action movie, where the players are the stars, or some such. Once that occurred to me, some old comments that some #rgrd-ian had made bubbled back into my memory. That particular individual was waxing eloquent about wanting full dynamic ecosystems in their roguelike, or something like that.
To my mind, that’s just silly. Go play DF. However, it did occur to me that I could have an AI analyze the game world, pick out particularly suitable locations for inhabitations of particular race types (based on what sort of terrain those races like), and automagically spawn a group of monsters there. It could even have these groups of monsters migrate from one suitable location to another. So I wrote an AI that does exactly that. It’s not quite as polished and fancy as I originally envisioned, but it certainly adds to the randomness of encounters with monsters (in race, level, and location). As an outgrowth of this, I don’t have to spend all my time adding meaningless monster groups to the map. I can just make the map, add the meaningful (for story purposes or atmosphere or whatever) monster groups, and let the AI worry about the rest.
I haven’t updated the public TwilightMMORL server yet, both because I’m having some issues with my host, and also because I’m not 100% convinced the code is stable yet. However, at some point in the not-very-distant future, it will be updated, and I think things will become a lot more dynamic and interesting all around.
I still exist! School and other projects have kept me busy, but I do still think about twilight from time to time. Today I was surprised to find someone else online at the same time as I was, when I went in to putz around a bit. The result of that was that I finally put the modicum of effort it required into improving the chat screen. It handles really long messages now, it has timestamps, and is all around better. Doesn’t sound like much I suppose, but it’s certainly an improvement.
I also (in days long past) implemented the handicapping feature I mused about previously. It works best when you’re dealing with stuff within 50% of your level, because of the way damage scales. You take proportionally more damage according to your handicap, which means if you severely handicap yourself, you can start taking 60+ damage, which takes you through the warning levels rather quickly. Should make it easier to play with friends though, and also to replay instances.
Thoughts for the Future
Remain mostly the same as last time. More/better magic, and maybe some stuff similar to how Powers work in D&D 4th edition, to make combat less button-mashy.
So yesterday Gaeel took it upon himself to drop into #twilightmmorl on QuakeNet and mention a few improvements to me. Specifically, he asked for configurable key bindings (because he uses an azerty keyboard), and an AI that fans out to attack rather than stacking up in a huge line. So I thought these were both great ideas, and implemented them.
The keybinding thing is something I’d thought about several times before and just didn’t care enough at the time to do, but I figured that since I had nothing better to do, I’d add it. It took a small amount of work, but now you can rebind most of the game commands. Unfortunately, you can’t use every key. Special keys like the arrow keys or function keys, etc, have multi-byte keycodes, so they’re not well-suited for being bound to, the way I’m currently doing things. I don’t see that as a large problem though.
As far as tweaking the AI goes, I just made it do something similar to when they AI finds a world feature in the way: it just picks a random direction to move in. This only kicks in for monsters with xlvl >= 30, but it’s a good idea, and makes the AI look a small amount less stupid. On the other hand, it makes the later-game fights a bit more challenging for the sloppy, but I don’t think it skews things too badly.
Thoughts for the Future
Ideas for the future include (as always) more instance dungeons, and also a way to voluntarily handicap yourself such that your level 60 character can be somewhat challenged by level 20 monsters. This would allow people to play with their fully-leveled characters, but assist their friends who may not have leveled as far. Since teamwork is what makes twilight the most fun, this would have a positive effect I think.
So today I got bored. And, as is usual for when I get bored, stuff got done. I added instance dungeons. Or, one. It’s designed for level 20-ish players, and is located near the Ghost Academy on the right hand side of the upper section of the map. It was surprisingly easy on the code side, and it allowed me to use the SDK for something useful, finally. I tweaked a bunch of stuff in the SDK UI (specifically screen timeouts), and ended up with what I think is a decently fun instance. It’s certainly worth a play or two, and I think after I’ve played it a bit more and heard from others who play it, I’ll be able to do much better on the next one.
A couple days ago I also got around to adding the magic tokens I’ve been talking about for so long. They come in 4 flavors (War, Fire, Ice, Storm) and give you elemental attacks that are triggered in the same way as prestige class abilities. War is more powerful than the rest, but has the smallest range, Storm lies somewhere inbetween, and Fire and Ice are equivalent in range/power.
I also added an xlvl indicator to the player list/AFK screens, so you can tell whether someone else is of a close-enough level to you to be worth meeting up with and possibly cooperating with.
Thoughts for the Future
So with these things out of the way, my to-do list is mostly empty. Adding some level II magicy stuff is an option, with more potency, but directional firing. Adding more instanced dungeons is a definite option, and something that I most certainly should/will do, but it could take some time. Creative juices flow slowly in my mind.
So, of late, my job has taken a great deal of time away from my development, and I’m also running out of steam to work on twilight at all anyways. I really think it’s at a good level of maturity in terms of features, and I’m discovering that I just don’t have the inspiration to make Astral/Hell at a consistently high level of quality.
That said, I still do tinker around a bit. I sat down and just played the game for awhile a couple days ago, and discovered a couple bugs that I wasn’t aware of. In adding the feature whereby hitting p with only a single item on the tile automatically picked it up, I neglected to make shop squares with only a single item on them work correctly. So, I fixed that. I also tweaked the sshd code to make it more general and also added support for DH-14 (previously it would only use DH-1). I also located a bug in the SDK code where it wasn’t storing the unique items that NPCs carry.
While I haven’t done a whole lot of dev work lately, I have been kicking around ideas. Having static instanced dungeons scattered around the map is something I’ve thought about for awhile now, and I think I even started implementing it once and discovered there were problems with it, but I’m not sure . These sorts of dungeons would be much less work-intensive than trying to build sections of the overworld, so I’m probably going to end up trying it again sometime soon (I get off work and back to school in july). That’s about the only new-feature idea I’ve got at the moment though.