• Dear Guest,

    You're browsing our forum as a Guest meaning you can only see a portion of the forum in read-only mode.
    To view all forum nodes and be able to create threads/posts please register or log-in with your existing account.

    TwinStar team

Two technical questions about the development

nimeralos

Authorized
Joined
Aug 26, 2014
Location
Moscow
Happy New Year once again,

Following the forum branch name, I'll start with kind of suggestion. Don't you have (I believe you don't) or don't you want to (search for and) recruit a... Database Master? You know, a guy who may be not a programmer, but who'd do that... manual (and boring maybe), but necessary job with the spawnpoints, waypoints, timers, mobs HP & damage etc..? After all, developers don't work as testers - then why should they work on things that doesn't require programming skills? Differentiation of labour, you know :) I'm sure that a Database Master is much easier to find than a true Developer.

Also I'd like to ask: how many hours \coded it usually takes to script an escort quest? An epic quest chain (like my favorite Darrowshire one)? To script a dungeon boss from a scratch? A raid boss?

The last question caused not only by curiosity. Some time ago a guy on ED told me that Feenix is good for him because they already have Naxx (almost) scripted. He said that it'd take years to script Naxx. I believe that only lazy Feenix devs may script a single raid for years, but it'd be good to know your professional estimate on such a things.

The questions are mostly addressed to the Kronos team members, but everyone is free to discuss of course :)
 
I'm really intrested as well. I'm a sw engineer and know scripting, but I have no idea about the depth of a quest or a boss.
 
To OP:
Most spawns and hp etc is already working and there are just some parts that need adjustment. All devs are able to perform database changes. I don't think Chero would get someone into the team just for that. Its simply not necessary.
Regular quests can be a matter of minutes or hours where more elaborate quests with event can take several hours or even days (unlikely).
Darrowshire event is almost done and only need some refinement on spawn frequency and maybe damage or something, w/e. Its pretty minor.

To the feenix statement about naxx... well they didnt really bother to script bosses properly. Not sure how it is now, but at first they just took wotlk naxx scripts and backported them (changed spells etc). Thats good and all, but the wotlk scripts are usually a slight bit easier then the real vanilla ones. Less spawns of waves and what not. Besides, the feenix trash spawns and abilities are just totally wrong and in no way close to retail. Make progessing alot easier and faster.
Kronos has a Naxx in a playable state. There is work to be done, but it surely wont take, as your friend said, year to deal with that :)

To Saz:
Boss scripts are usually just a few lines/pages of code. And those are not really complicated. There are exceptions to the rule of course. Ragnaros for example has a totally different way of handling aggro thus his script is, in a way, more complicated then others.
Quest are mostly small. Event Quest on the other hand, especially ones with long events can have quite alot code related to them. Alliance Ony pre event in SW for example is pretty damn long with its countless dialogues and NPCs walking arround.
 
Most spawns and hp etc is already working and there are just some parts that need adjustment. All devs are able to perform database changes. I don't think Chero would get someone into the team just for that. Its simply not necessary.
If it really isn't taking a lot of a developer's time, than ok :)

Thanks for the detailed answer. You've got some clues from a developer, not just invented it all yourself? ;)
I looked at Mangos boss scripts and indeed I found nothing complicated enough to work for years. Mangos scripts are very imperfect, of course, but.

So, if Chero won't play with screwdrivers too much, we can hope all raids will be scripted here long before the end of the days x)
 
I found a collection of mc, bwl and other bosses' scripts and it seemed really simple, of course it requires the framework to be implemented correctly (such as selecting random target for a spell). So for an experienced developer even fixing a boss shouldn't take too long.
 
I agree with Lharts. Yes it shouldn't take too long.

About the database, there are even utilities for people who don't really know their way around SQL. There are also similar utilities for game masters. Makes your life easy.
So the only thing really required is the scripting knowledge, time and dedication :whistling:
 
I found a collection of mc, bwl and other bosses' scripts and it seemed really simple, of course it requires the framework to be implemented correctly (such as selecting random target for a spell). So for an experienced developer even fixing a boss shouldn't take too long.

I'd love to take a look at such scripts, I'm curious if I would understand the code.

Anyone know where you can find that stuff?
 
Well....its no so hard make the scipt...hard is to make it right.And Naxx is hard to make it right...(no year but still).Just need more time if your core suck :biggrin:
 
Alright,

once we got all data needed, any script (boss/quest/spell) can be done within few hours. On the other hand you need much more time for intensive testing. Scripts of Molten Core posted by Szabinger are way too ugly, for example we have C++ scripts only for Majordomo, Ragnaros, Shazzrah, Sulfuron and an instance handler. So while we have 5 *.cpp files, the repository posted above got more than 10. Rest of the AI is handed by database scripts.

The biggest issue in the whole WoW development is gathering the required resources. Then testing, and then coding :)

Some parts of the server development requires far more knowledge than an average private server developer has, for example navmesh, networking, multi-threading. Simple boss/quest scripting is nothing compared to the things mentioned.

As nimeralos said, nothing is too complicated related to boss scripting. The main "problem" is behind the scenes: first you have to have a main "API" you will use for every boss as it's "core". That interface has to be bug free as much as possible, and also it has to be generic - applicable for any boss/creature.

Recently, our fellow developer Esso implemented a system to our core called "SpellScripts". This interface allows us to scripts every spell on it's own, not affecting any other spells. Simillar system is in TrinityCore, that's where we got inspiration from. However, a default MaNGOS server does not have such system, and every spell "script" has to be put in the core and that can causes serious conflicts sometimes. This system improves stability and overall performance, because once the spell is executed, the spell contains a pointer directly to its script. On default MaNGOS, spell is checking every exception all the time, even those not related to that exact spell (because the spell does not know if that exception should apply to it) Dunno if I sound understandably, but idk :p

What you might don't know, many developers are trying to fix stuff ASAP, however most of the time it's done by workarounds - not a proper fix, but working. Once you stack too many workarounds, the core might become slower and less "crash immune", due to many exceptions that has to be checked all the time. We believe Blizzard used a way more generic system, so we aim to cover as much spells as we can with the shortest code possible with none or almost-none exceptions. It takes slightly more time, but it allows us to cover more players at once :p

SpellScript of Druid's Swiftmend: http://paste2.org/wm86tKhH This is what MaNGOS can't do :)

TL;DR: Just skip :)
 
Last edited:
I've been considering to send an application, but those memory pointers... I'm java programer and looking at this code... it would take me months till I'll be able to do something :biggrin:

Edit: I've been looking at Lucifron AI posted above.. You can clearly see, that in that AI script, there are things that should be general (like moving to the line of sight) and so should not be in boss script.
I'm now curious, how Kronos AI looks now... But, sadly, I will never know :sad:
 
Last edited:
Edit: I've been looking at Lucifron AI posted above.. You can clearly see, that in that AI script, there are things that should be general (like moving to the line of sight) and so should not be in boss script.
I'm now curious, how Kronos AI looks now... But, sadly, I will never know :sad:

Just for comparison, I release script for Shazzrah (one of the easiest boss to script)

Kronos: http://paste2.org/wpb0Pc7x
Szabinger's Link: http://paste2.org/b6YIUZzf

Enjoy :)
 
Last edited:
those memory pointers... I'm java programer and looking at this code... it would take me months till I'll be able to do something :biggrin:

Actually, I don't think so. Pointers are not that hard and for some sick people (like me) are really fun to "play" with. And once you understand the basic principle and syntax (matter of minutes) there is really not much work you have to do to be able to effectively use them. And you have totally clear and nice control over the memory, which is nice.

Aside from Kronos and WoW in general(you don't need it that much in this case), I think you (and everybody who calls themselves a programmer) should learn how to work with manual memory allocation and pointers :)


ps. Void pointers are the best! Woooo!


And to the topic:
Also I'd like to ask: how many hours \coded it usually takes to script (...) raid boss?
I don't have much experience and (WoW-related)never scripted anything else than raid boss, but still, this question is really hard to answer. You can script whole boss from scratch within an hour, but you can also spend a week doing so. And as Chero said, testing is major part of that time and if you're not dumb and lazy, "fine-tuning" too, so that the code isn't just a load of terrible workarounds.
I usually spent most of the time searching stuff, then testing, then finding some odd case which breaks the mechanic and re-working:laugh:
If you still want more specific number, I think 3 days/boss is a reasonable average estimate if you're looking at the bigger picture.
 
Last edited:
first you have to have a main "API" you will use for every boss as it's "core". That interface has to be bug free as much as possible, and also it has to be generic - applicable for any boss/creature.

This is what programming is all about. Have a solid, well thought out foundation (API) on which you can build your stuff.

Also, DoResetThreat(); Fuck that :D
 
Last edited:
It's been over 7 years since I took Java courses, even for those who have little or no prior experience of coding I'd say that this is pretty interesting to watch. Thank you for sharing :smile:
 
Yea my java lessons are finally paying off.
It is very interesting to look at these codes, it remembers how debugging code drove me crazy.

I'm very pleased to see how clean the Kronos code is, I know for certain now Chero really knows what he's doing.

:clap::clap::clap::clap:
 
once we got all data needed, any script (boss/quest/spell) can be done within few hours. On the other hand you need much more time for intensive testing.
[...]
nothing is too complicated related to boss scripting. The main "problem" is behind the scenes: first you have to have a main "API" you will use for every boss as it's "core". That interface has to be bug free as much as possible, and also it has to be generic - applicable for any boss/creature.
Good to know that Kronos APIs are advanced and advancing! It means that "additional" job that will be required after Kronos launch surely won't significantly slow down the server progression.

Dunno if I sound understandably, but idk :p
[...]
SpellScript of Druid's Swiftmend: http://paste2.org/wm86tKhH This is what MaNGOS can't do :)
[...]
TL;DR: Just skip :)
Enjoyed reading it all actually:blushing:

Just for comparison, I release script for Shazzrah (one of the easiest boss to script)

Kronos: http://paste2.org/wpb0Pc7x
Szabinger's Link: http://paste2.org/b6YIUZzf

Enjoy :)
1.5 times shorter and hell knows how many times more efficiently and stable. Such a great job!
I think such a things should be posted in some promo-post, to build more hype by demonstrating Kronos technical perfection. Seriously, many players would understand that Kronos perspectives are very bright. Would feel a deep professionalism that is behind the project. Etc - consider it as new little suggestion :)

Salute, MHOTY!
 
I think it fits the technical questions topic: Is there any way (server side, or client side commands) to increase the view distance above the default max, and is there a way to increase the distance from which I can see other players, creatures and so on?
I'm asking because current PC's are obviously way more powerful than they were 10 years ago, and more than capable of handling more stuff to display.
 
Yes, it's possible to change (only server side)

And would you guys be open to such suggestion? I mean it would cause more load on the server obviously, so I'm not sure how would it affect server stability.
 
On crowded realms players sometimes appeared out of nowhere 20y away from you.
Which leads me to believe its mostly limited because of the server and not the client.
 
Top Bottom