Welcome, guest! Please login or register.

    * Shoutbox

    • SuperNativeZ: 2009SCAPE - Perfect Realistic Emulation. Play Runescape like it was in 2009. [link]
      February 18, 2020, 01:04:45 PM
    • SuperNativeZ: 2009SCAPE - Perfect Realistic Emulation. Play Runescape like it was in 2009. [link]
      February 18, 2020, 01:04:39 PM
    • SuperNativeZ: 2009SCAPE - Perfect Realistic Emulation. Play Runescape like it was in 2009. [link]
      February 18, 2020, 01:04:35 PM
    • ragnoroker: Join RuneGuild Today! BIG DROP PARTY IN 1 HOUR JOIN NOW - Newish Server 30+ Online all the time - Very Unique - Play now : [link]
      February 15, 2020, 04:16:38 PM
    • ragnoroker: Join RuneGuild Today! BIG DROP PARTY IN 1 HOUR JOIN NOW - Discord : [link]
      February 15, 2020, 04:15:41 PM
    • ragnoroker: Join RuneGuild Today! BIG DROP PARTY IN 1 HOUR JOIN NOW :) - [link]
      February 15, 2020, 04:14:50 PM
    • friendlyhelper: Meet up with old and new friends and explore what Runescape Classic could have been had development continued [link]
      February 15, 2020, 03:55:17 PM
    • friendlyhelper: Meet up with old and new friends and explore what Runescape Classic could have been had development continued [link]
      February 15, 2020, 03:49:34 PM
    • friendlyhelper: After well over 6 years of continuous runtime, RSCR still most actively developed RSC server  [link]
      February 15, 2020, 03:49:29 PM
    • SnowRSPS: Checkout Snowrsps.com - Snow317.org - Snowscape.net Open 24.7 [link] !Do not join Galaxy!
      February 15, 2020, 08:15:39 AM
    • SnowRSPS: Checkout Snowrsps.com - Snow317.org - Snowscape.net Open 24.7 [link] !Do not join Galaxy!
      February 15, 2020, 08:15:32 AM
    • SuperNativeZ: GALAXY #1 UNIQUE CUSTOM RSPS [link][link]
      February 14, 2020, 12:27:16 PM
    • SuperNativeZ: GALAXY #1 UNIQUE CUSTOM RSPS [link][link]
      February 14, 2020, 12:27:11 PM
    • SuperNativeZ: GALAXY #1 UNIQUE CUSTOM RSPS [link][link]
      February 14, 2020, 12:27:00 PM
    • ragnoroker: Looking for a new server? Join RuneGuild : [link] You won't be disappointed.
      February 14, 2020, 07:49:42 AM
    • ragnoroker: Looking for a new server? Join RuneGuild : [link] You won't be disappointed.
      February 14, 2020, 07:49:37 AM
    • ragnoroker: Looking for a new server? Join RuneGuild : [link] You won't be disappointed.
      February 14, 2020, 07:49:33 AM
    • Tonystark2830: https: //discord .gg /AHeVSMQ
      February 13, 2020, 11:35:21 AM
    • Tonystark2830:[link]
      February 13, 2020, 11:35:06 AM
    • Tonystark2830:[link] who ever has the most invites will be given money weekly! whats the catch? you must have over 15 invites for the week!  if you are tied with someone else at the end of the week you will both be awarded the same amount "no it will not be split"
      February 13, 2020, 11:34:42 AM

    Show Posts

    This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

    Topics - Lin

    Pages: [1]
    General Programming / Isosurface Tests (Open-source)
    « on: September 20, 2015, 03:25:58 AM »
    In an effort to better improve my game Codename::World, I've been researching new methods of extracting isosurfaces from data sets. I'm making my findings open-source. Some of the code is borrowed/inspired by existing implementations, but most is my own. It's not very optimized and it doesn't have much of a use outside of displaying data. It requires XNA 4.0 to build and run.

    GitHub Repository

    You can find a download under "Releases". Make sure to install the XNA 4.0 Redistributable: /en-us/download/?id=20914

    Currently Mostly Implemented Algorithms
    • 2D Uniform Dual Contouring
    • 2D Adaptive Dual Contouring
    • 3D Uniform Dual Contouring
    • 3D Adaptive Dual Contouring

    • The 2D implementations don't connect properly; they were my first tests with DC and have some issues, and the adaptive implementation doesn't have simplification
    • My QEF solver is hardly a QEF solver; Rather, it takes a set of offsets to apply to the mass point and find the one that has the lowest error, so do not use this as an example
    • The QEF solver is disabled in the 3D implementations but can be enabled (simplification needs some tweaks); sharp features will be lost and mesh will be deformed if the error tolerance is high without it

    Space - Adjust quality (ADC3D only)
    Tab - Switch algorithm
    1 - Toggle mesh visibility
    2 - Toggle outline/tree visiblity
    3 - Toggle solid/wireframe/both rasterization
    C - Toggle mouse locking


    General Questions / CPU Throttling Because of PSU Temperature
    « on: June 24, 2015, 12:05:08 AM »
    My CPU voltage is dropping from ~1.2V to 0.8V because the auxiliary temperature (AUXTIN in HWMonitor) skyrockets to 90 C and back down to 30-40 C randomly. It's a false reading and the voltage returns to normal after a couple seconds, but it's causing my CPU to be throttled and it's annoying. I know I can turn the throttling off, but I don't want to because I don't want to risk overheating my CPU if a real temperature reading is > 60C. Any advice?

    General Programming / RIP Google Code
    « on: May 15, 2015, 10:59:08 PM »
    Not that anyone used it, but I know there's lots of RS clients hosted on it. Apparently you only have until the end of 2016 to download them.


    So I know in C++, polymorphism has to be done with pointers. When you have an is-a relationship, variables of the parent type need to be pointers, then children (or parents) have to be allocated on the heap if they are to be kept outside the function. However, allocation on the heap for tons of objects is very costly, and when we're in the realm of thousands upon thousands of objects needing to be allocated and deallocated frequently, it becomes a poor choice for performance.

    However, I am in need of polymorphism. I need a way to store parent objects allocated on the stack that can also be child objects. Obviously because of how C++ works, this would compile but the parent's functions and variables would be used all the time and there are no child objects.

    Possible ideas:

    1. Store what type the object is inside of the object class and adjust the functions accordingly. Ugly, but it would work. Also it would require storing a pointer to additional data that extends a base class "Data", and here, general polymorphism would be allowed. This is an efficient solution because static casts don't cost anything, but again, it's pretty ugly. The other downside is it requires allocation on the heap and making copies of the object containing the additional data means additional cleanup is necessary when the class containing the parent objects is terminated.

    2. Borrowing similar ideas to #1, make the "Data" class contain a maximum of X bytes and use reinterpret_cast to determine how the data is interpreted, then use a vector to store the data. This wouldn't require any heap management, but god is it ugly. Plus I really dislike the minimum bytes allocated when only an extra byte might be needed.

    Any suggestions? Ideally, the code would be clean and elegant, the method wouldn't require heap management or individual allocations on the heap, no dynamic casting, and there would be no minimum size required for the additional data.

    Thank you. Any input is greatly appreciated. :)


    Music / Lavender Town
    « on: March 26, 2015, 01:05:28 AM »

    Games / Codename::World - Freeform sandbox dynamic voxel game
    « on: March 23, 2015, 05:55:53 AM »

    Codename::World is a project of mine that I've been dreaming of making for years. I posted a prototype of it ages ago.[/url] It's a freeform mesh-based voxel game and plans on making everything changeable by the player. In my opinion, the biggest downfall Minecraft, Terraria, Starbound, Grand Theft Auto, etc. is the limits they impose. In fact, that's my problem with all video games. There's too much useless visual content and world objects that vary only visually, and it's hard to get immersed in a paper world. I've spent the past few years devising a way to change all that.

    Check out the game's website!

    Implemented Features
    • Programmed in native C++ using raw DirectX 10
    • Dynamic mesh generation on CPU with infinite threading support and GPU using geometry shader
    • Infinite multi-threaded world loading
    • Adding/removing mesh
    • Blocky or smooth shading
    • Skylight
    • Point lights
    • Colored lighting
    • Day/night cycling
    • Light updating with mesh modifying

    Planned Major Playable Features (see below for more details on each)
    • Planets & finite generation
    • Devices
    • Organic DNA-based planetary life (plants & creatures)
    • Element-based materials
    • Weather
    • More REALLY cool stuff, but I want some stuff to be a surprise :)

    Planned Technical Features
    • Linux/Mac, OpenGL, and DirectX 9/12 support (IA pipeline stage and CPU-GPU commands are currently biggest bottlenecks. DirectX 12, OpenGL 5 and Mantle would GREATLY improve performance)
    • Eye-candy (fancy shaders)
    • Bigger optimizing on world loading and lighting
    • Variable world data formats (necessary with memory constraints)
    • World "models" (aka spots in the terrain that require sub-sampling)
    • Everything necessary for entities & animated models
    • Physics
    • Multiplayer
    • World saving
    • Camera targets & full input customization

    Things I'd Love to Implement but Would be Very Challenging, so We'll See One Day
    • Ship building & Space (flying to randomly-generated planets)
    • Level-of-detail terrain (very complicated with dynamic marching cubes)
    • Shrinking to travel and modify the world in a 1/16 scale

    Major Feature Details

    Planets & Finite Generation
    This is kind of self-explanatory, but worlds will consist of randomly generated planets. Everything inside of them will be different - how harsh the terrain is, what the terrain is made out of, how intense the skylight is (if there is a sun), the sky(light) color, the resources you can find inside of it, the type of organic life on the planet, the atmosphere and weather, and more. Until I (if I even) implement space and traveling to planets that way, you will be able to generate portals to planets and customize their "ingredients". This means you feed the portal or whatever objects, it breaks the objects into their materials, it breaks down the materials into their elements, and changes the planet's properties accordingly. Such properties include the amount of organic life on the planet, the type of organic life, the amounts of specific elements, how deep the caves will be, what kinds of resources will be obtainable, etc. I believe this will be the most important to keep the game fresh and exploring fun.

    A big chunk of the fun of the game is everything will run on little devices. Your tools, creatures, and whatever you want to build to get things done automatically or use logic. In fact, I've built a prototype of how it will work! There will be two different types of components - logic and outer-world. Logic components will do things like split an electrical signal in two, do math, etc... in the circuit. Outer-world components interact with the world outside the device. Feed signals to activate them, etc. If it's worth anything, I have quite a few credits in electrical engineering so this should make things logical and (hopefully) fun.

    Organic DNA-based planetary life (plants & creatures)
    One of my favorite parts of the game, plants and creatures will have their genes generated randomly, and their resulting mesh (and behavior) depends on those genes. So at a certain point in the game, you'll be able to capture an organism's DNA and modify it to clone your own. Let's look at plants and creatures individually:
    • Plants - Plants will be a part of the terrain and their mesh will be generated using sub-sampling. The materials in the mesh, how small the mesh is, and the way the mesh grows will all be determined by their genes. Obviously, plants will need specific resources to grow. Sunlight, water-type material (materials will all be randomly generated, so for clarification, read below)
    • Creatures - Creatures will follow a specific format and won't have to be like animals/humans as we know them. They can take on any shape, as their genes will decide (similar to plants). They will have different pieces (like limbs) connects together with a specific "life" element. Life elements are the heart and soul of a creature, and limbs will need these connected to function. The coolest part here is damaging a creature will actually break apart the mesh, so for example, shooting an enemy will actually create a hole. Breaking apart the "life" element will cause the limbs to break off completely. I plan on making creatures controlled by devices, so there will be pre-defined and growing behavior for enemies that runs off of customizable devices. I'd like to have damaging enemies tinker with their devices, so over time, hurting an enemy will break its logic and behavior so it will glitch out.

    Element-Based Materials
    The next biggest feature is the flexibility and randomly-generated of materials. This is what everything will be made out of. There will be a pre-defined long list of elements and their behaviors, how they act when interacted with, and how they change a material's appearance. While I'd love to make everything here extremely flexible here, but unfortunately, computers aren't advanced enough to make a billion different appearances. Instead, visually, elements will have traits broken down into the following: color, luminance, reflective (for fancy shaders down the road), bumpiness, hole-ness(will create spots and cavities on the texture), line-ness (will create lines on the texture), organic-ness, shading (adds a slightly random value to the color in various spots), and anything else I can come up with. I think this is flexible enough to create most materials we see in real life. Add combining elements, and materials get very interesting very quickly.

    There is a whole other category for behavior as well: structure (whether or not the material flows, and how quickly), solidity, temperature, opacity (how light travels through it), and other properties related to organisms.

    This one is kind of self-explanatory, but there will be dynamic planet-based weather. Clouds will generate over time and eventually cause rain once they are thick enough. Storms and other natural disasters will stem from this as well, since any extra challenge that you can build a defense for adds so much to a game.

    Your and My Concerns
    Okay, so there is a lot in the works, as you can see. You're probably thinking, "That feature list is huge. There's no way you'll ever finish this!" and you're right! The feature list is huge! But it's all things I've thought out over a long period of time. There's a reason this project was put on hiatus and has officially been in the works for well over a year with not a whole lot of content to show. Plus as I mentioned in the header, I dropped out of college to work on this project. Am I foolish for doing so? You decide, but this project is basically my life-long dream and I won't be abandoning it. I love working on it day-in and day-out.

    Now onto my concerns. My biggest fear is this game is too ahead of its time. It will take a lot of deep thinking and optimizing, but even then, it's likely you'll need a high-end computer to run it. The texture map for materials alone will probably huge, although I'm thinking I might be able to cut some corners here and append the texture as necessary when materials are created, and used 16-bit colors or something. I'm sure there are ways to make it work, definitely, but ways of making it work on low-end computers is unlikely. My goal to have creatures run off their own devices will be tricky as well, because this means their AI won't be programmed natively. I guess it all depends on the types of components available and how complex the circuits are. But again, this is content way down the line. Other than these things, I'm happy to say we're still in the clear.


    How Can You Help?
    I'm glad you asked! The biggest thing you can do is SHARE the project! Share videos, screenshots, forum posts, anything. Please. I desperately need people to spread this around. I will be launching a low-goal Kickstarter for this project one day, so please consider supporting me then too by donating and/or sharing. Thank you! :)


    Web Design/Development / Please Critique my First Website!
    « on: February 23, 2015, 03:09:53 AM »
    If you'd be so kind as to check out my first website, I'd greatly appreciate it. I wrote it from the ground up, using DreamWeaver only to write code. I learned SQL and PHP like last night, so I'm not entirely sure if the posting system is secure or not. Please try it out!

    My Website[/url][/b]



    Hi. I'm very, very brand new to web development, as in I started PHP and MySQL stuff for the first time yesterday. I'm developing a website from scratch that has dynamic posts that I want to have previews similar to YouTube video previews (the way they appear in your subscriptions, when you're browsing for videos, etc).

    Currently here's what it looks like (CSS is just temporary):

    Now I'm using the simplest form of a PHP template, where you create a simple HTML page, save it as a PHP document, and insert PHP for the dynamic stuff. Then in other pages, you define the dynamic content as variables and then include the template page. The problem with this is all of the dynamic content appears as strings and gets rid of syntax highlighting. For example, here's that page's code.

    Code: PHP
    1. <?php
    2.         $page_name='Updates';
    4.         require_once'php/posts.php';
    6.         $post_data= get_post(1);
    8.         $page_content='<h1>Updates</h1>
    9.                                 <p>There are '.$total_posts.' post(s). </p>
    10.                                 '.
    11.                                         preview_post(1)
    12.                                 .'
    13.                                 <p><a href="new_post.php">New Post</a></p>
    14.                                 ';
    16.         include'template.php';
    17. ?>

    Here is the code for generating the preview. It would be great if I could have something like "post_template.php" where it was like main template file, but I can't.

    Code: PHP
    1.         function preview_post($index)
    2.         {
    3.                 $data= get_post($index);
    4.                 if($data==null)
    5.                         return'Invalid post.';
    7.                 $post_title=$data['title'];
    8.                 $post_date=$data['date'];
    9.                 $post_data=$data['post'];
    11.                 return'
    12.                 <span>
    13.                         <div id="preview" style="border:3px solid #888888; background-color:#DDDDDD; overflow:auto;">
    14.                                 <img src="img/test.png" id="post_thumb" width="240" height="135" style="margin:10px; float:left; border:1px solid #202020;">
    15.                                 <div id="post_text" style="padding:1px 10px; margin:0 10px;">
    16.                                         <p><strong>'.$post_title.'</strong> by Lin on <u>'.$post_date.'</u></p>
    17.                                         <p>'.$post_data.'</p>
    18.                                 </div>
    19.                         </div>
    20.                 </span>';
    21.         }

    As you can see, it makes multiple templates kind of frustrating, especially when there's no syntax highlighting and you're constantly having to append a string. Any ideas on what to do?



    I've been working on a project that requires heavy usage of 3D arrays and were creating them on-the-fly. After profiling the code, I found almost all of the slowdowns were caused when allocating the third dimension of the array, and after switching to single-dimensional arrays the performance massively increased and the allocations were no longer an issue.

    Does anyone know specifically why this is? Since the issue was creating the arrays and not accessing them, the problem isn't related to cache misses. Here's the code used in both contexts:

    Code: C++
    1.         template<typename T>
    2.         inline T*** Create3DArray(int x, int y, int z)
    3.         {
    4.                 T*** a =new T**[x];
    5.                 for(int i =0; i < x; i++)
    6.                 {
    7.                         a[i]=new T*[y];
    8.                         for(int k =0; k < y; k++)
    9.                         {
    10.                                 a[i][k]=new T[z];
    11.                                 for(int j =0; j < z; j++)
    12.                                         a[i][k][j]=0;
    13.                         }
    14.                 }
    15.                 return a;
    16.         }

    Code: C++
    1. terrain_data =new MeshPoint[CHUNK_SIZE * CHUNK_SIZE * CHUNK_SIZE];

    Are allocations themselves just generally really slow? I can't think of a list of reasons as to why the performance increases would be so big. We're talking over 50% of the profiling samples coming from allocations and the program stalling to a small percentage and smooth sailing.



    Off-Topic (Spam) / The Real Tom
    « on: February 06, 2015, 04:18:35 PM »

    General Questions / New to the Gym
    « on: December 20, 2014, 01:59:56 PM »
    First off, I'm completely aware of the fitness thread. Thanks.

    Just some back story stuff, a couple days ago I purchased gym membership to continue losing fat and start building muscle. Over the past 6 months, I've lost just over 40 lbs and am at 160 now, with a body fat % of 18.8. I talked to a guy there, and my goal should be roughly 8%. Rather than do cardio to lose it all, he said to do lots of muscle-building/strength exercises so the fat eventually burns itself off.

    So I thought OK, I've lifted weights for about two years in high school so I think I can manage keeping track of a full-body workout (not that I can afford the outrageous price of a personal trainer anyways). But last night I went and exercised for the first time, following a routine I found that splits full body into 5 days, but it didn't go as I had planned. Initially, it started off alright, since it was all benching and free-weight exercises, but then it started listing machine exercises and there had to have been like 20 different machines and lots of them.

    When I went, it was very late and there was almost nobody there, so I couldn't just watch someone else or ask. Specifically, "cable crossovers". I found the machines, but the right side didn't have the right (or same) part you grab onto. It looked like the bar you use for pulling the weight down to your legs when sitting (I don't know the name). Then I moved onto dips, but couldn't find dipping machines, but probably just didn't look hard enough. I prefer not to use a bench.

    Another problem I had is adjusting the inclined benches. I saw little knobs and such to adjust them, but the bench seemed pretty resistive and I didn't want to mess anything up so I just worked with it somewhat too low.

    Anyways, I'd like to get some advice from people who were brand new to the gym at one point, had never used anything other than free weights, and can't afford a personal trainer. It's very intimidating to go during the day when I'm assuming there are lots of other people, so I'd prefer to go at night when I not only feel better but get to experiment without feeling like I'm keeping anyone waiting.

    Also, is it common to see people at the gym who look like they have no idea what they're doing? It seems like everyone who attends is crazy fit and knows what they're doing. But everyone has to start somewhere I guess.



    RS Client Hacking / Item, Object, and NPC Viewers
    « on: December 15, 2014, 12:11:57 AM »
    Hi. I've been spending the past couple of days adding onto my cache editor API and writing plugins for it. Now granted, none of this was really all that hard, and it only views (for now), but I wanted to make a topic separate from the suite's topic to allow people to comment directly on these plugins. One way of thinking of it is these are 3 separate tools, so please don't hurt me for wanting to flood this section with my contributions. :D

    NOTE: These plugins require API 1.3 to properly work. If you are just downloading these and adding onto a pre-1.3 suite download, you must make sure the 4 Tao library files (Tao.OpenGl.DLL, Tao.OpenGl.XML, Tao.Platform.Windows.DLL, and Tao.Platform.Windows.XML) are in the same directory as the Cache Editor API.DLL 1.3 file! If this is too confusing, just download the latest suite with all of the plugins and whatnot situated Here.

    Overall Features
    Every plugin comes with a property editor and model viewer. Modifying the model-editing properties will cause the model to update, so although you cannot save any of your modifications, this can come in handy. Some of the properties in the items and objects are unnamed.

    Item Viewer
    This plugin allows you to view all of the items by selecting "obj.dat" in the "Config" sub-archive. It features the item's sprite, its model that's automatically rotated as the sprite is, and locking the sprite to the model viewer. This can be useful if you're trying to get the best sprite for your item. Modifying the properties will update the sprite and/or model as necessary. The unnamed variables in here are all related to equipment. I didn't take the time to figure out exactly what was what and rather than give them lame names like "male_0", I left them as-is.

    Object Viewer
    This plugin allows you to view all of the objects by selecting "loc.dat" in the "config" sub-archive. Unique to this besides property and model viewing is a simple feature that finds the object type for you. For example, 10 is the most common, but some objects use 0, or 22, and rather than guess, it goes ahead and loops to 23 to try and find the correct type that displays a model.

    NPC Viewer
    Everything is (hopefully) properly named in terms of the properties, although "SettingsID" and "VarBitIndex" are unclear. It's worth noting the SubNPCIDs is ignored for the model, due to the children requiring "VarBit" data. I haven't looked into this enough to implement it properly. This can be useful for getting the animations for an NPC (as if dumps didn't exist).

    Source on GitHub


    This is a project I've been working on for a couple days, and I think it will massively improve the RSPS scene. I was looking around for cache editors, and it seems Tom's cache suite is still what's popular. As I made a quick little archive extractor, it occurred to me I should make all the tools for viewing and editing files plugins, so we can have a giant integrated community-based clean cache editor capable of editing everything - maps, interfaces, configurations, etc..

    I wrote this in C#. There are three parts to the project - the shell (what you run), the cache API (what does all the dirty work), and the plugins (the features). The API is very powerful, allowing you to load, rename, edit, and even add new files to archives and sub-archives with just a couple lines of code.

    Update List
    • Several additions to the cache API, including being able to load items, objects, NPCs, and "VarBit"
    • A model-viewer control has been added to the API to allow model viewing integration in any plugin with ease
    • Some other minor changes to the underlying client-ripped rendering system (still lots of work to do here)
    • "ModelViewer" plugin now uses the API's model viewer control. It is recommended you delete the Tao DLLs in the Plugins folder!
    • With the addition of the model viewer plugin, the Tao library files are now required to be in the same directory as the API library file. Either download the entire suite or manually place them there if you're just adding your own plugins
    • The source is no longer included in the download. Visit the GitHub page down below for it.

    • Added drag/drop file importing/adding
    • Batch file exporting
    • Fixed the search feature not working for regular archives
    • Added the client's model and rasterizer class
    • Added a model viewer (wasd to move, left click to rotate, wheel to zoom)

    How To Use
    To start, open your cache. This is a folder with "main_file_cache.dat" and "main_file_cache.idx0-4". Upon doing so, the tree on the left should populate with archives and sub-archives. Sub-archives, commonly known as "Jagex Archives", are archives with a different file format that uses BZip2 compression. Regular archives use GZip compression. You don't have to worry about any of this, as the API deals with compression for you.

    To add a file, go to File > New when you have either an archive, file, or sub-archive parent node selected. Adding a file with a sub-archive file or sub-archive parent node will create a sub-archive file. Note that if you create a new file with the archive 0 node selected ("Sub-Archives") or try to add a file to sub-archive 0, the program will work but those archives and files specifically won't.

    On the right you see import/export data, which allow importing/exporting a file if any of the loaded plugins support importing/exporting. Note these always take the uncompressed files, so don't compress them before-hand. You can also rename files if they're part of sub-archives, but note you must add your name to files.txt for it to show when you open your cache down the road.

    When you modify a regular archive file by importing data or creating a new file, you don't have to save. It's automatic. With sub-archives, however, you must manually save. Do this by saving all archives or when the file/node you have selected is part of a sub-archive, save the current one.

    To view the plugins that are installed, go to Plugins > Summary. If a plugin allows configuring, the "Configure" button will be enabled. Here you can also view what criteria has to be met for a plugin to be loaded, and what I/O operations it allows you to do.

    Plugin Pack 1.3
    -ImageViewer - Views and allows the basic importing and exporting of 317-format images.
    -HexEditor - A basic hex editor. Note editing with it doesn't work. It's really only there to allow importing/exporting raw data.
    -PaletteViewer - Views the palette an image archive uses.
    -ModelViewer - Views and allows the basic importing and exporting of 317-format models. Note if OpenGL fails to initialize, software rendering is enabled. To disable it (or enable it), configure it from the plugin summary window.
    -ItemViewer - Views 317-format items.
    -ObjectViewer - Views 317-format objects.
    -NPCViewer - Views 317-format NPCs.
    -VarBitViewer - Views 317-format VarBit. (This was just a quick test to see everything VarBit contained)
    -MidiPlayer - Allows playing and exporting of midi files. This was made by Bobster from Rune-Server and I included it in the pack.

    Shell Features
    • Plugins (obviously)
    • Naming of archives and individual files (through Files.txt)
    • Search files with filtering - Searching allows for named files containing the searched text and/or unnamed files matching the whole text. If a sub-archive file hasn't been manually named, as in we only have its hash code (since file name storing is lossy), the search will bring it up anyways.
    • Map files display their coordinates (only works for I believe terrain files at the moment)
    • Importing, exporting, creating, and renaming files
    • Drag and drop (see below)
    • Batch export (file dumping)

    Cache API Features
    • Reading and writing archives (automatic GZip compressing/decompressing)
    • Reading and writing sub-archives (automatic BZip compressing/decompressing)
    • Client image loading, bitmap generating, PNG importing (excellent color quantization, thanks to the nQuant library)
    • Creating files for both archives and sub-archives
    • Contains a copy of the client's model and rasterizer class (mostly undocumented/copy-pasted)
    • Contains almost fully-documented Item, Object, and NPC definition files. Also has VarBit...
    • An easy-to-use model viewer control that will render any Model supplied and allow basic viewing interaction

    The Plugin API
    Creating and adding plugins is very simple. Start a new Class Library project in VS, add the API to the references, and create a class that extends IPlugin. Copy the properties and functions, fill them out, and compile the project. Adding the plugin is as easy as copying the DLL file to the "Plugins" folder.

    Plugins have specific criteria that have to be met (called Classifications in the IPlugin class) in order for the plugin to show up when you're viewing files, to not only keep things neat but also to prevent you from accidentally breaking stuff. By default, it makes the plugin appear for everything (blank properties), but you can limit it by requiring specific file names, extensions, sub-archives, and/or archives.

    The FileExtensions and StaticFileExtensions properties control how data can be imported/exported. StaticFileExtensions is what's used in the plugin's summary, and FileExtensions are used for the actual import/export dialog box. See the ImageViewer for an example on a plugin's I/O features can be enabled and disabled depending on the success of its operations.

    Drag and Drop
    Dragging and dropping files into the file browser and plugin window is supported. When a file is dropped into the plugin window, it will act simply as if the user imported the file; dropping files into the file browser is where things get more complicated. If a single file is dropped into a file node, the node's data is replaced by the plugin that would handle the dropped file. If a single file is dropped into a sub-archive header node, the file is added to the archive, or it replaces the existing file if it exists (node name must match the dropped file name). If a single file is dropped into an archive header node, the file is added to the archive. If multiple files are dragged into a file node, sub-archive header node, or archive header node, the files are added into the archive. Like the single-file drop into the sub-archive header, multiple files will attempt to check if the file exists first.

    (click to show/hide)

    The API is undocumented, but you should be able to figure out how to write plugins if you just look at the sample ones. To get plugins loading when debugging, you'll have to change the debug directories in the PluginContainer class in the Cache Editor project. I used Visual Studio 2013 for this.

    • The file tree shows the compressed sizes for regular archive files to improve speed. When you import a raw file, it uses the uncompressed size.
    • The API image importer requires imported images are 32-bit, so if yours is not, it is made transparent automatically (white becomes transparent). Save your images in a 32-bit ARGB format to avoid this.
    • There are some serious time-consuming operations. Saving all the archives isn't fast, as rewriting each archive requires extracting and recompressing all the files in it to optimize the file size (it can be optimized but I'm lazy). Importing large images is extremely costly, primarily because of the color quantization (if you don't know what that means, it's finding the 256-color palette that gives the image the best quality. This is necessary because this is how the client reads images).
    • You can't create image groups with my image viewer plugin. If you would like one that could, develop it further or make your own! :)
    • This is still an early program that hasn't been fully tested with every situation, but it has passed every test so far. Use with caution and back up your cache frequently.

    Visit This Project on GitHub


    Game Development / Pokemon Multiplayer Red
    « on: June 04, 2014, 11:53:27 PM »
    Hi. This is a game I've been working on for the past couple months. It's not done, nor is it multiplayer yet, but it's making great progress. It's a nearly-perfect clone Pokemon Red/Blue, but it will be co-opable, so the original game but with a friend. :D

    It's written in C++ and uses SFML, so it's cross-platform. All of the data comes from the original games, so it's incredibly accurate. Here is some media.

    It has a full scripting system, using my own quick command-based language for it. It allows for blocking operations, like getting input from the player. No multi-threading. The compiler for it is also written in C++ (In the repository under PMRS)

    Source Code
    Blog (Mainly for to-do lists and feature discussions)
    My Twitter (For frequent updates)
    My YouTube Channel[/url] (For feature demonstrations)

    One day I will be looking for people to help with scripting. A lot of them will be automatically generated and dumped, but all of the events will be remade by hand.


    It's not done, but it's a wip. Had an idea for fast player lookups and spent a day doing tons of micro-optimizations. Here are 5001 players in a 256x256 area simultaneously talking. Still needs more optimization. Without talking it's ~5ms. I want it 0, like RR's.

    This isn't going to be anything. I just wanted to see how fast I get could make a server as a programming exercise and to test an idea. Will be completely open source when I'm done, but note the source looks really bad and a lot of things are really dumb. For example, update masks are stored in an array, separate from players, to allow for faster lookups and more frequent cache hits. That alone gave me ~3ms. Stuff like that is what allows this to be as fast as it is. AMD FX-8350 @ 4.00GHz, updating running on one thread.


    This has been updated 6 times.
    Hey everyone. Here's an interface editor I've been working on. It loads everything from the cache, but doesn't pack, so it's up to you to pack it manually or cut the loading from the cache and make it load the generated file.

    -Left click - Select/drag a control, or emulate the clicking action in emulator mode
    -Right click - Context menu (Delete/Duplicate)
    -Middle click - Show hovering interface triggered in emulator mode

    The emulator supports full config editing and displaying, along with certain mouse-interactions (Button clicking). Here's some screenshots and videos taken over the course of development (Thanks to Demetri for the GIFs).

    Made in C#, meaning you must have the .NET Framework 2.0+ to run (Or WINE). If you downloaded it before the date of this topic edit, or the update count has increased, download it again as there was something I forgot about or added.

    Please let me know of any bugs you find. I am aware of the "UNKNOWN TYPE 8", and I have an idea of what it is, but it's not important. Oh, and after the release, I noticed the client doesn't ever load the offsetX/Y values, so it doesn't write them either. I'd highly recommend you don't use these.

    Update 8/4/10
    Fixed some bugs with adding things.

    Update 9/21/10
    Fixed the Model button.

    Update 9/26/10
    Fixed some stuff.
    Also fixed another bug on the second update.


    RS Client Hacking / RuneScape 2 Interface Maker
    « on: January 10, 2010, 05:08:09 AM »
    I advice everyone to stop using this and switch to my interface editor. It may be harder to use but more flexible than you can imagine.

    Alright. Something convinced me to finish this to be usable by the public, so I decided to do just that and release it. I need money right now so it nags you to donate, but only once-per-launch (Note that everything is still usable and it's completely free. I'd just appreciate a thanks for my effort :P). Sorry it can't check if you've already donated, so just ignore it when it comes up.

    OK! Here's a list of features.
    -A completely new user-friendly design
    -Full transparency and the support of several items with still run-time drawing
    -A checkerboard signifying transparency
    -Easy to edit properties of items
    -Many new things for you to add
    -Auto-adding images to your client
    -An update checker
    -Preferences that save to customize some things to your liking
    -A better file system that allows you to save an interface, including all images, to one file to easy share
    -The common edit features (Cut, Copy, Paste, Delete)
    -A child-parent system for things that would include scroll bars
    -Safety editing, which prompts you to save your work when it could be lost
    -A better code generator, which steals the design of software installations and makes the process much easier
    -Easily setting images to controls that use them. Simply browse for the image and it's set
    -The use of the client fonts, which now include the Bold font as the last one lacked it
    -Barely modified versions of original methods so you don't have to worry about not having any

    Phew! Now, here's some screenshots.

    Known Bugs:
    Ya, these things.
    -For some reason, if you change the image of a button, it seems to gets scaled. I'm unaware of why this happens, but the image is fine in-game
    -(Not really a bug, but) Some of the items, such as models, don't appear in the interface where you place them. I'm not a client expert so this probably won't be fixed for a while

    So, the long-anticipated download... This will not always be updated from the topic. Use the Update feature from inside the program to get the latest version always!

    Enjoy. Here's a list of credits:
    -Me (Pretty much everything)
    -Galkon (I looked at his code snippets to see how scrolling panels worked
    -Tonic (The AddModel method)
    -Jayden/JaydenD12 (Testing every version of it, since the very beginning. Thanks bro!)

    Oh! Finally! Be sure you add the methods it tells you to, as they're all slightly customized!


    NOTE: This program HAS been updated. I added the ability to continue adding the folder you selected, even if it wasn't the right one, and added auto detection which tries to find your JDK folder in the most common locations for each drive in your computer at the time.

    Well, I've noticed SO many people have trouble on this part. That's why I made this. You browse for your JDK folder and click Apply! Done!


    So you don't fudge up, it checks if you've selected the right folder. It does this by checking if the folder starts with "jdk", and it has some of the files in the bin folder that the JDK comes with.

    If you've already got your JDK set, it will prompt you to continue. If you do, it'll just write it to the line.

    At the bottom textboxes, you can see what was loaded, and what will be saved. This is good if you don't trust it.

    So, the newest download...
    DOWNLOAD HERE[/url][/size]

    Oh and finally, you need the .NET Framework 2.0 or higher (Meaning atleast Windows 2000 SP4). I developed it using C# .NET 2005/2008.

    If you're totally lost on what to do, follow these instructions.

    1. Open the program.
    2. Click on the "Search" button.
    3. Navigate to your "JDK" folder. It starts at "C:\Program Files\Java". Basically, go there and click the folder that starts with "jdk".
    4. If you did it right, it won't give you any warnings.
    5. Click the "Apply" button. If done right, it should say "Successfully changed!" :D

    Congratulations!! You did it!!!

    Note: You must have permissions to edit your environment variables. For example, if you're using Windows Vista, you must run under an Administrator account.


    Downloads / Back to Basics
    « on: May 30, 2009, 12:16:22 AM »
    I'm done with RuneScape Private Servers and didn't want to continue working on this. I was losing support and got bored. I didn't want to host it either, but I knew that if I released it, servers would be based off of it. I would like that.

    Feel free to use this as a base with proper credits.

    -Pking everywhere, except in the Bank, Training Room, and places with flags around them.
    -Anti null protection I slipped in
    -Many bugs DeltaScape had. Combat bugs, addItem bugs, addSkillXP bugs, and many more fixed.
    -Dragon smithing
    -Barrows NPCs with correct combat. Guthans heals, Dharok hits low on lower HP, Ahrims uses Ancients (no change), Verac doesn't blow hits like crazy and hits through prayer, Karil hits (no real change), and Torag hits (no real change). They all drop their according Barrows parts, and an ancient staff for some reason. This was improved DeltaScape Barrows. The NPCs are on the east side of the bank.
    -Smithing Box for smithing xp. It's a special item. You'll learn if you use.
    -Working Christmas Cracker/item on player. The one that already existed didn't work and need a fixup.
    -Tea stall - Varying money amounts depending on your level.
    -Max stat level is 126
    -Summoning from the old servers
    -Snowing weather (::snowon, ::snowoff)
    -Construction Skill (Mine. You don't leech. K?)
    -Safe Gem, and Safe Gem making
    -Some shops
    -Fishing in the Varrock Fountain, for money or gold. Note that you need a lobster pot to catch lobsters, and a higher amount of money.
    -Weapon specials. No Abbysal Whip special though. It has it, but it does nothing but the GFX.
    -Fayrg bones for prayer. Using on altar to.
    -Cooking lobsters on fire flawlessly.
    -Much more that I forgot.

    Client features
    -The terrain is white, for snow. I know this was liked by many players.
    -In the stat menu, the Slayer and Farming skill have been completely replaced with the Construction and Summoning skill.
    -Word censor, loading from a list too. You just have to make it filter what the other players say.
    -A GUI I never bothered adding, and that sucked.
    -Some item recolors and renames. Custom items: Safe gem, Uncharged safe gem, Strange gem, Gem shards, Dragon bar, Smithing box.
    -No model loading, which saves loading time.
    -No custom sprites.

    I recommend you use the client. All others I've tried crash when PKing or don't display hit splashes, hp bars, or text when pking.

    Making a safe gem
    Search the hay bale for 4 strange gems. It's random each time. Smash them using a hammer, and use them on the furnace (Make sure you have 4 or they'll just disappear and you'll get a message saying you need more). Use the gem on the Mysterious Glow to charge it.

    To raise skills
    Construction: Type ::build, and ::home to get home.
    Hay bale - Defense
    Door - Strength
    Dummy - Attack
    Teleport to Varrock - Magic
    Tea Stall - Thieving
    Lobster cooking on fire - Cooking
    Fishing in Varrock Fountain - Fishing
    Summoning stuff - Summoning
    Burning logs from Construction Store - Firemaking

    Fixing bows
    Figure it out. Something I purposely left in there. A little shitty anti-leech I suppose.

    Well, it's a good server. No leeched shit you normally see. Infact, it's very nice in my opinion. Too bad I never released as a server to play.

    Download server:
    Download client:  (ZIP File; Claimed to not work for some.)
    Download client (RAR file, recommended):

    If you have questions, leave a reply and I might answer it. No pictures because I'm lazy.

    Note: You leech, you die. That or you're just living with the shame to know that you fail and therefore shall no longer be permitted to live.


    Trash Can / Download List
    « on: May 23, 2009, 07:31:03 PM »

    Pages: [1]
    Copyright © 2017 MoparScape. All rights reserved.
    Powered by SMFPacks SEO Pro Mod |
    SimplePortal 2.3.5 © 2008-2012, SimplePortal