Jump to content

twostars

Administrators
  • Content count

    997
  • Joined

  • Last visited

  • Days Won

    27

Reputation Activity

  1. Like
    twostars got a reaction from Sierra in Eden&HANGOVER vs Elior&YouGotPwndByMyAssJewishDariusKairi REWARD: 15K KC   
    I'm all for friendly banter, but this is taking it way too far.
    Invading people's privacy and abusing their family members is so far over the line that I never thought this would be something I'd ever have to deal with in a private server environment.
    Enjoy your ban. Hopefully by the time it eventually expires you'll have had some personal reflection and, hopefully, will consider - at the very least - apologising to them.
    Really. It's just a game, guys. Chill the hell out.
  2. Confused
    twostars got a reaction from BulletClub in Patch notes (10/11/2017)   
    Changelog
    Mage 75 armor skills now only proc on player hits. Fixed a timing bug with warps; it is no longer possible to bug your character if you happened to be warping extremely fast (note that due to its nature, this was an extremely rare occurrence). Fixed a bug with loading; when warping during loading, it could stop the client from loading and disconnect. This has been fixed. Entering Delos during its registration period with scrolls active will no longer fail them. Note that they were never actually removed (entering another zone restored them). Elections are now automatically stopped when there's no remaining candidates after a candidate Nation Transfers or deletes their character. Added the [Character Deletion] NPC to Moradon, next to both inn hostesses. You can use this NPC to delete any of your other characters.
    See here for more information. Added [Tattoo Artist] Kat to Moradon. You can purchase Solar Tattoos from her for 1bil coins. These tattoos last 7 days. Options editor: The version is now saved correctly. Added the "Blur (post-processing)" option for the in-game "Blur" setting. Added a warning when using "Blur (post-processing)" with "Anti-aliasing (FSAA)" options. This can cause major rendering bugs (particularly for nVidia users). Note: nVidia users still have the option of enabling antialiasing via their nVidia control panel (Manage 3D Settings -> Program settings). Using this with the "Blur (post-processing)" feature renders correctly. Website: Added support for tattoo slots and filled out magic bag slots. Updated all item icons. Fixed the website's timezone so things like "last seen <time>" are now accurate. Previously they were 5 hours off (so "last seen 5 hours, 5 minutes" instead of just "5 minutes"). Also updated the server's timezone listed on the website.
  3. Confused
    twostars got a reaction from BulletClub in Patch notes (10/11/2017)   
    Changelog
    Mage 75 armor skills now only proc on player hits. Fixed a timing bug with warps; it is no longer possible to bug your character if you happened to be warping extremely fast (note that due to its nature, this was an extremely rare occurrence). Fixed a bug with loading; when warping during loading, it could stop the client from loading and disconnect. This has been fixed. Entering Delos during its registration period with scrolls active will no longer fail them. Note that they were never actually removed (entering another zone restored them). Elections are now automatically stopped when there's no remaining candidates after a candidate Nation Transfers or deletes their character. Added the [Character Deletion] NPC to Moradon, next to both inn hostesses. You can use this NPC to delete any of your other characters.
    See here for more information. Added [Tattoo Artist] Kat to Moradon. You can purchase Solar Tattoos from her for 1bil coins. These tattoos last 7 days. Options editor: The version is now saved correctly. Added the "Blur (post-processing)" option for the in-game "Blur" setting. Added a warning when using "Blur (post-processing)" with "Anti-aliasing (FSAA)" options. This can cause major rendering bugs (particularly for nVidia users). Note: nVidia users still have the option of enabling antialiasing via their nVidia control panel (Manage 3D Settings -> Program settings). Using this with the "Blur (post-processing)" feature renders correctly. Website: Added support for tattoo slots and filled out magic bag slots. Updated all item icons. Fixed the website's timezone so things like "last seen <time>" are now accurate. Previously they were 5 hours off (so "last seen 5 hours, 5 minutes" instead of just "5 minutes"). Also updated the server's timezone listed on the website.
  4. Confused
    twostars got a reaction from BulletClub in Patch notes (10/11/2017)   
    Changelog
    Mage 75 armor skills now only proc on player hits. Fixed a timing bug with warps; it is no longer possible to bug your character if you happened to be warping extremely fast (note that due to its nature, this was an extremely rare occurrence). Fixed a bug with loading; when warping during loading, it could stop the client from loading and disconnect. This has been fixed. Entering Delos during its registration period with scrolls active will no longer fail them. Note that they were never actually removed (entering another zone restored them). Elections are now automatically stopped when there's no remaining candidates after a candidate Nation Transfers or deletes their character. Added the [Character Deletion] NPC to Moradon, next to both inn hostesses. You can use this NPC to delete any of your other characters.
    See here for more information. Added [Tattoo Artist] Kat to Moradon. You can purchase Solar Tattoos from her for 1bil coins. These tattoos last 7 days. Options editor: The version is now saved correctly. Added the "Blur (post-processing)" option for the in-game "Blur" setting. Added a warning when using "Blur (post-processing)" with "Anti-aliasing (FSAA)" options. This can cause major rendering bugs (particularly for nVidia users). Note: nVidia users still have the option of enabling antialiasing via their nVidia control panel (Manage 3D Settings -> Program settings). Using this with the "Blur (post-processing)" feature renders correctly. Website: Added support for tattoo slots and filled out magic bag slots. Updated all item icons. Fixed the website's timezone so things like "last seen <time>" are now accurate. Previously they were 5 hours off (so "last seen 5 hours, 5 minutes" instead of just "5 minutes"). Also updated the server's timezone listed on the website.
  5. Thanks
    twostars got a reaction from IIIAmJohnWick in Major gameplay optimisations... and general status updates   
    Hey guys,
    Since the last status update we've been pretty busy!
    We've updated the client to be on par with USKO 2.171, we've rewritten the King system, we've added Castellan Capes and the Castellan Dungeon, we've fixed a plethora of general bugs (present in the official client and otherwise), implemented Darkness item proc/effect behaviour (most notably the Dark Knight Mace, which behaves uniquely in that it allows players to heal enemies to deal damage), improved speedhack detection, and much, much more.
    Firstly though, our Halloween event!
    As of today's patch, the Halloween event will be over. It's definitely been a fun week. For the most part, I'd say the Halloween event went pretty well. The start was rocky as there was a ton of new behaviour that was implemented for this event (Darkness weapon procs/effects, new exchange behaviour, etc), as well as some issues with our updated speedhack detection, but we worked through it pretty quickly.
    Darkness weapons were a bit of a game-changer with PvP, but for merely a week of use (give or take some minor carry-over after the event), it definitely mixed things up a bit. Things should go back to normal soon, as these event items expire.
    The Halloween event also, however, made a fundamental problem with Knight Online's behaviour very clear. With the increased spawns in and around the CZ bowl, players with lower-end PCs / connections were struggling with warping (e.g. Descent and other teleports, like mage Blinks).
    Which is where our major gameplay optimisations come in.
    Knight Online has many problems. It's not the most efficient game, by far. Stuttering and lag is just expected of it at this point, unless your PC is reasonably high-end and you have a very good connection to the server (i.e. low ping).
    This isn't really true for a lot of people who play the game though. Especially with private servers, having a decent ping to the server can be very hit or miss.
    So when the server isn't at all efficient about its communications with the player (which it isn't!), it can result in sending a considerable amount more data to the client and forcing it to perform a lot of unnecessary work, which results in stutters and lag while the client slowly processes its requests.
    This week, such an issue was highlighted pretty clearly. With the increased spawns in and around the CZ bowl, players were finding increased stutter and lag -- particularly when using warps like Descent.
    The reason for this is actually pretty silly, but I need to explain how things work first to properly understand it.
    In Knight Online, maps are divided up into regions. Something like:

    Players can only see the contents of adjacent regions, like so:

    In the above, player A can only see player B, player C, player D, and player E because they can see regions (1,1), (1,2), (1,3), (2,1), (2,2), (2,3), (3,1), (3,2), and (3,3).
    They cannot see our perfectly accurate depiction of a worm over in region (4,4), because it is not in an adjacent region.
    So when player A crosses into region (3,3)...:

    As you can see, they can no longer see player B, player C or player D. We can still see player E in (2,3), and we can also now see the worm over in (4,4).
    This should all be pretty straightforward.
    Realistically, you'd expect it to despawn players/NPCs/monsters from the regions we can no longer see (those greyed out in the above image), and insert those in the regions we can now see (the darker yellow regions in the above image).
    That is, simply make the minor changes to what we know. The problem with its official behaviour is that it doesn't do this at all.
    Instead, it officially despawns everything and re-requests everything in its adjacent regions.
    Obviously this is extremely inefficient. In the example above, we already knew where player E was. Unfortunately, because everything was reloaded, it had to remove them and we had to be made aware of them... again. In addition to the worm which we previously couldn't see.
    This behaviour is pretty bad, but it's worse still for warps and respawning. Both of these not only fully reload when you move to an adjacent region, but every single time. For example: if you Descent to someone right next to you (for the purposes of this example, in the same region), it will still request a full reload of all players (+ merchant stalls), NPCs and monsters for all adjacent regions.
    Every single time.
    So, we were able to optimise this pretty heavily. We now specifically tell the client only what it needs to know.
    For adjacent region changes, that means who we no longer can see, and who we can now see. In the example above, this means telling player A that we can no longer see player B, player C or player D, i.e. all players/monsters/NPCs from regions (1,1), (1,2), (1,3), (2,1), (3,1). We also tell player A that we can now see worm over in (4,4).
    Anyone else still in our adjacent regions, for example, player E over in (2,3) remains unchanged. We have no need to update them whatsoever, so they no longer get despawned.
    For same region changes (e.g. warps), this means we no longer tell it anything -- because it just doesn't need to know. Player A can already see everyone in the region they were at and adjacent regions. They didn't change regions; there's no reason to look for anyone new.
    Sadly, requesting all data is entirely official behaviour. This was never purely a problem with ApexKO, or purely the server -- to fix it, we even had to patch the client to let us make these changes.
    But why are they so major? This all seems pretty trivial.
    It's so major because it's a ton of data the client was always processing, to the point where it having to unload and reload spawns (particularly when there's a lot of them!) causes very noticeable lag/stutter. Again, this is particularly evident with warps like Descent and mage's Blink, especially in highly populated areas (e.g. CZ bowl, especially with our pumpkins from the Halloween event!), but also of course when it's forced to do so from simply moving into another region.
    This also inadvertently fixes some other things.
    For example, since things aren't being fully reloaded on same-region or adjacent-region warps, or when they move into adjacent regions, nor finally when players are resurrected, loot boxes will also no longer despawn in these cases.
    Since loot boxes aren't actually game objects, and only exist when you're nearby to see it drop, full reloads previously removed them. But since there's no reason to reload, they're not actually removed anymore, so you can still see and loot them.
    I'm sure there's other behaviour related to this which it will clean up, but for now this will have to do.
    These optimisations should greatly improve gameplay from what you'd expect from even an official server like USKO. Completely removing that lag/stutter from most typical behaviour should be very noticeable and make the game that much smoother.
    Thanks again to those who reported the stutter with Descent. These reports are what allowed for some pretty nice improvements to overall game behaviour!
    How's the client source project going?
    Truthfully, with all the work on ApexKO in regards to its Halloween event and stream of bug fixes for surrounding patches, I haven't been as busy with it as I'd like. That should change though as things begin to stabilise again.
    Changes we've made since the last status update include:
    Cleaning up mouse input behaviour, to behave consistently and cleanly (this also deals with UI focus issues, so you can now, for example, click the chat UI/scrollbar and use the mousewheel to scroll the chat bar, or click back out into the game and return mousewheel behaviour to zoom in/out pretty seamlessly). Implementing UI clickthrough behaviour, for things like the chat bar. Cleaned up UI event behaviour for consistency. There was often cases where this inconsistent behaviour lead to various bugs. Finished implementing all of the King system. Implemented the friends list. Reimplemented chat behaviour. Implemented PMs. Implemented the chat bar buttons. Implemented chat filters. Item names are used consistently/correctly where needed. There were often cases officially, typically in messages in the info box where the wrong item name is used (specifically the name of the item's base), rather than the item's actual name. Updated the trade UI to behave as per 1.298 (with the confirmations, etc). Updated the vendor UI to behave as per 1.298 (with the confirmations, etc). Updated loading behaviour to more closely match official (where the load % is tracked, rather than updated at intervals). Implemented support for stealth / visibility (e.g. Lupine) skills. Fixes alpha blending issues with text and models (these existed in the official 1.298 client, but were fixed in later official versions). Clan symbols on capes now only show if the clan is allowed to use them. Purchase prices are now correctly coloured by price (as with newer clients). Fixed various UI input bug issues. Fixed double-click logic to behave on a per-control level, rather than per-click (i.e. making 2 clicks on 2 different things shouldn't trigger a double-click on the 2nd, e.g. with lists -- clicking one list entry then another rapidly shouldn't fire a double click event). Updates login screen error behaviour to behave as per 1.298. Fixes some issues with rivers / ponds not rendering. ... and more.
    In regards to major updates that are left, we still need to implement transformation support (and hence siege weapons), the rental system (although less important), Power-Up Store/in-game browser, quest tracking, etc.
    Hopefully when things are more stable with ApexKO, I can start to knock some more of those major features off the list and push it ever closer to a more complete state.
    What's next?
    Honestly, we still have a lot of our previously mentioned future goals from our last update left. Most likely the next thing we tackle will be implementing UTC, but we'll see what happens. With that game feature (finally!!) in, a lot of our secondary priorities can be looked at (in addition to getting more work done with the client source where possible!).
    Until next time.
     
  6. Thanks
    twostars got a reaction from IIIAmJohnWick in Patch notes (03/11/2017)   
    Changelog
    The Halloween event is now over. All Darkness weapons have been removed, as has the exchange. The EXP seal button no longer crashes the client when pressed. Fixed a bug with Castle Siege War scheduling, which caused it to be scheduled twice consecutively during the daylight savings time change. The server will no longer break on daylight savings time changes. Implemented several major unofficial optimisations to drastically reduce in-game delays: Movement to adjacent regions will no longer fully reload all players, merchant stalls, NPCs and monsters. Instead, we only remove what's no longer visible and only show what's now visible. Warping (/town, mage Blink, Descent, teleport skills in general, etc.) and respawning is now optimised such that: When warping to the same region, no changes will be made (previously, in all cases, all players, merchant stalls, NPCs and monsters would be reloaded). When warping to an adjacent region, as with movement, we only remove what's no longer visible and only show what's now visible. Only when warping to a non-adjacent region (e.g. when /town'ing from far away) will a full reload of all players, merchant stalls, NPCs and monsters be used. Fixed a bug that caused players to warp back (to where they warped) immediately after warping while moving (e.g. with the mage Blink skill). Fixed a bug with name changes: players are now correctly removed and updated in the player list.
  7. Thanks
    twostars got a reaction from IIIAmJohnWick in Major gameplay optimisations... and general status updates   
    Hey guys,
    Since the last status update we've been pretty busy!
    We've updated the client to be on par with USKO 2.171, we've rewritten the King system, we've added Castellan Capes and the Castellan Dungeon, we've fixed a plethora of general bugs (present in the official client and otherwise), implemented Darkness item proc/effect behaviour (most notably the Dark Knight Mace, which behaves uniquely in that it allows players to heal enemies to deal damage), improved speedhack detection, and much, much more.
    Firstly though, our Halloween event!
    As of today's patch, the Halloween event will be over. It's definitely been a fun week. For the most part, I'd say the Halloween event went pretty well. The start was rocky as there was a ton of new behaviour that was implemented for this event (Darkness weapon procs/effects, new exchange behaviour, etc), as well as some issues with our updated speedhack detection, but we worked through it pretty quickly.
    Darkness weapons were a bit of a game-changer with PvP, but for merely a week of use (give or take some minor carry-over after the event), it definitely mixed things up a bit. Things should go back to normal soon, as these event items expire.
    The Halloween event also, however, made a fundamental problem with Knight Online's behaviour very clear. With the increased spawns in and around the CZ bowl, players with lower-end PCs / connections were struggling with warping (e.g. Descent and other teleports, like mage Blinks).
    Which is where our major gameplay optimisations come in.
    Knight Online has many problems. It's not the most efficient game, by far. Stuttering and lag is just expected of it at this point, unless your PC is reasonably high-end and you have a very good connection to the server (i.e. low ping).
    This isn't really true for a lot of people who play the game though. Especially with private servers, having a decent ping to the server can be very hit or miss.
    So when the server isn't at all efficient about its communications with the player (which it isn't!), it can result in sending a considerable amount more data to the client and forcing it to perform a lot of unnecessary work, which results in stutters and lag while the client slowly processes its requests.
    This week, such an issue was highlighted pretty clearly. With the increased spawns in and around the CZ bowl, players were finding increased stutter and lag -- particularly when using warps like Descent.
    The reason for this is actually pretty silly, but I need to explain how things work first to properly understand it.
    In Knight Online, maps are divided up into regions. Something like:

    Players can only see the contents of adjacent regions, like so:

    In the above, player A can only see player B, player C, player D, and player E because they can see regions (1,1), (1,2), (1,3), (2,1), (2,2), (2,3), (3,1), (3,2), and (3,3).
    They cannot see our perfectly accurate depiction of a worm over in region (4,4), because it is not in an adjacent region.
    So when player A crosses into region (3,3)...:

    As you can see, they can no longer see player B, player C or player D. We can still see player E in (2,3), and we can also now see the worm over in (4,4).
    This should all be pretty straightforward.
    Realistically, you'd expect it to despawn players/NPCs/monsters from the regions we can no longer see (those greyed out in the above image), and insert those in the regions we can now see (the darker yellow regions in the above image).
    That is, simply make the minor changes to what we know. The problem with its official behaviour is that it doesn't do this at all.
    Instead, it officially despawns everything and re-requests everything in its adjacent regions.
    Obviously this is extremely inefficient. In the example above, we already knew where player E was. Unfortunately, because everything was reloaded, it had to remove them and we had to be made aware of them... again. In addition to the worm which we previously couldn't see.
    This behaviour is pretty bad, but it's worse still for warps and respawning. Both of these not only fully reload when you move to an adjacent region, but every single time. For example: if you Descent to someone right next to you (for the purposes of this example, in the same region), it will still request a full reload of all players (+ merchant stalls), NPCs and monsters for all adjacent regions.
    Every single time.
    So, we were able to optimise this pretty heavily. We now specifically tell the client only what it needs to know.
    For adjacent region changes, that means who we no longer can see, and who we can now see. In the example above, this means telling player A that we can no longer see player B, player C or player D, i.e. all players/monsters/NPCs from regions (1,1), (1,2), (1,3), (2,1), (3,1). We also tell player A that we can now see worm over in (4,4).
    Anyone else still in our adjacent regions, for example, player E over in (2,3) remains unchanged. We have no need to update them whatsoever, so they no longer get despawned.
    For same region changes (e.g. warps), this means we no longer tell it anything -- because it just doesn't need to know. Player A can already see everyone in the region they were at and adjacent regions. They didn't change regions; there's no reason to look for anyone new.
    Sadly, requesting all data is entirely official behaviour. This was never purely a problem with ApexKO, or purely the server -- to fix it, we even had to patch the client to let us make these changes.
    But why are they so major? This all seems pretty trivial.
    It's so major because it's a ton of data the client was always processing, to the point where it having to unload and reload spawns (particularly when there's a lot of them!) causes very noticeable lag/stutter. Again, this is particularly evident with warps like Descent and mage's Blink, especially in highly populated areas (e.g. CZ bowl, especially with our pumpkins from the Halloween event!), but also of course when it's forced to do so from simply moving into another region.
    This also inadvertently fixes some other things.
    For example, since things aren't being fully reloaded on same-region or adjacent-region warps, or when they move into adjacent regions, nor finally when players are resurrected, loot boxes will also no longer despawn in these cases.
    Since loot boxes aren't actually game objects, and only exist when you're nearby to see it drop, full reloads previously removed them. But since there's no reason to reload, they're not actually removed anymore, so you can still see and loot them.
    I'm sure there's other behaviour related to this which it will clean up, but for now this will have to do.
    These optimisations should greatly improve gameplay from what you'd expect from even an official server like USKO. Completely removing that lag/stutter from most typical behaviour should be very noticeable and make the game that much smoother.
    Thanks again to those who reported the stutter with Descent. These reports are what allowed for some pretty nice improvements to overall game behaviour!
    How's the client source project going?
    Truthfully, with all the work on ApexKO in regards to its Halloween event and stream of bug fixes for surrounding patches, I haven't been as busy with it as I'd like. That should change though as things begin to stabilise again.
    Changes we've made since the last status update include:
    Cleaning up mouse input behaviour, to behave consistently and cleanly (this also deals with UI focus issues, so you can now, for example, click the chat UI/scrollbar and use the mousewheel to scroll the chat bar, or click back out into the game and return mousewheel behaviour to zoom in/out pretty seamlessly). Implementing UI clickthrough behaviour, for things like the chat bar. Cleaned up UI event behaviour for consistency. There was often cases where this inconsistent behaviour lead to various bugs. Finished implementing all of the King system. Implemented the friends list. Reimplemented chat behaviour. Implemented PMs. Implemented the chat bar buttons. Implemented chat filters. Item names are used consistently/correctly where needed. There were often cases officially, typically in messages in the info box where the wrong item name is used (specifically the name of the item's base), rather than the item's actual name. Updated the trade UI to behave as per 1.298 (with the confirmations, etc). Updated the vendor UI to behave as per 1.298 (with the confirmations, etc). Updated loading behaviour to more closely match official (where the load % is tracked, rather than updated at intervals). Implemented support for stealth / visibility (e.g. Lupine) skills. Fixes alpha blending issues with text and models (these existed in the official 1.298 client, but were fixed in later official versions). Clan symbols on capes now only show if the clan is allowed to use them. Purchase prices are now correctly coloured by price (as with newer clients). Fixed various UI input bug issues. Fixed double-click logic to behave on a per-control level, rather than per-click (i.e. making 2 clicks on 2 different things shouldn't trigger a double-click on the 2nd, e.g. with lists -- clicking one list entry then another rapidly shouldn't fire a double click event). Updates login screen error behaviour to behave as per 1.298. Fixes some issues with rivers / ponds not rendering. ... and more.
    In regards to major updates that are left, we still need to implement transformation support (and hence siege weapons), the rental system (although less important), Power-Up Store/in-game browser, quest tracking, etc.
    Hopefully when things are more stable with ApexKO, I can start to knock some more of those major features off the list and push it ever closer to a more complete state.
    What's next?
    Honestly, we still have a lot of our previously mentioned future goals from our last update left. Most likely the next thing we tackle will be implementing UTC, but we'll see what happens. With that game feature (finally!!) in, a lot of our secondary priorities can be looked at (in addition to getting more work done with the client source where possible!).
    Until next time.
     
  8. Like
    twostars got a reaction from BulletClub in Our future client project...   
    This is by far our most exciting -- and promising! -- project, and one that I've been spending every possible moment on lately.
    Why is this project important?
    Firstly, before I get into anything, I should explain why the client source -- and this project -- is important.
    It's essentially useful for 2 things: being able to more easily fix things ourselves, and giving us the option to literally do anything. I can't stress this last part enough. With the server, we have some means of creativity; but anything we could implement has to find a way to have this deal with the client in a suitable manner.
    Having the client source removes this limitation entirely. Our server, our client. We can do whatever we want with it.
    We need a new UI? We can make one and add it in. Imagine the possibilities.
    Regarding fixing things, right now we rely on official updates from mgame; our update process revolves around using their code and adding in our patches (each time) to fix their issues (that they haven't yet fixed themselves).
    Each update we hope that they've actually fixed things that we've yet to fix for them (manually, with assembly, which is a considerably more daunting and time consuming task for us than it is for them with the client source). Changing a single line of code for them, may take us a few hours to do manually via assembly (having to track down where this logic is, etc).
    And now some history...
    If you're not aware, there exists a set of leaked (official) source files for ~1.06x (for the server AND client -- as well as their development tools) from way back in 2002~2003. This was before its first released version, and before anything was actually implemented properly, but it's still a tremendously invaluable resource as a lot of things still are handled similarly -- if not the same -- even now in 2.1xx.
    So way back during server development (~2013) I explored updating the client source. I updated it to support the various new file formats, and had it connecting to our server -- compiled for 1.298 -- since UI behaviour is a lot closer (less of a jump, means easier to get in and mess with things without having to update literally everything to get to that point). I implemented capes, symbols (rendering and importing them via the UI), premium stuff, PM windows (because again: this was back before PM windows even existed!), loot boxes, and a bunch more.
    Eventually I moved on to play with 2.0xx, but quickly lost interest for a few reasons: there was a ton more to do, we were very busy with server development still (so this felt like wasted time), and well, at the time I was doing it solo, so I felt like it was too much of a monumental undertaking to attempt at this point in time.
    Aaaaaand now skip to this year (2017)
    The server's in a very good place, to the point where major server development is few and far between now (usually just bug fixes at this stage), and the OpenKO project happened.
    If you're not familiar with the project, they set about messing with the client source as well in an attempt to update it while learning how things work. This piqued my interest, and I became involved with it for a bit. Many hands make light work, after all.
    However, my experiences with open-source KO development have taught me that it's... well, a terrible idea (blah blah working alone blah blah spoonfeeding people blah blah people complaining about things not being implemented while at the same time selling it for their own personal gain blah blah... you get the idea), so I took the opportunity to ask those who were actively contributing about doing so in a private repository.
    Surprisingly (or maybe not?) that went over quite well. I should add that the project isn't specifically for ApexKO; most are just doing it for their own learning purposes, but ultimately it's my goal to use this project here, in place of the official client.
    I should probably also mention that I still help out with the public project; it is still a great place to learn how things work, so I'm happy to help people out over there. My main development focus though, is with the private repo. With the private repo it's a lot more comforting knowing that people aren't going around selling it while harassing you to implement/fix things for them (I'm not even kidding; this happened.).
    Since, we've made leaps and bounds with the project.
    At the time of writing, we've:
    Implemented symbols (clan, PVP, party leader, chicken, etc) Implemented capes Added premium behaviour (texts and whatnot) Updated overhead info (e.g. line under clan leader's name), fixed ranges on names, etc. Reimplement TBL handling logic to support newer TBLs and handle them in a more intuitive way (without having to save to .tmp files after decrypting >_>). Implemented merchant stalls, UIs and all relevant logic for it (UIs are more intuitive to interact with, as well) Implemented loot boxes Implemented the upgrade system, so you can now compound accessories and upgrade items. The anvil will show the effect when you burn an item or upgrade it, etc. Implemented the new "presents" screen Implemented the new login screen Implemented the new nation selection screen (and fixed the old one) Updated the character creation screen. Implemented backwards compatibility for old UIs  Updated and fixed rendering of item tooltips Fixed wrapping issues with tooltips in general Implemented drag/drop behaviour from skill tree -> skill bar. Implemented updated hostility behaviour and unified it all. Implemented event tile support (for triggering things like zone notices) Implemented zone notices (for entry and area triggers) Implemented commands UI Implemented exit menu Started migrating logic to use a 3D engine (so we aren't tied to DirectX and Windows, and we can also optimise our rendering pipeline). Updated the party list UIs. Implemented debuff behaviour for HP bars (and for party lists). Implemented mousewheel event support Reimplemented networking logic (for stability, performance, easier to work with, etc). Reimplemented input logic to no longer rely on Windows edit controls (meaning we needed to implement all of the editbox behaviour ourselves, like handling moving the caret and keys/hotkeys like CTRL+C/CTRL+V, home/end, etc) Implemented most of the King system UIs (will probably be done by the end of the week, even) Implemented the skill cooldown effect overlay ... and much, much more. I actually probably shouldn't have been as specific, because I was really just listing changes (at random, really) I considered reasonably noteworthy -- but they're far from all.
    In closing...
    Long story short, the work we've put into this project so far has been monumental. So much so that it's looking likely that we'll have sufficient 1.298 support to push into future versions reasonably soon.
    The project is extremely exciting. Time consuming, for sure, but very exciting and offers us endless new options.
    Perhaps I might make status reports regarding this project here, if anyone's interested in seeing how things are coming along. 
  9. Thanks
    twostars got a reaction from IIIAmJohnWick in Major gameplay optimisations... and general status updates   
    Hey guys,
    Since the last status update we've been pretty busy!
    We've updated the client to be on par with USKO 2.171, we've rewritten the King system, we've added Castellan Capes and the Castellan Dungeon, we've fixed a plethora of general bugs (present in the official client and otherwise), implemented Darkness item proc/effect behaviour (most notably the Dark Knight Mace, which behaves uniquely in that it allows players to heal enemies to deal damage), improved speedhack detection, and much, much more.
    Firstly though, our Halloween event!
    As of today's patch, the Halloween event will be over. It's definitely been a fun week. For the most part, I'd say the Halloween event went pretty well. The start was rocky as there was a ton of new behaviour that was implemented for this event (Darkness weapon procs/effects, new exchange behaviour, etc), as well as some issues with our updated speedhack detection, but we worked through it pretty quickly.
    Darkness weapons were a bit of a game-changer with PvP, but for merely a week of use (give or take some minor carry-over after the event), it definitely mixed things up a bit. Things should go back to normal soon, as these event items expire.
    The Halloween event also, however, made a fundamental problem with Knight Online's behaviour very clear. With the increased spawns in and around the CZ bowl, players with lower-end PCs / connections were struggling with warping (e.g. Descent and other teleports, like mage Blinks).
    Which is where our major gameplay optimisations come in.
    Knight Online has many problems. It's not the most efficient game, by far. Stuttering and lag is just expected of it at this point, unless your PC is reasonably high-end and you have a very good connection to the server (i.e. low ping).
    This isn't really true for a lot of people who play the game though. Especially with private servers, having a decent ping to the server can be very hit or miss.
    So when the server isn't at all efficient about its communications with the player (which it isn't!), it can result in sending a considerable amount more data to the client and forcing it to perform a lot of unnecessary work, which results in stutters and lag while the client slowly processes its requests.
    This week, such an issue was highlighted pretty clearly. With the increased spawns in and around the CZ bowl, players were finding increased stutter and lag -- particularly when using warps like Descent.
    The reason for this is actually pretty silly, but I need to explain how things work first to properly understand it.
    In Knight Online, maps are divided up into regions. Something like:

    Players can only see the contents of adjacent regions, like so:

    In the above, player A can only see player B, player C, player D, and player E because they can see regions (1,1), (1,2), (1,3), (2,1), (2,2), (2,3), (3,1), (3,2), and (3,3).
    They cannot see our perfectly accurate depiction of a worm over in region (4,4), because it is not in an adjacent region.
    So when player A crosses into region (3,3)...:

    As you can see, they can no longer see player B, player C or player D. We can still see player E in (2,3), and we can also now see the worm over in (4,4).
    This should all be pretty straightforward.
    Realistically, you'd expect it to despawn players/NPCs/monsters from the regions we can no longer see (those greyed out in the above image), and insert those in the regions we can now see (the darker yellow regions in the above image).
    That is, simply make the minor changes to what we know. The problem with its official behaviour is that it doesn't do this at all.
    Instead, it officially despawns everything and re-requests everything in its adjacent regions.
    Obviously this is extremely inefficient. In the example above, we already knew where player E was. Unfortunately, because everything was reloaded, it had to remove them and we had to be made aware of them... again. In addition to the worm which we previously couldn't see.
    This behaviour is pretty bad, but it's worse still for warps and respawning. Both of these not only fully reload when you move to an adjacent region, but every single time. For example: if you Descent to someone right next to you (for the purposes of this example, in the same region), it will still request a full reload of all players (+ merchant stalls), NPCs and monsters for all adjacent regions.
    Every single time.
    So, we were able to optimise this pretty heavily. We now specifically tell the client only what it needs to know.
    For adjacent region changes, that means who we no longer can see, and who we can now see. In the example above, this means telling player A that we can no longer see player B, player C or player D, i.e. all players/monsters/NPCs from regions (1,1), (1,2), (1,3), (2,1), (3,1). We also tell player A that we can now see worm over in (4,4).
    Anyone else still in our adjacent regions, for example, player E over in (2,3) remains unchanged. We have no need to update them whatsoever, so they no longer get despawned.
    For same region changes (e.g. warps), this means we no longer tell it anything -- because it just doesn't need to know. Player A can already see everyone in the region they were at and adjacent regions. They didn't change regions; there's no reason to look for anyone new.
    Sadly, requesting all data is entirely official behaviour. This was never purely a problem with ApexKO, or purely the server -- to fix it, we even had to patch the client to let us make these changes.
    But why are they so major? This all seems pretty trivial.
    It's so major because it's a ton of data the client was always processing, to the point where it having to unload and reload spawns (particularly when there's a lot of them!) causes very noticeable lag/stutter. Again, this is particularly evident with warps like Descent and mage's Blink, especially in highly populated areas (e.g. CZ bowl, especially with our pumpkins from the Halloween event!), but also of course when it's forced to do so from simply moving into another region.
    This also inadvertently fixes some other things.
    For example, since things aren't being fully reloaded on same-region or adjacent-region warps, or when they move into adjacent regions, nor finally when players are resurrected, loot boxes will also no longer despawn in these cases.
    Since loot boxes aren't actually game objects, and only exist when you're nearby to see it drop, full reloads previously removed them. But since there's no reason to reload, they're not actually removed anymore, so you can still see and loot them.
    I'm sure there's other behaviour related to this which it will clean up, but for now this will have to do.
    These optimisations should greatly improve gameplay from what you'd expect from even an official server like USKO. Completely removing that lag/stutter from most typical behaviour should be very noticeable and make the game that much smoother.
    Thanks again to those who reported the stutter with Descent. These reports are what allowed for some pretty nice improvements to overall game behaviour!
    How's the client source project going?
    Truthfully, with all the work on ApexKO in regards to its Halloween event and stream of bug fixes for surrounding patches, I haven't been as busy with it as I'd like. That should change though as things begin to stabilise again.
    Changes we've made since the last status update include:
    Cleaning up mouse input behaviour, to behave consistently and cleanly (this also deals with UI focus issues, so you can now, for example, click the chat UI/scrollbar and use the mousewheel to scroll the chat bar, or click back out into the game and return mousewheel behaviour to zoom in/out pretty seamlessly). Implementing UI clickthrough behaviour, for things like the chat bar. Cleaned up UI event behaviour for consistency. There was often cases where this inconsistent behaviour lead to various bugs. Finished implementing all of the King system. Implemented the friends list. Reimplemented chat behaviour. Implemented PMs. Implemented the chat bar buttons. Implemented chat filters. Item names are used consistently/correctly where needed. There were often cases officially, typically in messages in the info box where the wrong item name is used (specifically the name of the item's base), rather than the item's actual name. Updated the trade UI to behave as per 1.298 (with the confirmations, etc). Updated the vendor UI to behave as per 1.298 (with the confirmations, etc). Updated loading behaviour to more closely match official (where the load % is tracked, rather than updated at intervals). Implemented support for stealth / visibility (e.g. Lupine) skills. Fixes alpha blending issues with text and models (these existed in the official 1.298 client, but were fixed in later official versions). Clan symbols on capes now only show if the clan is allowed to use them. Purchase prices are now correctly coloured by price (as with newer clients). Fixed various UI input bug issues. Fixed double-click logic to behave on a per-control level, rather than per-click (i.e. making 2 clicks on 2 different things shouldn't trigger a double-click on the 2nd, e.g. with lists -- clicking one list entry then another rapidly shouldn't fire a double click event). Updates login screen error behaviour to behave as per 1.298. Fixes some issues with rivers / ponds not rendering. ... and more.
    In regards to major updates that are left, we still need to implement transformation support (and hence siege weapons), the rental system (although less important), Power-Up Store/in-game browser, quest tracking, etc.
    Hopefully when things are more stable with ApexKO, I can start to knock some more of those major features off the list and push it ever closer to a more complete state.
    What's next?
    Honestly, we still have a lot of our previously mentioned future goals from our last update left. Most likely the next thing we tackle will be implementing UTC, but we'll see what happens. With that game feature (finally!!) in, a lot of our secondary priorities can be looked at (in addition to getting more work done with the client source where possible!).
    Until next time.
     
  10. Thanks
    twostars got a reaction from BulletClub in Status update! (22/09/2017)   
    Hey guys,
    As you may have noticed, we haven't had any player patches in a couple of weeks (though we have fixed a few things here and there on the server's side). The reason for this is that we've been working on considerably more time-consuming projects than usual.
    Updating the client
    Specifically, one such project is updating the client to be on par with the official USKO client. We've fallen behind a bit with the official USKO client; it's 2.167 now, while we're still at 2.128. The newer USKO client implements things like the new capes, better texture rendering (i.e. "HD textures"), the in-game ability to toggle wings off/on (rendering our own feature useless, but oh well :P), the addition of an inventory slot for tattoos, the addition of a HUD for displaying HP/mana/stamina, and much, much more.
    For a while we'd been keeping on top of updating the same week as USKO, however they updated their protection somewhat (months back) which caused our mostly-automated updated process to have to be updated as well. We'd spent a considerable amount of time (off and on) since then trying to track down what was still causing the new client to very subtly crash after a random period of time (which was usually 15min+), which -- as we've finally determined for sure -- was still parts of their protection, which we can confidently say has all been disabled now (we can't make use of their protection with our own, after all).
    So our patcher was updated, meaning we can deal with newer clients again in a much faster fashion. Which leaves dealing with all of the actual changes in ~40 official version updates (it's going to be a decent-sized client patch!).
    Firstly, the most noticeably breaking change was the addition of the new inventory slot. As this inventory slot is smack-bang in the middle of the inventory, we needed to implement a versioning system for inventories in order to transform and update them. We also needed to figure out what and where this slot is actually used; as far as we can tell, these aren't visible so other players never see them. We, of course, do though. This is contrary to any other cospre slot's behaviour, but what can you do.
    Secondly, Castellan capes! This behaviour is kind've odd in the sense that they documented it on their forums, yet everything else indicates their forum post is wrong (in parts). So it's unfortunate that as usual there's no consistent source for accuracy, but realistically it doesn't change too much.
    If you weren't aware, these capes are available -- for free -- by Delos holders (with a token they're given). For us mere mortals, they cost a considerable amount of both CONT and coins. They also last 30 days.
    Having an expiry time is where the logic gets interesting, because of two things: alliance capes (i.e. when to use them and when to not), and dealing with what happens after the cape expires (does your old cape get restored?).

    The way I implemented them has Castellan capes always override alliance capes. Further, after the 30 days is up, your old cape will be restored -- be it your own cape, or your alliance's. This may not be official, but I think it makes sense and isn't that huge a deal either way.
    Additionally, we've made some changes to how the client accesses the Power-Up Store. We're aware that some players tend to have random connectivity issues we can't do much about, so hopefully this should no longer be an issue (or at least, when it is an issue, it's something we can do something about).
    Finally, the new client still requires going through and tracking down anything actually broken because of unknown changes. We're still in the process of doing this, so it won't be released until this is done -- but we're close.
    Castellan dungeon
    We've also been working on implementing the Castellan dungeon. That is, the dungeon Delos holders can access via the old Abyss entry.
    This has taken some time to address because of accuracy concerns; it's been difficult to get into it on USKO.
    We intend to get this out with the next patch. More details will be provided when (or slightly before) that's released.
    Rewriting the King system
    Ah, the King system. The source of many complaints since the beginning of ApexKO.
    The underlying problem with this system was that when I initially implemented it... back in 2013, I think, I decided (in my infinite wisdom) to keep its logic as close to 1:1 with mgame's original logic, i.e. trying to reverse it and handle it perfectly identically with the same database and internal structures, etc.
    The issue with this, however, is that it's extremely vague and handles things in awkward ways. Even the scheduling/timing logic -- as much as it fits with their original system -- doesn't really mesh with ours. Unlike official, we have an actual timed event/scheduling system we use for our events (rather than asking every ~6 seconds, is it the day, hour and minute for this event? and have I started it already -- because it'll run multiple times in the span of that minute?). I'm still not sure what prompted me to implement it like this way back then, when pretty much everything else was implemented how I felt would be best.
    I'm sure that with time the individual issues with the system could've been addressed individually (we fixed many of them already), but honestly, the system was a confusing mess, so it frankly doesn't surprise me that it randomly broke all the time.
    So it's been long overdue for a rewrite (as much as the original system design's ingrained into my brain; was difficult to move away from it). I actually just mostly finished that up last night, though I want to start looking into implementing impeachment logic (has anyone ever actually seen it used? That's fairly impressive if so), as I happened to reverse most of the process while reimplementing elections (unlike last time, where I just ignored it because I considered it a feature that nobody ever used).
    Minor caveat with this though: we no longer update clan rankings before elections, so it's back to using the top 10 clans from the start of the day. The reason we had it do this was to ensure the top 10 clans were still valid, but between ensuring all clans are ranked now (not just top 100), and tweaking the top 10 clan logic to specifically handle the first 10 that are applicable, rather than the first 10, we really don't need this anymore. All it did was slow down the scheduling (waiting on the clan rankings to update), and cause clan rankings to update at weird times. So it's really not needed anymore.
    From my own personal testing it's looking pretty good, so we just need to test this more thoroughly before we can implement this live. And hopefully never have to deal with elections randomly not happening anymore.
    Future goals
    We have several future goals and projects we're working on in the interests of ApexKO.
    One of them is the website. The website is not in a great place right now from an aesthetic standpoint, which doesn't give the best of impressions to newcomers. Its tool functionality is also lacking. We're very much in need of a web designer and/or developer to assist with this (if you think you can help, or know someone who can, please feel free to hit me up!).
    While I'm capable of handling the backend side of things, the frontend/aesthetic side is not really my forté (as you can probably tell).

    I've actually set about updating this twice since; I really should just update our live website to the first. The first set about improving our design choices with the existing template and updating user functionality. The second was with a new template we purchased, however we had to scrap that since midway through development another server released using that template -- ouch.
    Then there's Under the Castle (UTC). Yes, we plan to implement this, but we don't have an ETA for it. What I can say though, is that it's next on our plate after releasing the new client and the Castellan dungeon.
    Another is a project I've been spending quite a lot of time on recently, which is updating the client source. How does this help ApexKO, though?
    Well, for now it doesn't, since the client source was 1.068 and is being updated for 1.298 (as it's less of a gap than jumping straight to, say, 2.1xx). However, in the long run, once it's updated sufficiently, we'll be able to use this instead of relying on USKO for updates and having to awkwardly patch their issues manually (or not at all, because at some point they're not worth the development effort required).
    We also won't be limited by their client's feature-set: we can improve on it. Add new UIs. Change behaviour, provide proper error messages, fix long-standing bugs with the Knight Online client, etc. Additionally, by being able to change systems to work in a more convenient manner, it will enable us to implement even better anticheat prevention than we have currently.
    I'd originally attempted this back in 2014 and 2015, but the project is very time consuming, especially solo. At the time we also had a ton of work to do with the server project, so it wasn't a good time for it.
    With renewed interest in client development via the OpenKO project, and the server being in a very good place right now, I decided to pick this project up again with a few people from this project so as to actually make some progress with it. And we have: we've implemented some of the major systems; the anvil (upgrading items, and compounding accessories), the merchant system, etc. Also things like loot boxes which weren't a thing in the original 1.068 client.
    We have a lot to do with it still (doesn't support transformations, siege weapons, King system, etc -- even the newer character selection screen from 1.298+), but it's definitely making progress. So I hope to be able to use this for ApexKO eventually.
    In closing...
    With that I should conclude this lengthy status update post. As you can see, we have a lot on our plate we're trying to finish up. Last week I did say we'd probably get this patch out today. However, for testing reasons we need a few more days on that front.
    But it'll be soon, I promise.
  11. Like
    twostars got a reaction from BulletClub in Our future client project...   
    This is by far our most exciting -- and promising! -- project, and one that I've been spending every possible moment on lately.
    Why is this project important?
    Firstly, before I get into anything, I should explain why the client source -- and this project -- is important.
    It's essentially useful for 2 things: being able to more easily fix things ourselves, and giving us the option to literally do anything. I can't stress this last part enough. With the server, we have some means of creativity; but anything we could implement has to find a way to have this deal with the client in a suitable manner.
    Having the client source removes this limitation entirely. Our server, our client. We can do whatever we want with it.
    We need a new UI? We can make one and add it in. Imagine the possibilities.
    Regarding fixing things, right now we rely on official updates from mgame; our update process revolves around using their code and adding in our patches (each time) to fix their issues (that they haven't yet fixed themselves).
    Each update we hope that they've actually fixed things that we've yet to fix for them (manually, with assembly, which is a considerably more daunting and time consuming task for us than it is for them with the client source). Changing a single line of code for them, may take us a few hours to do manually via assembly (having to track down where this logic is, etc).
    And now some history...
    If you're not aware, there exists a set of leaked (official) source files for ~1.06x (for the server AND client -- as well as their development tools) from way back in 2002~2003. This was before its first released version, and before anything was actually implemented properly, but it's still a tremendously invaluable resource as a lot of things still are handled similarly -- if not the same -- even now in 2.1xx.
    So way back during server development (~2013) I explored updating the client source. I updated it to support the various new file formats, and had it connecting to our server -- compiled for 1.298 -- since UI behaviour is a lot closer (less of a jump, means easier to get in and mess with things without having to update literally everything to get to that point). I implemented capes, symbols (rendering and importing them via the UI), premium stuff, PM windows (because again: this was back before PM windows even existed!), loot boxes, and a bunch more.
    Eventually I moved on to play with 2.0xx, but quickly lost interest for a few reasons: there was a ton more to do, we were very busy with server development still (so this felt like wasted time), and well, at the time I was doing it solo, so I felt like it was too much of a monumental undertaking to attempt at this point in time.
    Aaaaaand now skip to this year (2017)
    The server's in a very good place, to the point where major server development is few and far between now (usually just bug fixes at this stage), and the OpenKO project happened.
    If you're not familiar with the project, they set about messing with the client source as well in an attempt to update it while learning how things work. This piqued my interest, and I became involved with it for a bit. Many hands make light work, after all.
    However, my experiences with open-source KO development have taught me that it's... well, a terrible idea (blah blah working alone blah blah spoonfeeding people blah blah people complaining about things not being implemented while at the same time selling it for their own personal gain blah blah... you get the idea), so I took the opportunity to ask those who were actively contributing about doing so in a private repository.
    Surprisingly (or maybe not?) that went over quite well. I should add that the project isn't specifically for ApexKO; most are just doing it for their own learning purposes, but ultimately it's my goal to use this project here, in place of the official client.
    I should probably also mention that I still help out with the public project; it is still a great place to learn how things work, so I'm happy to help people out over there. My main development focus though, is with the private repo. With the private repo it's a lot more comforting knowing that people aren't going around selling it while harassing you to implement/fix things for them (I'm not even kidding; this happened.).
    Since, we've made leaps and bounds with the project.
    At the time of writing, we've:
    Implemented symbols (clan, PVP, party leader, chicken, etc) Implemented capes Added premium behaviour (texts and whatnot) Updated overhead info (e.g. line under clan leader's name), fixed ranges on names, etc. Reimplement TBL handling logic to support newer TBLs and handle them in a more intuitive way (without having to save to .tmp files after decrypting >_>). Implemented merchant stalls, UIs and all relevant logic for it (UIs are more intuitive to interact with, as well) Implemented loot boxes Implemented the upgrade system, so you can now compound accessories and upgrade items. The anvil will show the effect when you burn an item or upgrade it, etc. Implemented the new "presents" screen Implemented the new login screen Implemented the new nation selection screen (and fixed the old one) Updated the character creation screen. Implemented backwards compatibility for old UIs  Updated and fixed rendering of item tooltips Fixed wrapping issues with tooltips in general Implemented drag/drop behaviour from skill tree -> skill bar. Implemented updated hostility behaviour and unified it all. Implemented event tile support (for triggering things like zone notices) Implemented zone notices (for entry and area triggers) Implemented commands UI Implemented exit menu Started migrating logic to use a 3D engine (so we aren't tied to DirectX and Windows, and we can also optimise our rendering pipeline). Updated the party list UIs. Implemented debuff behaviour for HP bars (and for party lists). Implemented mousewheel event support Reimplemented networking logic (for stability, performance, easier to work with, etc). Reimplemented input logic to no longer rely on Windows edit controls (meaning we needed to implement all of the editbox behaviour ourselves, like handling moving the caret and keys/hotkeys like CTRL+C/CTRL+V, home/end, etc) Implemented most of the King system UIs (will probably be done by the end of the week, even) Implemented the skill cooldown effect overlay ... and much, much more. I actually probably shouldn't have been as specific, because I was really just listing changes (at random, really) I considered reasonably noteworthy -- but they're far from all.
    In closing...
    Long story short, the work we've put into this project so far has been monumental. So much so that it's looking likely that we'll have sufficient 1.298 support to push into future versions reasonably soon.
    The project is extremely exciting. Time consuming, for sure, but very exciting and offers us endless new options.
    Perhaps I might make status reports regarding this project here, if anyone's interested in seeing how things are coming along. 
  12. Like
    twostars got a reaction from BulletClub in Our future client project...   
    This is by far our most exciting -- and promising! -- project, and one that I've been spending every possible moment on lately.
    Why is this project important?
    Firstly, before I get into anything, I should explain why the client source -- and this project -- is important.
    It's essentially useful for 2 things: being able to more easily fix things ourselves, and giving us the option to literally do anything. I can't stress this last part enough. With the server, we have some means of creativity; but anything we could implement has to find a way to have this deal with the client in a suitable manner.
    Having the client source removes this limitation entirely. Our server, our client. We can do whatever we want with it.
    We need a new UI? We can make one and add it in. Imagine the possibilities.
    Regarding fixing things, right now we rely on official updates from mgame; our update process revolves around using their code and adding in our patches (each time) to fix their issues (that they haven't yet fixed themselves).
    Each update we hope that they've actually fixed things that we've yet to fix for them (manually, with assembly, which is a considerably more daunting and time consuming task for us than it is for them with the client source). Changing a single line of code for them, may take us a few hours to do manually via assembly (having to track down where this logic is, etc).
    And now some history...
    If you're not aware, there exists a set of leaked (official) source files for ~1.06x (for the server AND client -- as well as their development tools) from way back in 2002~2003. This was before its first released version, and before anything was actually implemented properly, but it's still a tremendously invaluable resource as a lot of things still are handled similarly -- if not the same -- even now in 2.1xx.
    So way back during server development (~2013) I explored updating the client source. I updated it to support the various new file formats, and had it connecting to our server -- compiled for 1.298 -- since UI behaviour is a lot closer (less of a jump, means easier to get in and mess with things without having to update literally everything to get to that point). I implemented capes, symbols (rendering and importing them via the UI), premium stuff, PM windows (because again: this was back before PM windows even existed!), loot boxes, and a bunch more.
    Eventually I moved on to play with 2.0xx, but quickly lost interest for a few reasons: there was a ton more to do, we were very busy with server development still (so this felt like wasted time), and well, at the time I was doing it solo, so I felt like it was too much of a monumental undertaking to attempt at this point in time.
    Aaaaaand now skip to this year (2017)
    The server's in a very good place, to the point where major server development is few and far between now (usually just bug fixes at this stage), and the OpenKO project happened.
    If you're not familiar with the project, they set about messing with the client source as well in an attempt to update it while learning how things work. This piqued my interest, and I became involved with it for a bit. Many hands make light work, after all.
    However, my experiences with open-source KO development have taught me that it's... well, a terrible idea (blah blah working alone blah blah spoonfeeding people blah blah people complaining about things not being implemented while at the same time selling it for their own personal gain blah blah... you get the idea), so I took the opportunity to ask those who were actively contributing about doing so in a private repository.
    Surprisingly (or maybe not?) that went over quite well. I should add that the project isn't specifically for ApexKO; most are just doing it for their own learning purposes, but ultimately it's my goal to use this project here, in place of the official client.
    I should probably also mention that I still help out with the public project; it is still a great place to learn how things work, so I'm happy to help people out over there. My main development focus though, is with the private repo. With the private repo it's a lot more comforting knowing that people aren't going around selling it while harassing you to implement/fix things for them (I'm not even kidding; this happened.).
    Since, we've made leaps and bounds with the project.
    At the time of writing, we've:
    Implemented symbols (clan, PVP, party leader, chicken, etc) Implemented capes Added premium behaviour (texts and whatnot) Updated overhead info (e.g. line under clan leader's name), fixed ranges on names, etc. Reimplement TBL handling logic to support newer TBLs and handle them in a more intuitive way (without having to save to .tmp files after decrypting >_>). Implemented merchant stalls, UIs and all relevant logic for it (UIs are more intuitive to interact with, as well) Implemented loot boxes Implemented the upgrade system, so you can now compound accessories and upgrade items. The anvil will show the effect when you burn an item or upgrade it, etc. Implemented the new "presents" screen Implemented the new login screen Implemented the new nation selection screen (and fixed the old one) Updated the character creation screen. Implemented backwards compatibility for old UIs  Updated and fixed rendering of item tooltips Fixed wrapping issues with tooltips in general Implemented drag/drop behaviour from skill tree -> skill bar. Implemented updated hostility behaviour and unified it all. Implemented event tile support (for triggering things like zone notices) Implemented zone notices (for entry and area triggers) Implemented commands UI Implemented exit menu Started migrating logic to use a 3D engine (so we aren't tied to DirectX and Windows, and we can also optimise our rendering pipeline). Updated the party list UIs. Implemented debuff behaviour for HP bars (and for party lists). Implemented mousewheel event support Reimplemented networking logic (for stability, performance, easier to work with, etc). Reimplemented input logic to no longer rely on Windows edit controls (meaning we needed to implement all of the editbox behaviour ourselves, like handling moving the caret and keys/hotkeys like CTRL+C/CTRL+V, home/end, etc) Implemented most of the King system UIs (will probably be done by the end of the week, even) Implemented the skill cooldown effect overlay ... and much, much more. I actually probably shouldn't have been as specific, because I was really just listing changes (at random, really) I considered reasonably noteworthy -- but they're far from all.
    In closing...
    Long story short, the work we've put into this project so far has been monumental. So much so that it's looking likely that we'll have sufficient 1.298 support to push into future versions reasonably soon.
    The project is extremely exciting. Time consuming, for sure, but very exciting and offers us endless new options.
    Perhaps I might make status reports regarding this project here, if anyone's interested in seeing how things are coming along. 
  13. Like
    twostars got a reaction from Sierra in Our server   
    Unlike other servers, we've put a lot of work into our server -- several years worth, in fact. Actually, I can safely say that we're the reason that most people are even using source code to develop servers now, rather than messing with the official binaries.
    This is why I'd like to go into some detail about our server, since it's not something that's usually talked about outside of bug reports and such.
    A brief history
    Our server was initially created as a result of our attempts to push open source development in the Knight Online community, in 2012~2013.
    The project's intent was to update the official C++ source files (for ~1.06x) to a usable state for community learning purposes.
    Although the project ultimately went closed source due to lack of community attention, in the years since then we've made leaps and bounds with the project, rewriting most systems from the ground up to behave in a more logical and optimised fashion, doing our best to respect both DRY (Don't Repeat Yourself) and KISS (Keep It Simple, Stupid) principles, as well as updating to support the latest version of Knight Online (2.1xx at the time of writing).
    It has been a monumental undertaking, but in doing so, we've learned a lot about how the official server works (and even more about how it doesn't), and have always striven to improve upon it (as well as our own implementation).
    Accuracy
    While we do deviate in some regards (with good intentions), accuracy is very important to us.
    We have spent a great deal of time reversing official server and client binaries, as well as testing behaviour on official and scouring through its packet logs.
    As-is, we're confident that in most respects that have any importance (e.g. damage calculations, rates, etc.) our implementations behave the same as (or very, very close to) official's.
    Cheat detection
    While official and 99% of private servers rely on client checks to detect cheating, we do not believe in playing this easily-bypassable game of cat and mouse. As such, our server is very proactive in its detection of cheat methods to lock them down permanently, i.e. with no means of bypass.
    From ensuring we deal with client input in a safe manner to things like verifying every step of the skill casting process, or enforcing tight server-side collision and movement speed checks, we always strive to ensure that players have no vector for abuse. Obviously this is always a work-in-progress and isn't perfect or complete (what is?), and we're introducing new logic to prevent more general cheating behaviour as it pops up, but we're proud of how far we've come - and that we've come so far compared to official (and other private servers) in this regard.
    Performance
    Aesteris and I have both put years into developing this server (and I'm sure there's many more to come), and at this point I'm confident in saying our server performs - in most respects - better than official. On this note, we've found that many official bugs are caused by design flaws or simply their tendency to copy & paste their logic (and miss things).
    During implementation, we are always ever-present of performance concerns, be it in regards to how much time/resources a player request can consume (or anything in general), how costly a database hit will be, or even how much data is being (unnecessarily) sent to players -- performance matters to us, because it matters to players. A server falling under its own weight isn't worth playing.
    Zone instances are one interesting example of this. Officially and in 99% of private servers, "instances" are implemented such that when dealing with anyone in an instance, it still has to deal with all players in that zone (i.e. all instances of that zone). So instead of the 16 people we want to deal with in our Border Defense War instance, we deal with the 200 players across all of them.
    Here, we implement this system fairly logically: each instance is a self-contained unit attached to a zone. When dealing with players (or NPCs/monsters for that matter) in these instances, we only ever deal with the 16 actually in it.
    Similarly, officially we've noticed they tend to scan the entire server when looking for players to affect with skills nearby. As always, this extends to private servers as well, though most will have this (slightly) optimised from when this was open source. Here, of course, we only ever look for those actually near the player.
    This extends even to our database implementation. Beyond optimising the database design to avoid unnecessary or overly intensive lookups, we've also moved away from Microsoft SQL Server as - while it's a decent product - in several situations, it doesn't fit our performance needs (we also mostly moved away from Windows in general, which was another reason for dropping it).
    While not all are, many of our performance improvements are entirely noticeable by players. For example: unlike official or other private servers, there is close to no delay in logging in and selecting your character (the only delay is your own connection latency; officially and on other private servers, these backend requests take quite some time themselves). Additionally, we optimise our outgoing traffic to avoid congestion on the player side -- which saves you (and us) bandwidth, and means the client isn't bogged down as much processing the traffic.
    Events (and timing)
    Although fairly common with most of our systems, I feel that our event system (in no small part because of our timed event system) should be pointed out in particular as it is a colossal improvement over the way official implements events (as well as other private servers).
    Officially (and again, other private servers -- these go hand in hand), events are scheduled based on specific time checks. That is, if an event is scheduled at 01/02/2017 12:30PM, their game timer will check (every 6 seconds) if the current time matches. That is, it'll check if the day is 1, month is 2, year is 2017, hour is 12 and minutes are 30. Every 6 seconds.
    This means that issues with clock changes can easily upset it, not to mention issues with restarts not realising it has yet to run even though the time has passed (because it isn't exactly that time!).
    Here, we have a scheduler for timed events. Times scheduled in the past will run immediately, while times in the future will run once that time has passed. As always, we're ever-present of performance concerns, and scheduling in this manner can be very sensitive performance-wise, but in its present state our scheduling system performs wonderfully.
    Virtually everything timing-related in our server runs via this system in 1 of 2 ways (again, for performance reasons): in a "precise" mode, where we require a higher granularity (e.g. skill timings), or in a general mode for everything else that matters a lot less (e.g. event scheduling).
    From scheduling to running parts of the events, timing is very important with events.
    As I've mentioned previously, our implementations aim to behave logically. We also aim to keep features as self-contained as possible, unlike official, where you have random logic strewn about that exists that doesn't have an obvious use until you determine it's for, say, a specific case in an event.
    Obviously, when your codebase is littered with random things like this, it's very difficult to maintain, and very prone to bugs. We're all familiar with the bugginess of Knight Online; official servers, particularly. This is why.
    In contrast, we keep all of our event logic with the rest of that event's logic. And I don't mean just keeping it in the same source files.
    I mean, as a common example, if we need to handle the death of a player or monster in this event, we implement a specialized zone instance class for this event's instance, and override its OnDeath() event. Meaning, it's only ever handled in this event by design and no other logic needs to be aware of it.
    As previously said: we aim to implement things logically, in an attempt to keep things readily maintainable and avoid bugs.
    Custom behaviour
    While accuracy is important to us, so is an improved player experience.
    For starters, we're perfectly comfortable with taking features and reworking them into something that can be of use. For example: our in-game Class Transfer feature. This feature doesn't exist officially; it uses the official Nation Transfer feature to accomplish this, as the UI provides the ability to change their desired features -- which is the only time a player needs to make a decision (beyond their desired class, which we accomplish by prompting for that in the NPC -- easy!).
    Another example of this is taking their event system and reimplementing the Forgotten Temple and Juraid Mountain events to work with it, so players can now simply use the sign-up feature to access this event, rather than finding and talking to their respective NPCs. This means a much nicer user experience and increased participation to the events.
    And how about our clan banks? Their inn UI was easily repurposed for this custom feature that again, does not exist officially.
    And to finish this off...
    It's very easy to see this as "another server", but you need to realise that everything implemented in the game -- everything! -- has been written by us, at this point, from scratch. At the beginning of this project (which if memory serves was aiming to get it up and running with 1.8xx), we didn't have things like merchanting, we didn't have upgrades, let alone any type of event (even old events like Forgotten Temple or Bifrost). For a while I personally didn't really think we'd end up getting it anywhere, but continued to work on it in my spare time regardless.
    Now we have a fully-featured, highly optimised server implementing almost everything official has to offer.
    We've come a very, very long way in this time. We have more work to do (as always), but I hope this at least gives a small glimpse into what's actually involved behind-the-scenes in actual server development and why we're different to other servers.
  14. Like
    twostars got a reaction from Free2Play in Ronark Land Board Bugg   
    This has been fixed (for realsies) in the next patch.
  15. Thanks
    twostars got a reaction from BulletClub in Status update! (22/09/2017)   
    Hey guys,
    As you may have noticed, we haven't had any player patches in a couple of weeks (though we have fixed a few things here and there on the server's side). The reason for this is that we've been working on considerably more time-consuming projects than usual.
    Updating the client
    Specifically, one such project is updating the client to be on par with the official USKO client. We've fallen behind a bit with the official USKO client; it's 2.167 now, while we're still at 2.128. The newer USKO client implements things like the new capes, better texture rendering (i.e. "HD textures"), the in-game ability to toggle wings off/on (rendering our own feature useless, but oh well :P), the addition of an inventory slot for tattoos, the addition of a HUD for displaying HP/mana/stamina, and much, much more.
    For a while we'd been keeping on top of updating the same week as USKO, however they updated their protection somewhat (months back) which caused our mostly-automated updated process to have to be updated as well. We'd spent a considerable amount of time (off and on) since then trying to track down what was still causing the new client to very subtly crash after a random period of time (which was usually 15min+), which -- as we've finally determined for sure -- was still parts of their protection, which we can confidently say has all been disabled now (we can't make use of their protection with our own, after all).
    So our patcher was updated, meaning we can deal with newer clients again in a much faster fashion. Which leaves dealing with all of the actual changes in ~40 official version updates (it's going to be a decent-sized client patch!).
    Firstly, the most noticeably breaking change was the addition of the new inventory slot. As this inventory slot is smack-bang in the middle of the inventory, we needed to implement a versioning system for inventories in order to transform and update them. We also needed to figure out what and where this slot is actually used; as far as we can tell, these aren't visible so other players never see them. We, of course, do though. This is contrary to any other cospre slot's behaviour, but what can you do.
    Secondly, Castellan capes! This behaviour is kind've odd in the sense that they documented it on their forums, yet everything else indicates their forum post is wrong (in parts). So it's unfortunate that as usual there's no consistent source for accuracy, but realistically it doesn't change too much.
    If you weren't aware, these capes are available -- for free -- by Delos holders (with a token they're given). For us mere mortals, they cost a considerable amount of both CONT and coins. They also last 30 days.
    Having an expiry time is where the logic gets interesting, because of two things: alliance capes (i.e. when to use them and when to not), and dealing with what happens after the cape expires (does your old cape get restored?).

    The way I implemented them has Castellan capes always override alliance capes. Further, after the 30 days is up, your old cape will be restored -- be it your own cape, or your alliance's. This may not be official, but I think it makes sense and isn't that huge a deal either way.
    Additionally, we've made some changes to how the client accesses the Power-Up Store. We're aware that some players tend to have random connectivity issues we can't do much about, so hopefully this should no longer be an issue (or at least, when it is an issue, it's something we can do something about).
    Finally, the new client still requires going through and tracking down anything actually broken because of unknown changes. We're still in the process of doing this, so it won't be released until this is done -- but we're close.
    Castellan dungeon
    We've also been working on implementing the Castellan dungeon. That is, the dungeon Delos holders can access via the old Abyss entry.
    This has taken some time to address because of accuracy concerns; it's been difficult to get into it on USKO.
    We intend to get this out with the next patch. More details will be provided when (or slightly before) that's released.
    Rewriting the King system
    Ah, the King system. The source of many complaints since the beginning of ApexKO.
    The underlying problem with this system was that when I initially implemented it... back in 2013, I think, I decided (in my infinite wisdom) to keep its logic as close to 1:1 with mgame's original logic, i.e. trying to reverse it and handle it perfectly identically with the same database and internal structures, etc.
    The issue with this, however, is that it's extremely vague and handles things in awkward ways. Even the scheduling/timing logic -- as much as it fits with their original system -- doesn't really mesh with ours. Unlike official, we have an actual timed event/scheduling system we use for our events (rather than asking every ~6 seconds, is it the day, hour and minute for this event? and have I started it already -- because it'll run multiple times in the span of that minute?). I'm still not sure what prompted me to implement it like this way back then, when pretty much everything else was implemented how I felt would be best.
    I'm sure that with time the individual issues with the system could've been addressed individually (we fixed many of them already), but honestly, the system was a confusing mess, so it frankly doesn't surprise me that it randomly broke all the time.
    So it's been long overdue for a rewrite (as much as the original system design's ingrained into my brain; was difficult to move away from it). I actually just mostly finished that up last night, though I want to start looking into implementing impeachment logic (has anyone ever actually seen it used? That's fairly impressive if so), as I happened to reverse most of the process while reimplementing elections (unlike last time, where I just ignored it because I considered it a feature that nobody ever used).
    Minor caveat with this though: we no longer update clan rankings before elections, so it's back to using the top 10 clans from the start of the day. The reason we had it do this was to ensure the top 10 clans were still valid, but between ensuring all clans are ranked now (not just top 100), and tweaking the top 10 clan logic to specifically handle the first 10 that are applicable, rather than the first 10, we really don't need this anymore. All it did was slow down the scheduling (waiting on the clan rankings to update), and cause clan rankings to update at weird times. So it's really not needed anymore.
    From my own personal testing it's looking pretty good, so we just need to test this more thoroughly before we can implement this live. And hopefully never have to deal with elections randomly not happening anymore.
    Future goals
    We have several future goals and projects we're working on in the interests of ApexKO.
    One of them is the website. The website is not in a great place right now from an aesthetic standpoint, which doesn't give the best of impressions to newcomers. Its tool functionality is also lacking. We're very much in need of a web designer and/or developer to assist with this (if you think you can help, or know someone who can, please feel free to hit me up!).
    While I'm capable of handling the backend side of things, the frontend/aesthetic side is not really my forté (as you can probably tell).

    I've actually set about updating this twice since; I really should just update our live website to the first. The first set about improving our design choices with the existing template and updating user functionality. The second was with a new template we purchased, however we had to scrap that since midway through development another server released using that template -- ouch.
    Then there's Under the Castle (UTC). Yes, we plan to implement this, but we don't have an ETA for it. What I can say though, is that it's next on our plate after releasing the new client and the Castellan dungeon.
    Another is a project I've been spending quite a lot of time on recently, which is updating the client source. How does this help ApexKO, though?
    Well, for now it doesn't, since the client source was 1.068 and is being updated for 1.298 (as it's less of a gap than jumping straight to, say, 2.1xx). However, in the long run, once it's updated sufficiently, we'll be able to use this instead of relying on USKO for updates and having to awkwardly patch their issues manually (or not at all, because at some point they're not worth the development effort required).
    We also won't be limited by their client's feature-set: we can improve on it. Add new UIs. Change behaviour, provide proper error messages, fix long-standing bugs with the Knight Online client, etc. Additionally, by being able to change systems to work in a more convenient manner, it will enable us to implement even better anticheat prevention than we have currently.
    I'd originally attempted this back in 2014 and 2015, but the project is very time consuming, especially solo. At the time we also had a ton of work to do with the server project, so it wasn't a good time for it.
    With renewed interest in client development via the OpenKO project, and the server being in a very good place right now, I decided to pick this project up again with a few people from this project so as to actually make some progress with it. And we have: we've implemented some of the major systems; the anvil (upgrading items, and compounding accessories), the merchant system, etc. Also things like loot boxes which weren't a thing in the original 1.068 client.
    We have a lot to do with it still (doesn't support transformations, siege weapons, King system, etc -- even the newer character selection screen from 1.298+), but it's definitely making progress. So I hope to be able to use this for ApexKO eventually.
    In closing...
    With that I should conclude this lengthy status update post. As you can see, we have a lot on our plate we're trying to finish up. Last week I did say we'd probably get this patch out today. However, for testing reasons we need a few more days on that front.
    But it'll be soon, I promise.
  16. Like
    twostars got a reaction from Chayni in Clan & Alliance   
    So you're saying it's breaking for the clan forming the alliance (i.e. the alliance leader), not the subclan? If so, that's interesting, because in that case the colour should be the same regardless of which it uses -- the alliance's or their clan's. Huh.
    "they are not allowed to change colors while being in the ally, they gotta set the color right before they get added into ally"
    They could change colours, but it wasn't being used. This part's fixed now (assuming you're talking about the subclan).
    If you're saying it's official behaviour that they're not allowed to, well... whatever. I think it's fine we let them.
    Edit:
    Okay, I see what you mean; this is a similar but different issue. I've fixed this now. Thanks.
  17. Thanks
    twostars got a reaction from BulletClub in Status update! (22/09/2017)   
    Hey guys,
    As you may have noticed, we haven't had any player patches in a couple of weeks (though we have fixed a few things here and there on the server's side). The reason for this is that we've been working on considerably more time-consuming projects than usual.
    Updating the client
    Specifically, one such project is updating the client to be on par with the official USKO client. We've fallen behind a bit with the official USKO client; it's 2.167 now, while we're still at 2.128. The newer USKO client implements things like the new capes, better texture rendering (i.e. "HD textures"), the in-game ability to toggle wings off/on (rendering our own feature useless, but oh well :P), the addition of an inventory slot for tattoos, the addition of a HUD for displaying HP/mana/stamina, and much, much more.
    For a while we'd been keeping on top of updating the same week as USKO, however they updated their protection somewhat (months back) which caused our mostly-automated updated process to have to be updated as well. We'd spent a considerable amount of time (off and on) since then trying to track down what was still causing the new client to very subtly crash after a random period of time (which was usually 15min+), which -- as we've finally determined for sure -- was still parts of their protection, which we can confidently say has all been disabled now (we can't make use of their protection with our own, after all).
    So our patcher was updated, meaning we can deal with newer clients again in a much faster fashion. Which leaves dealing with all of the actual changes in ~40 official version updates (it's going to be a decent-sized client patch!).
    Firstly, the most noticeably breaking change was the addition of the new inventory slot. As this inventory slot is smack-bang in the middle of the inventory, we needed to implement a versioning system for inventories in order to transform and update them. We also needed to figure out what and where this slot is actually used; as far as we can tell, these aren't visible so other players never see them. We, of course, do though. This is contrary to any other cospre slot's behaviour, but what can you do.
    Secondly, Castellan capes! This behaviour is kind've odd in the sense that they documented it on their forums, yet everything else indicates their forum post is wrong (in parts). So it's unfortunate that as usual there's no consistent source for accuracy, but realistically it doesn't change too much.
    If you weren't aware, these capes are available -- for free -- by Delos holders (with a token they're given). For us mere mortals, they cost a considerable amount of both CONT and coins. They also last 30 days.
    Having an expiry time is where the logic gets interesting, because of two things: alliance capes (i.e. when to use them and when to not), and dealing with what happens after the cape expires (does your old cape get restored?).

    The way I implemented them has Castellan capes always override alliance capes. Further, after the 30 days is up, your old cape will be restored -- be it your own cape, or your alliance's. This may not be official, but I think it makes sense and isn't that huge a deal either way.
    Additionally, we've made some changes to how the client accesses the Power-Up Store. We're aware that some players tend to have random connectivity issues we can't do much about, so hopefully this should no longer be an issue (or at least, when it is an issue, it's something we can do something about).
    Finally, the new client still requires going through and tracking down anything actually broken because of unknown changes. We're still in the process of doing this, so it won't be released until this is done -- but we're close.
    Castellan dungeon
    We've also been working on implementing the Castellan dungeon. That is, the dungeon Delos holders can access via the old Abyss entry.
    This has taken some time to address because of accuracy concerns; it's been difficult to get into it on USKO.
    We intend to get this out with the next patch. More details will be provided when (or slightly before) that's released.
    Rewriting the King system
    Ah, the King system. The source of many complaints since the beginning of ApexKO.
    The underlying problem with this system was that when I initially implemented it... back in 2013, I think, I decided (in my infinite wisdom) to keep its logic as close to 1:1 with mgame's original logic, i.e. trying to reverse it and handle it perfectly identically with the same database and internal structures, etc.
    The issue with this, however, is that it's extremely vague and handles things in awkward ways. Even the scheduling/timing logic -- as much as it fits with their original system -- doesn't really mesh with ours. Unlike official, we have an actual timed event/scheduling system we use for our events (rather than asking every ~6 seconds, is it the day, hour and minute for this event? and have I started it already -- because it'll run multiple times in the span of that minute?). I'm still not sure what prompted me to implement it like this way back then, when pretty much everything else was implemented how I felt would be best.
    I'm sure that with time the individual issues with the system could've been addressed individually (we fixed many of them already), but honestly, the system was a confusing mess, so it frankly doesn't surprise me that it randomly broke all the time.
    So it's been long overdue for a rewrite (as much as the original system design's ingrained into my brain; was difficult to move away from it). I actually just mostly finished that up last night, though I want to start looking into implementing impeachment logic (has anyone ever actually seen it used? That's fairly impressive if so), as I happened to reverse most of the process while reimplementing elections (unlike last time, where I just ignored it because I considered it a feature that nobody ever used).
    Minor caveat with this though: we no longer update clan rankings before elections, so it's back to using the top 10 clans from the start of the day. The reason we had it do this was to ensure the top 10 clans were still valid, but between ensuring all clans are ranked now (not just top 100), and tweaking the top 10 clan logic to specifically handle the first 10 that are applicable, rather than the first 10, we really don't need this anymore. All it did was slow down the scheduling (waiting on the clan rankings to update), and cause clan rankings to update at weird times. So it's really not needed anymore.
    From my own personal testing it's looking pretty good, so we just need to test this more thoroughly before we can implement this live. And hopefully never have to deal with elections randomly not happening anymore.
    Future goals
    We have several future goals and projects we're working on in the interests of ApexKO.
    One of them is the website. The website is not in a great place right now from an aesthetic standpoint, which doesn't give the best of impressions to newcomers. Its tool functionality is also lacking. We're very much in need of a web designer and/or developer to assist with this (if you think you can help, or know someone who can, please feel free to hit me up!).
    While I'm capable of handling the backend side of things, the frontend/aesthetic side is not really my forté (as you can probably tell).

    I've actually set about updating this twice since; I really should just update our live website to the first. The first set about improving our design choices with the existing template and updating user functionality. The second was with a new template we purchased, however we had to scrap that since midway through development another server released using that template -- ouch.
    Then there's Under the Castle (UTC). Yes, we plan to implement this, but we don't have an ETA for it. What I can say though, is that it's next on our plate after releasing the new client and the Castellan dungeon.
    Another is a project I've been spending quite a lot of time on recently, which is updating the client source. How does this help ApexKO, though?
    Well, for now it doesn't, since the client source was 1.068 and is being updated for 1.298 (as it's less of a gap than jumping straight to, say, 2.1xx). However, in the long run, once it's updated sufficiently, we'll be able to use this instead of relying on USKO for updates and having to awkwardly patch their issues manually (or not at all, because at some point they're not worth the development effort required).
    We also won't be limited by their client's feature-set: we can improve on it. Add new UIs. Change behaviour, provide proper error messages, fix long-standing bugs with the Knight Online client, etc. Additionally, by being able to change systems to work in a more convenient manner, it will enable us to implement even better anticheat prevention than we have currently.
    I'd originally attempted this back in 2014 and 2015, but the project is very time consuming, especially solo. At the time we also had a ton of work to do with the server project, so it wasn't a good time for it.
    With renewed interest in client development via the OpenKO project, and the server being in a very good place right now, I decided to pick this project up again with a few people from this project so as to actually make some progress with it. And we have: we've implemented some of the major systems; the anvil (upgrading items, and compounding accessories), the merchant system, etc. Also things like loot boxes which weren't a thing in the original 1.068 client.
    We have a lot to do with it still (doesn't support transformations, siege weapons, King system, etc -- even the newer character selection screen from 1.298+), but it's definitely making progress. So I hope to be able to use this for ApexKO eventually.
    In closing...
    With that I should conclude this lengthy status update post. As you can see, we have a lot on our plate we're trying to finish up. Last week I did say we'd probably get this patch out today. However, for testing reasons we need a few more days on that front.
    But it'll be soon, I promise.
  18. Like
    twostars got a reaction from BulletClub in Patch notes (25/08/2017)   
    Changelog
    Fixed a bug causing rankings on the Ronark Land board to persist after a Nation Transfer. Undying now drops [Gold Coins] in Ronark Land. Raised the cost of [Unidentified Potions] from their quest-givers to 10M, and added a [Silver Bar] as reward to compensate the cost. Updated the login screen to match current USKO. Fixed [Opal Earrings] not being shown in the buying merchant search. Added the various [Apex Point vouchers] to the buying merchant search. To avoid cheesing the Kill the GM event, GMs are now immune to most Krowaz curses.
  19. Thanks
    twostars got a reaction from wezz in Some Topic Suggestions for the Forums   
    Just dumped these from the database, hopefully it's readable enough:
     
     
  20. Thanks
    twostars got a reaction from Built4CZ in In-game titles   
    Trainee Soldier
    Defeat 100 Enemy User
    Attack: +10
    Soldier
    Defeat 500 Enemy User
    Attack: +10
    Defense: +20
    General
    Defeat 1,000 Enemy User
    Attack: +13
    Defense: +1
    Berserker
    Defeat 5,000 Enemy User
    Attack: +26
    God of War
    Defeat 10,000 Enemy User
    Dagger resist: +1
    Jamadar resist: +1
    Sword resist: +1
    Over God
    Defeat 20,000 Enemy User
    Defense: +10
    Dagger resist: +1
    Sword resist: +1
    Mace resist: +1
    Axe resist: +1
    Overmind
    Defeat 30,000 Enemy User
    STR: +1
    HP: +2
    DEX: +1
    INT: +1
    MP: +1
    Attack: +13
    Can't Lose
    Succeed in Revenge x 100
    Attack: +20
    Revenger
    Succeed in Revenge x 500
    Defense: +70
    Hatred
    Succeed in Revenge x 1,000
    Attack: +20
    Defense: +40
    Fighter
    Win 100 times against another user at Moradon Duel
    HP: +4
    Attack: +4
    Undaunted
    Win 1,000 times against another user at Moradon Duel
    STR: +1
    HP: +3
    DEX: +1
    INT: +1
    MP: +1
    Arena Legend
    Win 10,000 times against another user at Moradon Duel
    STR: +9
    Ardream Veteran
    Defeat 100 Enemy Nation User at Ardream
    Glacier damage: +6
    Ardream's Revenger
    Succeed 100 times of Revenge in Ardream
    STR: +6
    Military Base Veteran
    Defeat Enemy Nation User 100 times in Ronarkland
    HP: +6
    Military Base Revenger
    Succeed 100 times of Revenge in Ronarkland
    DEX: +6
    Ronarkland Soldier
    Defeat Enemy Nation User 100 times in Ronarkland
    HP: +2
    Attack: +5
    Defense: +5
    Ronarkland Warrior
    Defeat Enemy Nation User 500 times in Ronarkland
    HP: +1
    DEX: +5
    Ronarkland Veteran
    Defeat Enemy Nation User 1,000 times in Ronarkland
    Attack: +20
    Defense: +10
    Ronarkland Legend
    Defeat Enemy Nation User 10,000 times in Ronarkland
    Attack: +33
    Ronarkland Revenger
    Succeed in Revenge 100 times in Ronarkland
    MP: +10
    Lunar War Soldier
    Defeat Nation User 100 times in Lunar War
    STR: +4
    HP: +1
    Lunar War Warrior
    Defeat Nation User 500 times in Lunar War
    STR: +5
    HP: +1
    Lunar War Veteran
    Defeat Nation User 1,000 times in Lunar War
    Attack: +15
    Defense: +15
    XP: +1%
    Lunar War Legend
    Defeat Nation User 10,000 times in Lunar War
    INT: +20
    Lunar War Revenger
    Succeed in Revenge 100 times in Lunar War
    DEX: +10
    Commander
    Win 100 times in Lunar War
    HP: +9
    Impregnable
    Win 100 times in Nation Guard Battle
    Defense: +90
    The Best
    Win First Place 10 times in Chaos War
    INT: +2
    MP: +4
    Most Popular
    Win First Palce 100 times in Chaos War
    STR: +5
    HP: +4
    2nd Best
    Win Second Place 10 times in Chaos War
    MP: +7
    3rd Best
    Win Third Place 10 times in Chaos War
    HP: +2
    DEX: +3
    Commander of Chaos
    30 or more kills in Chaos War
    Dagger resist: +1
    Jamadar resist: +1
    Gone Mad
    40 or more kills in Chaos War
    INT: +14
    For better or worse
    50 or more kills in Chaos War
    Attack: +13
    NP: +1
    King of Evil Spirit
    Win 100 times at Juraid War
    HP: +5
    INT: +10
    Crown Prince
    Cumulative Win x 10 at Castle Siege
    NP: +1
    XP: +1%
    King
    Cumulative Win x 50 at Castle Siege
    Attack: +20
    NP: +2
    Emperor
    Cumulative Win x 100 at Castle Siege
    NP: +2
    Spearhead
    At Lunar War, defeat #1, #2 Chief Guards
    Flame damage: +1
    Glacier damage: +3
    Lightning damage: +1
    Defeated Enemy General
    Defeat Chief Gate Keeper at Lunar War
    Flame damage: +1
    Glacier damage: +1
    Lightning damage: +3
    Darkness Shadow
    Complete Assassin Expert I and II
    HP: +4
    DEX: +6
    Hunter
    Complete Bulk of Silk
    Defense: +5
    Novice Hunter
    Defeat 100 Ronarkland Monster
    Attack: +3
    Noob
    Defeat 1,000 Ronarkland Monster
    HP: +2
    Novice Archer
    Defeat 5,000 Ronarkland Monster
    Attack: +5
    Defense: +5
    XP: +1%
    Chaser
    Defeat 10,000 Ronarkland Monster
    MP: +6
    XP: +2%
    Beast Master
    Defeat 30,000 Ronarkland Monster
    Glacier damage: +8
    Previous Life
    Do not get killed and defeat 100 monsters
    Attack: +2
    Defense: +4
    Proficient
    Do not get killed and defeat 1,000 monsters
    INT: +4
    Expert
    Do not get killed and defeat 10,000 monsters
    Defense: +40
    Four Phases of Life
    Do not get killed and defeat 100,000 monsters
    Attack: +10
    XP: +3%
    Immortal
    Do not get killed and defeat 1,000,000 monsters
    Attack: +25
    Defense: +5
    Sprout
    Defeat 1 Worm in Moradon
    HP: +1
    Street Smart
    Defeat [Chief] Hideous, [Chief] Bandiking in Moradon

    Ignorant
    Complete Wings in the Fog 1, and 2 in Moradon
    MP: +3
    Patience
    Defeat 100 Gliptodont
    STR: +1
    HP: +1
    Wolf Hunter
    Defeat 100 Dire Wolf, Shadow Seeker, Loup-garou, Lycan
    HP: +1
    DEX: +1
    Deadly Poisonus
    Defeat Pincer or Paralyzer or Scorpion
    DEX: +2
    Undead Hunter
    Defeat Rotten Eyes and Undying
    MP: +2
    All Resource Guardian
    Defeat 100 Shadow Cracks

    Troller
    (Castle) Defeat 200 Gaf or Troll

    Bony
    (Castle) Abandoned Bones I & II
    DEX: +3
    Goblin's Enemy
    (Castle) Complete Goblin Family I & II
    INT: +6
    MP: +2
    Awesome Expert
    (Castle) Defeat Aif x 2000
    STR: +1
    HP: +1
    DEX: +1
    INT: +2
    MP: +1
    Fireworks
    (Castle) Complete Extreme Pain, Flaming Heart
    Flame damage: +4
    Skull King
    (Castle) Defeat 200 Dragon Tooth Commander, 200 Dragon Tooth Skeleton
    HP: +5
    Orc's Enemy
    (Castle) Complete Orc Slayer I & II
    STR: +3
    Blitz
    Defeat 100 Storming Spostle in Eslant
    Lightning damage: +2
    Whipped
    Defeat 100 Balog in Eslant

    Flame
    Defeat 100 Apostle of Flames in Eslant
    Flame damage: +2
    Solid
    Defeat 200 Titan or Dark Stone in Eslant
    Defense: +20
    Chill
    Defeat 100 Apostle of Piercing Cold in Eslant
    Glacier damage: +2
    Blue Skin
    Defeat 100 each for Forwird or Forwird Warrior; Forwird Knight or Captain in Ronark Land Base
    Attack: +3
    Defense: +1
    Phantom
    Defeat 1000 Phantom in Desperation Abyss
    STR: +1
    XP: +1%
    Queen
    Complete Server of the Queen, For Knights in Hell Abyss
    STR: +2
    HP: +2
    Hate Spider
    Defeat 1000 Taratula in Delos Basement
    DEX: +1
    XP: +1%
    Underworld
    Complete Testing the King and Nightmare of Spiderman in Delos Basement
    HP: +1
    DEX: +3
    Archeologist
    Complete Draki's Trace and Tracks in Ronarkland
    INT: +10
    Guardian
    Complete Guardian of the Guardian Tower I and II in Ronarkland
    STR: +4
    Elder
    Complete Ronarkland Elder I and II in Ronarkland
    HP: +3
    INT: +4
    Task Expert
    Complete Work Procedure I and II in Ronarkland
    HP: +4
    INT: +2
    Dragon Slayer
    Defeat 100 Red Dragon in Ronarkland
    Flame damage: +9
    Most Speedy
    Destroy Chaos Stone 100 Times in Ronarkland
    Attack: +10
    Defense: +60
    Like a Dog
    Defeat 1000 Goloras in Ronarkland
    Flame damage: +5
    Orc Slayer
    Complete In Between the Arrow and Magic and In Between Two Swords in Ronarkland
    Sword resist: +2
    Bow resist: +1
    Not a Sinner
    Complete 4 Sins and 3 Sins in Ronarkland
    Flame resist: +2
    Glacier resist: +1
    Lightning resist: +2
    Magic resist: +1
    Curse resist: +2
    Poison resist: +2
    Chaos Domination
    Complete Monster born in Chaos I and II in Ronarkland
    Flame damage: +2
    Glacier damage: +3
    Lightning damage: +3
    Slayer
    Defeat Red Dragon and Dark Dragon
    HP: +2
    Jamadar resist: +1
    Juraid Knight
    Complete Juraid Monster III and Seed of Evil in Jurad
    Lightning damage: +6
    Magician
    Defeat Krowaz in Krowaz's Dominion
    Flame resist: +8
    Ursa
    Defeat 100 Minotaur in Krowaz's Dominion
    MP: +1
    XP: +1%
    Treasure Hunter
    Defeat 10 Treasure Boxes in Krowaz's Dominion
    DEX: +4
    Castle Destroyer
    Do not get killed and defeat Mammoth the 3rd to Crashergimmic
    Lightning damage: +7
    Kimera
    Do not get killed and defeat Purious
    DEX: +7
    NP: +1
    Saved from the Flame
    Do not get killed and defeat Mammoth the 3rd to Pluwitoon
    HP: +7
    NP: +1
    Fire Destroyer
    Do not get killed and defeat Mammoth the 3rd and [Destroyer of Flame] Pluwitoon
    STR: +7
    NP: +1
    Castle King
    Complete Immortal of Under the Castle I and II
    HP: +3
    NP: +1
    ¡Ú KNIGHT 11TH ¡Ú
    Complete 11th Anniversary Quest of Julian
    STR: +1
    DEX: +1
    INT: +2
    MP: +1
    2013 Thanksgiving
    Deliver 50 Moon pieces to Magipie Mother for the year 2013.
    HP: +4
    13Th Snow Knight
    13Th Snow Knight
    HP: +3
    Glacier damage: +2
    Glacier resist: +2
    Relic Protector
    Relic Protector
    XP: +5%
    Juraid Protector
    Win 150 times at Juraid War
    Defense: +100
     
  21. Thanks
    twostars got a reaction from Built4CZ in In-game titles   
    Trainee Soldier
    Defeat 100 Enemy User
    Attack: +10
    Soldier
    Defeat 500 Enemy User
    Attack: +10
    Defense: +20
    General
    Defeat 1,000 Enemy User
    Attack: +13
    Defense: +1
    Berserker
    Defeat 5,000 Enemy User
    Attack: +26
    God of War
    Defeat 10,000 Enemy User
    Dagger resist: +1
    Jamadar resist: +1
    Sword resist: +1
    Over God
    Defeat 20,000 Enemy User
    Defense: +10
    Dagger resist: +1
    Sword resist: +1
    Mace resist: +1
    Axe resist: +1
    Overmind
    Defeat 30,000 Enemy User
    STR: +1
    HP: +2
    DEX: +1
    INT: +1
    MP: +1
    Attack: +13
    Can't Lose
    Succeed in Revenge x 100
    Attack: +20
    Revenger
    Succeed in Revenge x 500
    Defense: +70
    Hatred
    Succeed in Revenge x 1,000
    Attack: +20
    Defense: +40
    Fighter
    Win 100 times against another user at Moradon Duel
    HP: +4
    Attack: +4
    Undaunted
    Win 1,000 times against another user at Moradon Duel
    STR: +1
    HP: +3
    DEX: +1
    INT: +1
    MP: +1
    Arena Legend
    Win 10,000 times against another user at Moradon Duel
    STR: +9
    Ardream Veteran
    Defeat 100 Enemy Nation User at Ardream
    Glacier damage: +6
    Ardream's Revenger
    Succeed 100 times of Revenge in Ardream
    STR: +6
    Military Base Veteran
    Defeat Enemy Nation User 100 times in Ronarkland
    HP: +6
    Military Base Revenger
    Succeed 100 times of Revenge in Ronarkland
    DEX: +6
    Ronarkland Soldier
    Defeat Enemy Nation User 100 times in Ronarkland
    HP: +2
    Attack: +5
    Defense: +5
    Ronarkland Warrior
    Defeat Enemy Nation User 500 times in Ronarkland
    HP: +1
    DEX: +5
    Ronarkland Veteran
    Defeat Enemy Nation User 1,000 times in Ronarkland
    Attack: +20
    Defense: +10
    Ronarkland Legend
    Defeat Enemy Nation User 10,000 times in Ronarkland
    Attack: +33
    Ronarkland Revenger
    Succeed in Revenge 100 times in Ronarkland
    MP: +10
    Lunar War Soldier
    Defeat Nation User 100 times in Lunar War
    STR: +4
    HP: +1
    Lunar War Warrior
    Defeat Nation User 500 times in Lunar War
    STR: +5
    HP: +1
    Lunar War Veteran
    Defeat Nation User 1,000 times in Lunar War
    Attack: +15
    Defense: +15
    XP: +1%
    Lunar War Legend
    Defeat Nation User 10,000 times in Lunar War
    INT: +20
    Lunar War Revenger
    Succeed in Revenge 100 times in Lunar War
    DEX: +10
    Commander
    Win 100 times in Lunar War
    HP: +9
    Impregnable
    Win 100 times in Nation Guard Battle
    Defense: +90
    The Best
    Win First Place 10 times in Chaos War
    INT: +2
    MP: +4
    Most Popular
    Win First Palce 100 times in Chaos War
    STR: +5
    HP: +4
    2nd Best
    Win Second Place 10 times in Chaos War
    MP: +7
    3rd Best
    Win Third Place 10 times in Chaos War
    HP: +2
    DEX: +3
    Commander of Chaos
    30 or more kills in Chaos War
    Dagger resist: +1
    Jamadar resist: +1
    Gone Mad
    40 or more kills in Chaos War
    INT: +14
    For better or worse
    50 or more kills in Chaos War
    Attack: +13
    NP: +1
    King of Evil Spirit
    Win 100 times at Juraid War
    HP: +5
    INT: +10
    Crown Prince
    Cumulative Win x 10 at Castle Siege
    NP: +1
    XP: +1%
    King
    Cumulative Win x 50 at Castle Siege
    Attack: +20
    NP: +2
    Emperor
    Cumulative Win x 100 at Castle Siege
    NP: +2
    Spearhead
    At Lunar War, defeat #1, #2 Chief Guards
    Flame damage: +1
    Glacier damage: +3
    Lightning damage: +1
    Defeated Enemy General
    Defeat Chief Gate Keeper at Lunar War
    Flame damage: +1
    Glacier damage: +1
    Lightning damage: +3
    Darkness Shadow
    Complete Assassin Expert I and II
    HP: +4
    DEX: +6
    Hunter
    Complete Bulk of Silk
    Defense: +5
    Novice Hunter
    Defeat 100 Ronarkland Monster
    Attack: +3
    Noob
    Defeat 1,000 Ronarkland Monster
    HP: +2
    Novice Archer
    Defeat 5,000 Ronarkland Monster
    Attack: +5
    Defense: +5
    XP: +1%
    Chaser
    Defeat 10,000 Ronarkland Monster
    MP: +6
    XP: +2%
    Beast Master
    Defeat 30,000 Ronarkland Monster
    Glacier damage: +8
    Previous Life
    Do not get killed and defeat 100 monsters
    Attack: +2
    Defense: +4
    Proficient
    Do not get killed and defeat 1,000 monsters
    INT: +4
    Expert
    Do not get killed and defeat 10,000 monsters
    Defense: +40
    Four Phases of Life
    Do not get killed and defeat 100,000 monsters
    Attack: +10
    XP: +3%
    Immortal
    Do not get killed and defeat 1,000,000 monsters
    Attack: +25
    Defense: +5
    Sprout
    Defeat 1 Worm in Moradon
    HP: +1
    Street Smart
    Defeat [Chief] Hideous, [Chief] Bandiking in Moradon

    Ignorant
    Complete Wings in the Fog 1, and 2 in Moradon
    MP: +3
    Patience
    Defeat 100 Gliptodont
    STR: +1
    HP: +1
    Wolf Hunter
    Defeat 100 Dire Wolf, Shadow Seeker, Loup-garou, Lycan
    HP: +1
    DEX: +1
    Deadly Poisonus
    Defeat Pincer or Paralyzer or Scorpion
    DEX: +2
    Undead Hunter
    Defeat Rotten Eyes and Undying
    MP: +2
    All Resource Guardian
    Defeat 100 Shadow Cracks

    Troller
    (Castle) Defeat 200 Gaf or Troll

    Bony
    (Castle) Abandoned Bones I & II
    DEX: +3
    Goblin's Enemy
    (Castle) Complete Goblin Family I & II
    INT: +6
    MP: +2
    Awesome Expert
    (Castle) Defeat Aif x 2000
    STR: +1
    HP: +1
    DEX: +1
    INT: +2
    MP: +1
    Fireworks
    (Castle) Complete Extreme Pain, Flaming Heart
    Flame damage: +4
    Skull King
    (Castle) Defeat 200 Dragon Tooth Commander, 200 Dragon Tooth Skeleton
    HP: +5
    Orc's Enemy
    (Castle) Complete Orc Slayer I & II
    STR: +3
    Blitz
    Defeat 100 Storming Spostle in Eslant
    Lightning damage: +2
    Whipped
    Defeat 100 Balog in Eslant

    Flame
    Defeat 100 Apostle of Flames in Eslant
    Flame damage: +2
    Solid
    Defeat 200 Titan or Dark Stone in Eslant
    Defense: +20
    Chill
    Defeat 100 Apostle of Piercing Cold in Eslant
    Glacier damage: +2
    Blue Skin
    Defeat 100 each for Forwird or Forwird Warrior; Forwird Knight or Captain in Ronark Land Base
    Attack: +3
    Defense: +1
    Phantom
    Defeat 1000 Phantom in Desperation Abyss
    STR: +1
    XP: +1%
    Queen
    Complete Server of the Queen, For Knights in Hell Abyss
    STR: +2
    HP: +2
    Hate Spider
    Defeat 1000 Taratula in Delos Basement
    DEX: +1
    XP: +1%
    Underworld
    Complete Testing the King and Nightmare of Spiderman in Delos Basement
    HP: +1
    DEX: +3
    Archeologist
    Complete Draki's Trace and Tracks in Ronarkland
    INT: +10
    Guardian
    Complete Guardian of the Guardian Tower I and II in Ronarkland
    STR: +4
    Elder
    Complete Ronarkland Elder I and II in Ronarkland
    HP: +3
    INT: +4
    Task Expert
    Complete Work Procedure I and II in Ronarkland
    HP: +4
    INT: +2
    Dragon Slayer
    Defeat 100 Red Dragon in Ronarkland
    Flame damage: +9
    Most Speedy
    Destroy Chaos Stone 100 Times in Ronarkland
    Attack: +10
    Defense: +60
    Like a Dog
    Defeat 1000 Goloras in Ronarkland
    Flame damage: +5
    Orc Slayer
    Complete In Between the Arrow and Magic and In Between Two Swords in Ronarkland
    Sword resist: +2
    Bow resist: +1
    Not a Sinner
    Complete 4 Sins and 3 Sins in Ronarkland
    Flame resist: +2
    Glacier resist: +1
    Lightning resist: +2
    Magic resist: +1
    Curse resist: +2
    Poison resist: +2
    Chaos Domination
    Complete Monster born in Chaos I and II in Ronarkland
    Flame damage: +2
    Glacier damage: +3
    Lightning damage: +3
    Slayer
    Defeat Red Dragon and Dark Dragon
    HP: +2
    Jamadar resist: +1
    Juraid Knight
    Complete Juraid Monster III and Seed of Evil in Jurad
    Lightning damage: +6
    Magician
    Defeat Krowaz in Krowaz's Dominion
    Flame resist: +8
    Ursa
    Defeat 100 Minotaur in Krowaz's Dominion
    MP: +1
    XP: +1%
    Treasure Hunter
    Defeat 10 Treasure Boxes in Krowaz's Dominion
    DEX: +4
    Castle Destroyer
    Do not get killed and defeat Mammoth the 3rd to Crashergimmic
    Lightning damage: +7
    Kimera
    Do not get killed and defeat Purious
    DEX: +7
    NP: +1
    Saved from the Flame
    Do not get killed and defeat Mammoth the 3rd to Pluwitoon
    HP: +7
    NP: +1
    Fire Destroyer
    Do not get killed and defeat Mammoth the 3rd and [Destroyer of Flame] Pluwitoon
    STR: +7
    NP: +1
    Castle King
    Complete Immortal of Under the Castle I and II
    HP: +3
    NP: +1
    ¡Ú KNIGHT 11TH ¡Ú
    Complete 11th Anniversary Quest of Julian
    STR: +1
    DEX: +1
    INT: +2
    MP: +1
    2013 Thanksgiving
    Deliver 50 Moon pieces to Magipie Mother for the year 2013.
    HP: +4
    13Th Snow Knight
    13Th Snow Knight
    HP: +3
    Glacier damage: +2
    Glacier resist: +2
    Relic Protector
    Relic Protector
    XP: +5%
    Juraid Protector
    Win 150 times at Juraid War
    Defense: +100
     
  22. Like
    twostars got a reaction from BulletClub in Patch notes (25/08/2017)   
    Changelog
    Fixed a bug causing rankings on the Ronark Land board to persist after a Nation Transfer. Undying now drops [Gold Coins] in Ronark Land. Raised the cost of [Unidentified Potions] from their quest-givers to 10M, and added a [Silver Bar] as reward to compensate the cost. Updated the login screen to match current USKO. Fixed [Opal Earrings] not being shown in the buying merchant search. Added the various [Apex Point vouchers] to the buying merchant search. To avoid cheesing the Kill the GM event, GMs are now immune to most Krowaz curses.
  23. Like
    twostars got a reaction from BulletClub in Patch notes (25/08/2017)   
    Changelog
    Fixed a bug causing rankings on the Ronark Land board to persist after a Nation Transfer. Undying now drops [Gold Coins] in Ronark Land. Raised the cost of [Unidentified Potions] from their quest-givers to 10M, and added a [Silver Bar] as reward to compensate the cost. Updated the login screen to match current USKO. Fixed [Opal Earrings] not being shown in the buying merchant search. Added the various [Apex Point vouchers] to the buying merchant search. To avoid cheesing the Kill the GM event, GMs are now immune to most Krowaz curses.
  24. Thanks
    twostars got a reaction from wezz in OTP Disable??   
    Please send me a PM with as many of your known account details as possible. Thankyou.
  25. Thanks
    twostars got a reaction from wezz in OTP Disable??   
    Please send me a PM with as many of your known account details as possible. Thankyou.
×