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.
Messages - Lin
For anyone who was following the progress of this, I finished my research and implemented Manifold Dual Contouring. It's the only public implementation of it and you can check out the source code in the same repo.
« on: September 25, 2015, 12:03:42 AM »
Sorry, had a derp moment. You're right, I don't know what I was thinking.Class-level function/variable definitions, static or not, need to have the class before them, so
« on: September 24, 2015, 08:11:24 PM »
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.
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
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
i think the presence of sini on the team immediately stalled out the projectSini isn't the only one that's joined to work on this
In C/C++, you have to familiar yourself with two things: declaring and defining. You can declare something as many times as you want, but you can only define it once. Header files (typically) declare objects, whereas cpp files define them. A declaration is simply letting the compiler know that this variable, class, function, or whatever it may be exists. A definition is the meat of it, in a sense, and in some cases you can just define a function without declaring it. In order to reference variables, call functions, declare as custom types or classes, etc, they have to be declared beforehand. So if you have function B, which calls function A, then function A has to come before function B.
That works for two functions, but what if you have 3? What if function A calls B, which calls C, which calls A? Then how do you order them? Well, that's where declarations come in. You'd simply declare the outline of the function and then create the bodies somewhere after them, like this:
Now, what happens when you create a bunch of functions that do some math for you that you want to use in 3 different files? Rather than copying and pasting the declarations before you use them in each file, you can use #include to literally include a file containing them for you, so it's like the compiler copied and pasted them for you.
Finally, what happens when you declare something and have multiple definitions, or no definition at all? Then you get a linker error, and they can be very tricky to fix if you aren't careful and are just starting out. In the first case, the compiler doesn't know which definition to use, and in the second one, it can't find the definition, so it doesn't know what you're trying to do.
Note that you should look into #pragma once and header guards, which will greatly improve compiling speed and help deal with linker errors. If you don't use them and you declare and define classes in a header file, you'll have to declare the class outside, so now you have something like C file which includes B file which includes A file. It's better to just use header guards.
Of course, this is all just basic convention. There's function inlining, there are templates, you don't even need header files or different cpp files, and more, but that's enough to get you started.
« on: September 08, 2015, 03:45:15 PM »
Last night I finally got nearly the full version of adaptive dual contouring working:
From this step, it's implementing a proper QEF solver (right now I use a set of pre-calculated points and use the one with the smallest error), mesh simplification (comes with proper QEF solving), some optimizations, editing mesh, chunk-based level of detail, and more. Everything is coming along guys, don't worry. Real life issues are getting in the way but I'm still giving this my all.
As someone who can strongly relate to sini's experience, I don't blame him for going down the route he chose. Getting your hands dirty with RuneScape emulation is really fun. It's a really tough programming challenge to write a server that holds thousands of players, in addition to writing the tons of systems that go into it, especially the content stage. Then you've got client hacking, and there's something unusually rewarding about creating tools that turn someone else's mysterious data into something you can view and even edit. That was my motive behind writing my cache editor. I also really liked the idea of having people write plugins so instead of having just one person writing a massive editor for tons of different data types, people would be able to pitch in. Unfortunately, as with most RS-based projects, this vision didn't become a reality despite all of the effort I put forth. In fact, I don't think a single person uses my cache editor, but it was a fun project and learning experience. At the end of the day, that's what all RuneScape projects are - fun and for the experience. Unfortunately, almost all of us want something more than that. We all like attention, difficult challenges, constantly growing, feeling like we're a part of something big, and yes, even financial rewards. When writing something like a private server from scratch, or a cache editor, you're in it for the fun and challenge mostly. There is no point to actually writing a server that supports 2000 players because you'll never get even a quarter of that, and so you can't help but feel you're wasting your time.
The point I'm trying to make is sort of the only real motive behind RS emulation and whatnot is personal interest, and when that's gone, there isn't much to keep you here. The people here pushing for the community server are probably just looking for an excuse to get back into RuneScape without the grind, fee, etc. I know that's why I wanted to see it happen. If everyone wants the official server to get done so badly, then it's going to take a community effort. Tasking one, or even two people with writing an entire server and content system is a huge undertaking. The best option is probably to start with a pre-written base that doesn't handle like garbage and has a scripting system. The server doesn't need to hold even 100 players, but if it ever gets to that point, then you can start looking at other options. Until then, writing a new base over and over, even though it gets better and better, isn't going to get anyone anywhere but the guy behind it away from the project.
Lin, that actually sounds pretty rough. How long have you had the car?About a year and a half. The timing belt broke after about maybe six months and the starter gave out probably a couple months after that. The clutch has been sticking from the heat since I bought it.
Think of it this way - you can buy a new car that you'll have to make payments on for a very long time in addition to making a down payment, or you can buy a pretty nice used car for $3000 and put the money you're making into improvements and maintenance. My used car was $1500 and I've since had to replace all the tires, the battery, the starter, the timing belt (we got very lucky with this not costing the entire engine), the back brakes, and soon, stuff related to the clutch, but just because the pedal sticks in the heat. Total, I've spent maybe a total of under $3k (including labor), and put about 500 miles a week on it without problems. Looking back, I paid way too much for the car and simply saving to pay for a better car would've resulted in having a much better vehicle, but the point is if you pay $3000 for a used car, you probably won't have nearly the amount of issues I did and can put even more money into improving it and having something probably just as reliable as a new car.
Yep, I can second that. Construction was my favorite too. Even grinding levels was fun, and it was always stressful dropping 500k on a room, only wondering if you might want to move it later. In regards to the official server, I'd probably be willing to implement it if you provided your code, since I already told sini I'm helping with skills.Wow, this looks amazing! It's been ages since I messed with construction, so this really takes me back.I love construction and hope that some day it might be complete enough in a server to actually be feasible to play. House parties were my shit back in the 500/600 era and construction was my second or third level 99 on real RS.Will you be adding this to the official server or is it a side project?I originally started it as part of the official server a long time ago, and you can see v0.X on the old repo. (doesn't have the grouped hotspot support like the curtains/rugs and has lots more bugs)
« on: August 17, 2015, 07:08:27 PM »
Thank you very much everyone for the positive feedback. It's very encouraging. I'll get around to releasing wallpapers soon, but in the meantime, here's a progress update. I don't have anything to show because I've been having some real life problems, but I've been doing lots of researching and toying with ways to improve the performance. It's at the point where I'm seriously considering redoing the core and water physics, maybe getting rid of colored lights, and considering what direction to take textures if the level of detail thing works out.
I really don't want to start the whole world processing stage over again, but after looking at Seed of Andromeda and other voxel engines, it inspired me to re-think what's possible. I've taken a lot of shortcuts to get where I am now, but they're not paying off. Recently some of the optimizations I've made have made draining the ocean almost possible without lag, but without redoing water physics entirely, water doesn't settle quick enough to prevent lag and upwards of 60K+ updates. These kinds of things need to be multi-threaded, which they aren't, and just everything sort of needs to be cleaned up. Cache hits are pretty trash after I discovered I could profile those, and I've thought of ways to really save on memory that would require the core to be ripped out anyways.
The whole reason this is even a concern is because it's going to inhibit gameplay. I've planned for fast physics and massive destruction, but unless the game runs extremely well, neither of those can be implemented and that's going to really ruin some of the game. So, I'm considering creating a test project using cube voxels where I implement a massive world and level-of-detail and once it's done, build it into C::W. Thanks all for the support so far and hopefully this won't take long, and more importantly, it will pay off.
TL;DR - I'm possibly redoing the core to allow for massive render distances, faster world loading, better water physics, and overall better performance.
« on: August 15, 2015, 09:24:26 PM »