Thread: Lost City (225 Emulation)

Page 3 of 7 FirstFirst 12345 ... LastLast
Results 21 to 30 of 69
  1. #21  
    Registered Member
    rebecca's Avatar
    Join Date
    Aug 2017
    Posts
    1,071
    Thanks given
    862
    Thanks received
    915
    Rep Power
    5000
    Quote Originally Posted by blj_ View Post
    Hey hope progress is going well Was wondering if this would be of some help? https://www.rune-server.ee/runescape...ml#post5744763
    rune1 was a 317 with (now outdated) 194-200+ cache data in it
    Reply With Quote  
     

  2. Thankful users:


  3. #22  
    Forum Moderator




    Join Date
    Oct 2013
    Posts
    53
    Thanks given
    99
    Thanks received
    164
    Rep Power
    692
    Quote Originally Posted by blj_ View Post
    Hey hope progress is going well Was wondering if this would be of some help? https://www.rune-server.ee/runescape...ml#post5744763
    Thanks for thinking of the project things are going well and I’ll be writing up an update to post soon!

    Rune1 was largely a recreation, they were missing a fair bit of original data so they worked with what they had. As Rebecca mentioned, it was a 317 server/client with sprites/data brought in from 194/289/319. They may have even needed to remake some things. I’m not sure if they had any data that wasn’t already out there. Their project was cool, but this is 100% original data and I’m not really missing anything

    I may look through their cache one day just to see what data they used/made, I am curious
    Reply With Quote  
     

  4. Thankful users:


  5. #23  
    Forum Moderator




    Join Date
    Oct 2013
    Posts
    53
    Thanks given
    99
    Thanks received
    164
    Rep Power
    692
    Hey everyone, I know it's been a couple weeks! The project is still going and I hope to have some new screenshots soon. Just wanted to post a quick update:

    I started a discord (DM me here or on Discord Pazaz#0001 for an invite) to post more frequent updates/generate discussions, although I still plan on updating this thread at least every week/every other week so nothing is ephemeral.

    Most of my recent changes have been around organizing the cache files and being able to repack edited definitions. I'm able to edit NPCs and items (soon objects) by generating a new npc/obj.dat + idx, and sending the updated files to the client. I've also organized a ton more - even as far as giving autogenerated names to model IDs and letting definitions use those names. This isn't so I can make custom content, but rather to organize data so I can use it in a scripting system.
    Pretty much every NPC/Item/Object ID has been mapped to an internal name if they had a display name to reference - then I further renamed some entries manually.

    I can also track content changes right in git if I make any fixes. Server-only fields (equipment bonuses, combat stats, wander range, ...) can go into these definitions and not have to be sent to the client, too.
    Spoiler for Item definition:

    Attached image


    Spoiler for NPC definition:

    Attached image
    (note the wander field that actually gets used when determining NPC movements - defaults to a 5 tile radius if not defined)


    As for the scripting system, I'm working on figuring out a good solution for that will support delays and queues. I'll go into more detail once I've worked something out. Expect plenty of screenshots then

    The current thought is either make an interpreter for a RuneScript-like language (easy to control the flow and pause execution):
    Spoiler for RuneScript-like:

    Attached image

    Or use something like Lua and handle delays with coroutine.yield()/coroutine.resume()
    Reply With Quote  
     

  6. Thankful users:


  7. #24  
    Registered Member
    Michael P's Avatar
    Join Date
    Dec 2013
    Posts
    1,264
    Thanks given
    499
    Thanks received
    321
    Rep Power
    674
    Quote Originally Posted by Pazaz View Post
    Hey everyone, I know it's been a couple weeks! The project is still going and I hope to have some new screenshots soon. Just wanted to post a quick update:

    I started a discord (DM me here or on Discord Pazaz#0001 for an invite) to post more frequent updates/generate discussions, although I still plan on updating this thread at least every week/every other week so nothing is ephemeral.

    Most of my recent changes have been around organizing the cache files and being able to repack edited definitions. I'm able to edit NPCs and items (soon objects) by generating a new npc/obj.dat + idx, and sending the updated files to the client. I've also organized a ton more - even as far as giving autogenerated names to model IDs and letting definitions use those names. This isn't so I can make custom content, but rather to organize data so I can use it in a scripting system.
    Pretty much every NPC/Item/Object ID has been mapped to an internal name if they had a display name to reference - then I further renamed some entries manually.

    I can also track content changes right in git if I make any fixes. Server-only fields (equipment bonuses, combat stats, wander range, ...) can go into these definitions and not have to be sent to the client, too.
    Spoiler for Item definition:

    Attached image


    Spoiler for NPC definition:

    Attached image
    (note the wander field that actually gets used when determining NPC movements - defaults to a 5 tile radius if not defined)


    As for the scripting system, I'm working on figuring out a good solution for that will support delays and queues. I'll go into more detail once I've worked something out. Expect plenty of screenshots then

    The current thought is either make an interpreter for a RuneScript-like language (easy to control the flow and pause execution):
    Spoiler for RuneScript-like:

    Attached image

    Or use something like Lua and handle delays with coroutine.yield()/coroutine.resume()
    I would highly recommend using an existing language for your scripts. Creating a custom one would be a huge chunk of time and ultimately not worth the effort. I would suggest using something like kotlin scripts (kts), especially if the server is already written in kotlin.
    Reply With Quote  
     

  8. Thankful user:


  9. #25  
    Forum Moderator




    Join Date
    Oct 2013
    Posts
    53
    Thanks given
    99
    Thanks received
    164
    Rep Power
    692
    Quote Originally Posted by Michael P View Post
    I would highly recommend using an existing language for your scripts. Creating a custom one would be a huge chunk of time and ultimately not worth the effort. I would suggest using something like kotlin scripts (kts), especially if the server is already written in kotlin.
    I can’t interop with Kotlin/Java, my server isn’t in Java/KT, but that’s a good suggestion and something I tried to consider I understand it could take longer but this is just for fun!

    I’ve tried to keep it simple; The “language” as it is now is more of a regex parser around keywords and symbols that change the instruction pointer, “stack,” and variables inside the “heap”. I can trigger/delay/cancel functions, conditionally branch, and edit variables. It doesn’t need to do much more than that. It also has very low overhead.
    I just needed some way to control the flow basically, and for anything complex (i.e. bitfields) I can bind it to functions in my server so I don’t need to replicate syntax features etc in there, within reason. I don’t want to make it barebones but I also don’t need everything either

    It triggers a script instance when a matching packet trigger comes in, and I have a delay “function” exposed that stops interpreting there and waits X ticks before continuing interpreting at the last point. The script/event queue can be cancelled outright depending on the types of other scripts in the queue
    Reply With Quote  
     

  10. #26  
    Registered Member
    Michael P's Avatar
    Join Date
    Dec 2013
    Posts
    1,264
    Thanks given
    499
    Thanks received
    321
    Rep Power
    674
    Quote Originally Posted by Pazaz View Post
    I can’t interop with Kotlin/Java, my server isn’t in Java/KT, but that’s a good suggestion and something I tried to consider I understand it could take longer but this is just for fun!

    I’ve tried to keep it simple; The “language” as it is now is more of a regex parser around keywords and symbols that change the instruction pointer, “stack,” and variables inside the “heap”. I can trigger/delay/cancel functions, conditionally branch, and edit variables. It doesn’t need to do much more than that. It also has very low overhead.
    I just needed some way to control the flow basically, and for anything complex (i.e. bitfields) I can bind it to functions in my server so I don’t need to replicate syntax features etc in there, within reason. I don’t want to make it barebones but I also don’t need everything either

    It triggers a script instance when a matching packet trigger comes in, and I have a delay “function” exposed that stops interpreting there and waits X ticks before continuing interpreting at the last point. The script/event queue can be cancelled outright depending on the types of other scripts in the queue
    Oh interesting. What is your server written in?
    Reply With Quote  
     

  11. #27  
    Donator

    .css's Avatar
    Join Date
    Dec 2018
    Age
    29
    Posts
    579
    Thanks given
    89
    Thanks received
    270
    Rep Power
    351
    Would be nice to see an open source custom scripting language.

    loving the progress paz, great work!
    Reply With Quote  
     

  12. Thankful user:


  13. #28  
    Forum Moderator




    Join Date
    Oct 2013
    Posts
    53
    Thanks given
    99
    Thanks received
    164
    Rep Power
    692
    Quote Originally Posted by Michael P View Post
    Oh interesting. What is your server written in?
    JavaScript/NodeJS, which is a big reason for me needing to come up with a solution that lets me control script execution completely. I can't spawn a second thread, so I have to rely on keeping my main thread as free as possible. I'm also trying to avoid callback hell (trying to handle script delays/timers in JavaScript). Having the content separate also makes it easier to change languages if I run into a hard limitation one day, but I think a smart design can go far

    Update 1: Scripting progress

    The scripting language is coming along nicely I posted this on my discord a few days ago now, but I can completely lock a player (script execution + input) via `p_delay` for N ticks:

    Spoiler for Example:


    Spoiler for Test script:
    Attached image


    It stops all interaction behaviors and doesn't execute any scripts until the time is up. I don't have timers or other types of queues implemented yet so it doesn't handle anything with that.

    Update 2: Site registration

    Finished templating the registration page + steps! It connects to a database and logging into the world uses the same database.

    Spoiler for Video:


    I'll update the main post's sections when I get a chance -- plenty to touch on. I've been working on organizing data lately. One interesting finding: the 194 cache has a _lot_ of internal names for objects that I would like to match and use. That'll make a quality map editor possible one day, ideally you should be able to search for "roof_greyslate" or "shiphull_cannonopen" etc. in a window just as Jagex can do. I wrote something to match the different model order between 194 and 225 (we have 204 now so I should repeat the process to get more matches) and from there let me match the object definitions' order, so I'll have that done at some point.
    Reply With Quote  
     

  14. Thankful user:


  15. #29  
    Registered Member
    Michael P's Avatar
    Join Date
    Dec 2013
    Posts
    1,264
    Thanks given
    499
    Thanks received
    321
    Rep Power
    674
    Quote Originally Posted by Pazaz View Post
    JavaScript/NodeJS, which is a big reason for me needing to come up with a solution that lets me control script execution completely. I can't spawn a second thread, so I have to rely on keeping my main thread as free as possible. I'm also trying to avoid callback hell (trying to handle script delays/timers in JavaScript). Having the content separate also makes it easier to change languages if I run into a hard limitation one day, but I think a smart design can go far

    Update 1: Scripting progress

    The scripting language is coming along nicely I posted this on my discord a few days ago now, but I can completely lock a player (script execution + input) via `p_delay` for N ticks:

    Spoiler for Example:


    Spoiler for Test script:
    Attached image


    It stops all interaction behaviors and doesn't execute any scripts until the time is up. I don't have timers or other types of queues implemented yet so it doesn't handle anything with that.

    Update 2: Site registration

    Finished templating the registration page + steps! It connects to a database and logging into the world uses the same database.

    Spoiler for Video:


    I'll update the main post's sections when I get a chance -- plenty to touch on. I've been working on organizing data lately. One interesting finding: the 194 cache has a _lot_ of internal names for objects that I would like to match and use. That'll make a quality map editor possible one day, ideally you should be able to search for "roof_greyslate" or "shiphull_cannonopen" etc. in a window just as Jagex can do. I wrote something to match the different model order between 194 and 225 (we have 204 now so I should repeat the process to get more matches) and from there let me match the object definitions' order, so I'll have that done at some point.
    Interesting. What language are you using for the scripts?
    Reply With Quote  
     

  16. #30  
    Chemist

    Advocatus's Avatar
    Join Date
    Dec 2009
    Posts
    2,622
    Thanks given
    201
    Thanks received
    813
    Rep Power
    1462
    I sent an invite on discord, I am interested in an invite to the main group.
    Quote Originally Posted by Pazaz View Post
    One interesting finding: the 194 cache has a _lot_ of internal names for objects that I would like to match and use. That'll make a quality map editor possible one day, ideally you should be able to search for "roof_greyslate" or "shiphull_cannonopen" etc. in a window just as Jagex can do. I wrote something to match the different model order between 194 and 225 (we have 204 now so I should repeat the process to get more matches) and from there let me match the object definitions' order, so I'll have that done at some point.
    Yep, those names are a really awesome part of the definitions. I remember looking through them all and being like "This is cool".

    There are 1587 models used in 204 and 1567 in 194 for objects/locs. Out of those models, there are 1177 that are not identical from when I checked. That was mostly relayed to the triangle/priority information. I think there were 188 remaining left after that which were not "exactly" the same. These are just my notes so those numbers might be slightly off.
    Quote Originally Posted by blakeman8192 View Post
    Quitting is the only true failure.
    Reply With Quote  
     

  17. Thankful users:


Page 3 of 7 FirstFirst 12345 ... LastLast

Thread Information
Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)


User Tag List

Similar Threads

  1. Lost City Shop ID
    By Aza in forum Requests
    Replies: 0
    Last Post: 07-23-2009, 03:00 AM
  2. BattleScape Isle "Lost City" Quest
    By Palidino in forum Show-off
    Replies: 32
    Last Post: 04-23-2009, 08:55 PM
  3. THE REAL LOST CITY! Vid ftw
    By Dust R I P in forum Show-off
    Replies: 86
    Last Post: 04-19-2009, 08:25 PM
  4. Coords for Lost City/Zanaris
    By coder sal in forum Help
    Replies: 4
    Last Post: 01-19-2009, 09:49 PM
  5. Lost City Quest
    By Zachyboo in forum Tutorials
    Replies: 19
    Last Post: 06-08-2008, 05:44 PM
Tags for this Thread

View Tag Cloud

Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •