Thread: [637] Rewrite from Scratch - Solo.

Page 1 of 23 12311 ... LastLast
Results 1 to 10 of 225
  1. #1 [637] Rewrite from Scratch - Solo. 
    Registered Member netherfoam's Avatar
    Join Date
    May 2013
    Posts
    149
    Thanks given
    62
    Thanks received
    88
    Rep Power
    46
    Titan 637 Framework - From Scratch


    Codename: [Titan]
    Developers: [Netherfoam, Alva, Wildskiller]
    Total Lines: [44,514 = 37,632 + 276 + 2586 + 781 + 95 + 3144 ] @18 Feb 2015
    Total Lines: [54,835 = 49,121 + 1,795 + 834 + 938 + 1,519 + 369 + 123 + 136] @05 Oct 2015
    Framework: [637]
    Base: [Null]
    Source: [Open, https://github.com/netherfoam/Titan/
    Backend: [MySQL, SQLite support will return]
    Objectives: [Reliable, Well-Documented, Clean Object Oriented API]
    Wiki: http://titan.maxgamer.org

    If anyone's keen to join the test server and see the bots:

    This is a 637 framework which I've been writing for the past ~2-3 years or so on my holidays. I started with a Dementhium server and after a few weeks of progression I surrendered to the idiocy that was strewn across the Dementhium project. I, myself am finishing a degree in Software Engineering this year and decided to go on a programming adventure and write a 637 server using some packet information from other projects on nearby revisions. This thread is the product of my successes and what I've learned. In future I will hope to run the server for my community over at MaxGamer and release the framework, though without a few of the customized modules such as the bots or custom minigames.

    For now, I'm releasing the project available. If you want to try it out, Jenkins is available here: http://titan.maxgamer.org:8080. It requires some setup though, so you'll want the source, 637 cache and a client. All stuff which I plan to get around to!


    Features - Current:
    World:
    • Clipping
    • Custom Instances
    • Object loading
    • Static vs Dynamic Objects
    • Object option handling
    • Pathfinding
    • Deobfuscated Clip masks

    Players:
    • Appearances
    • Bots
    • Saving to YML
    • Easy API for setting/getting and making persistent data
    • Skill API implemented

    Interfaces:
    • Chat, Combat Styles, Emotes, Equipment, Exit, Friends, Graphics, House, Ignores, Inventory, Magic, Notes, Prayer, Quest, Settings, Sound side interfaces all implemented
    • Bank, Trade, Vendor primary interfaces implemented
    • WorldMap implemented

    Cache:
    • Cache reading/manipulation (Not writing)
    • Update server
    • Remove encrypted maps from memory

    LogonServer:
    • Handles login/logout requests
    • Forces ASync calls, speeding up server
    • Manages all profiles

    Mobs
    • Combat
    • Action Queue system for tasks
    • Update masks

    Script System
    • BeanShell for scripting object/npc/item use options
    • Scripts for Chopping, Mining, Attacking, Climbing, Banking so far

    Network
    • NIO for LogonServer and Client Handling
    • Leaving ability to support multiple revisions open through design


    Nobody likes walls of text, so without further adieu - Some media:

    A cheesy piece of music overlaid against our AI bots:


    Login working along with player masks:
    Attached image

    Basic Combat:
    Attached image

    Bots who also PvP:
    Attached image

    World Map:
    Attached image

    Friends:
    Attached image

    Notes:
    Attached image

    Vendors/Prices:
    Attached image

    Prayer - Protection spells non-functional:
    Attached image

    Range:
    Attached image

    Modern Magic:
    Attached image

    Ancients:
    Attached image

    Call it what you like, I call it in-game scripting. It lets you write and run code via the client:
    Attached image

    Bots may use a variety of combat attacks, like players:
    Attached image

    Partial cache editing and rewriting on-the-fly, encrypted XTEA regions with no key are no longer sent to the client; thus they can't crash the client if the player stands near or in them. Eg, Pest control:
    Attached image

    Dynamic maps, too. Done properly, none of the bullshizzle "find empty space" - Instead each instance has a WorldMap object attributed to managing it. Also works for multiple dimensions, will make player houses nicer to use:
    Attached image

    Spoiler for Old Thread:

    After being contacted by Tortas, I'm going to go into development with him and his team to build a community with the framework I've coded. You can find the thread over here.

    Hey guys, thought I'd show off a little bit as to what I've accomplished in the last few months of inconsistent work I've put in. I started with a Dementhium server, but after running into trouble after trouble with their design patterns (What design pattern?) I decided to start my own source.

    From scratch. That's right, Right Click -> New Project.

    Of course, I'm still taking a peek at Dementhium for how packets are structured and what they do, but beyond that I'm using Eclipse 639 as a reference. Oh and I've taken Dementhium's cache handling with a grain of salt and a few modifications (Not that dementhium wrote their own cache handling, it's clearly a slightly refactored rip).

    EDIT:
    Changelog:
    - Added Interface handling
    - Added player saving
    - Added SQLite Support
    - Using sockets now instead of NIO (Anyone want to help me out with NIO? I had some issues with the cache)
    - Cache sending works now (NIO was breaking when sending the large files)
    - Refactored everything into org.maxgamer.rs package
    - Removed unused debug
    - Added ActionQueue system for queuing tasks (Eg running, woodcutting, fletching, vial-filling type actions)
    - Added Player commands
    - Added Player chat
    - Tonnes of javadocs
    - Tonnes of bug fixes.

    So now I've got a release up. Primarily for learning, if you use it you have to give credit where credit is due. Here are the links I've got from DropBox, although they're still uploading as of right now so they may be a while.

    Server (Only): https://dl.dropboxusercontent.com/u/...cape/Blaze.rar
    Cache (Required for Server): https://dl.dropboxusercontent.com/u/...cape/cache.rar

    Client (Eclipse 639): https://dl.dropboxusercontent.com/u/...Eclipse639.rar

    Installation Instructions:
    #1 Download the server, unzip it somewhere.
    #2 If you do not have a 637 cache, download it from above, unzip it.
    #3 Place the cache in the root folder of the server (cache/ folder).
    #4 If you do not have a client, download the one above, unzip it
    #5 Open the server's run.bat file
    #6 Open the client's local.bat file
    #7 Login with admin admin for full permissions.

    You can use MySQL if you want but currently it just uses SQLite,see config/database.yml for details.

    Be careful, YML files break if you place tabs in them! Use four spaces instead.


    So what have I actually accomplished in 15,839 (Update: 17379) lines of code, 171 (Update: 207) source files and roughly 100-200 hours of programming and design time? Some might say it's not a lot, but without further adieu:


    Lobby Support, including Email handling, Last Seen and Last IP (Though, the screenshot doesn't show that)
    Attached image

    World List Support (Flags, Members, Location/Activity/Flag/Population) - So far I've run into issues with pinging the world (I'm not sure, possibly it's something that was removed from Eclipse639's client?)
    Attached image

    Multiplayer, with update masks for movement, teleportation, character models. Nothing fancy yet, but the framework is there
    Attached image

    Fully clipped A* pathfinding (Though I'm yet to test how efficient it is). I've had so much trouble with clipping, but it has paid off!
    Attached image

    And lastly, the shiniest (But absolutely not most difficult) jewel in my arsenal, custom maps. I generated this one in four lines of code:
    Attached image

    So, where am I heading to next? I'd like to secure up the network protocol so it's a bit safer to attacks. Possibly investigate using the walking system without ticks (Crazy, but I hear something about Hyperion removing ticks, at least partially?) which would make the server seem way more responsive.

    When I get to the end of the project, I'd like to do something like this guy http://www.rune-server.org/runescape...ided-bots.html with bots, hopefully with a nicer API.

    Ultimately though, I'm here to do this for fun and to write an API that is clean, modular and easy to comprehend for anyone who jumps straight into developing with it, compared to the some of the filthy code running around the forums. I'd like to even look into a plugin system (Being a Bukkit Developer, it's a force of habit) though possibly using a system that relies on plugins rather than has them as optional extras.

    Update:
    So bots + combat? Lumbridge is having an uprising:
    Attached image
    Last edited by netherfoam; 02-18-2015 at 04:35 PM. Reason: Updated thread
    Reply With Quote  
     


  2. #2  
    anInt69

    Max _'s Avatar
    Join Date
    Feb 2012
    Age
    26
    Posts
    1,801
    Thanks given
    426
    Thanks received
    727
    Rep Power
    599
    I saw 'Rewrite from sc' and I was thinking if this kid says he has written a source from scratch(Haven't seen your name around much) I was going to come and moan, but honestly really good work on this, keep at it, and keep us updated, I hate higher revisions but I'll subscribe to the thread to see more updates on this.
    Reply With Quote  
     

  3. Thankful user:


  4. #3  
    Registered Member netherfoam's Avatar
    Join Date
    May 2013
    Posts
    149
    Thanks given
    62
    Thanks received
    88
    Rep Power
    46
    Quote Originally Posted by Memphis Depay View Post
    Projects

    Goodluck tho
    Forgive me, but why that forum? This is a project for revision 637, and the linked forum is for revision 503. I'm confused as to where I should be putting my thread and why.

    Quote Originally Posted by MaxiiPad View Post
    I saw 'Rewrite from sc' and I was thinking if this kid says he has written a source from scratch(Haven't seen your name around much) I was going to come and moan, but honestly really good work on this, keep at it, and keep us updated, I hate higher revisions but I'll subscribe to the thread to see more updates on this.
    Hahaha, thanks. I'll be continuing work on it though my progress will be slow. I'm not one of those programmers who is happy with something that works, I'm happy with something that's crystal clear and above and beyond what it needs to function.

    Mostly bug fixes and cleanup today - Added Autosave, functional chat and handling for player commands.
    Reply With Quote  
     

  5. #4  
    Registered Member

    Join Date
    Oct 2012
    Posts
    1,461
    Thanks given
    560
    Thanks received
    323
    Rep Power
    122
    Good luck, love the 637 revision, I'm currently making my scratch 637 aswell

    “I have not failed. I've just found 10,000 ways that won't work.”
    ― Thomas A. Edison


    Attached image


    Reply With Quote  
     

  6. Thankful users:


  7. #5  
    Registered Member
    Join Date
    Jul 2014
    Posts
    158
    Thanks given
    24
    Thanks received
    21
    Rep Power
    39
    Quote Originally Posted by netherfoam View Post
    Forgive me, but why that forum? This is a project for revision 637, and the linked forum is for revision 503. I'm confused as to where I should be putting my thread and why.
    Because the forum is for 503+ revisions.
    Reply With Quote  
     

  8. Thankful user:


  9. #6  
    Registered Member netherfoam's Avatar
    Join Date
    May 2013
    Posts
    149
    Thanks given
    62
    Thanks received
    88
    Rep Power
    46
    Quote Originally Posted by Magnito View Post
    Good luck, love the 637 revision, I'm currently making my scratch 637 aswell
    How are you finding it? Making any progress? I'm having some trouble dreaming up how to structure interfaces and dementhium's naming of interface variables (windowId, childId, interfaceId are all incorrect in places, they're actually parentId, interfaceId, positionId in that order) making it tedious for me. Ohh and what client are you using?
    Reply With Quote  
     

  10. #7  
    Registered Member

    Join Date
    Oct 2012
    Posts
    1,461
    Thanks given
    560
    Thanks received
    323
    Rep Power
    122
    Quote Originally Posted by netherfoam View Post
    How are you finding it? Making any progress? I'm having some trouble dreaming up how to structure interfaces and dementhium's naming of interface variables (windowId, childId, interfaceId are all incorrect in places, they're actually parentId, interfaceId, positionId in that order) making it tedious for me. Ohh and what client are you using?
    Yh I've got a design and have gone passed login etc. I will probably not make a thread about it but you can pm me your skype and i can show you around.

    “I have not failed. I've just found 10,000 ways that won't work.”
    ― Thomas A. Edison


    Attached image


    Reply With Quote  
     

  11. #8  
    Registered Member netherfoam's Avatar
    Join Date
    May 2013
    Posts
    149
    Thanks given
    62
    Thanks received
    88
    Rep Power
    46
    Quote Originally Posted by Magnito View Post
    Yh I've got a design and have gone passed login etc. I will probably not make a thread about it but you can pm me your skype and i can show you around.
    Yeah sure I might post my source so far later tomorrow if I get it cleaned up to a good standard.
    Reply With Quote  
     

  12. #9  
    Registered Member netherfoam's Avatar
    Join Date
    May 2013
    Posts
    149
    Thanks given
    62
    Thanks received
    88
    Rep Power
    46
    Just uploaded my progress so far, as well as the client I'm using and 637 cache if anyone's interested in poking around it. Links on the front
    Reply With Quote  
     

  13. #10  
    Banned

    Join Date
    May 2012
    Posts
    1,018
    Thanks given
    52
    Thanks received
    237
    Rep Power
    0
    Do you plan on ever releasing this project, or is it strictly just for rewriting it from scratch. Like will content be added, or?
    Reply With Quote  
     

Page 1 of 23 12311 ... 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. QuarterX Base (Made From Scratch)
    By Mrquarter in forum Downloads
    Replies: 74
    Last Post: 07-30-2008, 03:23 PM
  2. Replies: 86
    Last Post: 02-29-2008, 05:31 PM
  3. Server source made from scratch, no pics
    By saviour in forum Downloads
    Replies: 14
    Last Post: 01-04-2008, 01:21 AM
  4. Nice Custom Base Made From Scratch!
    By Yorick in forum Downloads
    Replies: 8
    Last Post: 08-08-2007, 07:48 PM
Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •