Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Thought's on a VB6 rewrite?


Rob Janes
 Share

Recommended Posts

**Some thought's on a VB6 rewrite.**

**The Concept**: A core structural rewrite of Eclipse from the ground up using two key components of Eclipse Origins. The packet system and the tile engine.

**The Need:** While my team's game (Aloria Online) works great our own modification of Eclipse, it would truly benefit from a system that designed for more fast paced gameplay. Rewriting the engine from the ground up would take some time, but using the existing packet system and tile engine, we could easily create an engine that blows its predecessors out of the water. Admittedly, I'm considering this out of personal greed. I want Aloria to succeed, and while I love Eclipse, the more I realize that I am rewriting so much code to improve performance, I would have benefited from a more ideal engine from the get go. It would be two steps backwards for the time being. I'm not saying I'm going to do this or not, but it's a thought that I want to put on paper and gauge feedback. In reality I think you'll see us get Aloria Online to a stable enough client that it can be enjoyed and expanded upon between now and the implimentation of a new engine.

**The Pros:**

Fresh Code, not put together by several individuals over a decade. I'm not putting down the hard work people like Robin have put into the game, however I think the engine would benefit from a near-complete rewrite. As it gets developed, everyone in the community would have a very intimate knowledge of the code. It would also be faster. Much faster. With better handling techniques and understanding of how MMO network traffic should be balanced, we'll see vast vast improvements to performance.

**The Cons:**

Eclipse Origins has some very decent features, it's well organized, has a great packet buffer system and E03.0 (jcsnider's client) has a very stable tile engine. The fundamental parts of a good engine are there but that's about all that would be ported over. Things like the item system, events, combat, NPCs, would all be created from the ground up. This takes time. We aren't talking a one month project but rather a project that takes 2-4 months to have anything minimally tangible.

**What would be different?**

1\. Seemless Mapping - As the TileView begins to detect that the screen should no longer move, it will begin caching the next map and displaying it to give the sensation of seemless mapping.

2\. Player Location - Player locations would be stored as a pixel position rather than a tile position.

3\. Player Movement - Data is sent from the client when the player 1\. Changes Direction 2\. Starts Moving 3\. Stops Moving. It will also send the speed at which the player is moving. This command would go from Sending Client > Server > Map or MapCache. Unlike the existing movement where the players position is sent every time they change from tile. This method mimics large scale MMOs by setting the players direction, speed and movement and having individual clients doing the work rather than the server.

4\. SQL Database - Rather than using Flat-File systems like we are currently using, we would use a SQL database for storing data. Maybe?

5\. Offline Editors - Rather than editing data on the fly, you'd use offline editors to edit the game's data, then sync it with the live server.

Just a thought, I'm not commiting to doing this yet, but seeing what people think.
Link to comment
Share on other sites

umm other my sql.. xD sounds ok not everyones a fan xD .. but i do agree the engine needs a rewrite so its 1 type of style and clean… xD less errors.

your thinking 4+ months? that orginaly too years to get this far xD. well if you think its possable lead them to it. this sounds like a great chance to move forward.
Link to comment
Share on other sites

I think that this should not be done.

I think the main reason one is the question of, why VB6? This community has wanted to move away from using VB6 for a while now, and despite this desire, it still hasn't. Plenty of people have started porting to a different language, Java, C#, VB.NET, C++, and yet, all have failed. They either gave up after realizing how big the project was, or just didn't have enough time to finish. Both of those reasons are perfectly reasonable and understandable. No one here works on the engine all day, everyone has things to do.

However, recently, people have been focusing on micro-optimizing VB6, even though the language lacks the ability to use new techniques. Things like spawning and managing multiple threads can't be done simply in VB6\. A project like this, while well-intentioned, would ultimately be another optimization for a language that can't be optimized any further. Yes, I am aware that there are parts in the networking that are redundant, but that does not warrant a full rewrite of the engine.

Continuing to support a VB6 version with updates as massive as full rewrites of the engine would effectively eliminate the opportunity to move to a more modern language. Not only that, but if a VB6 rewrite is done, it would need to be ported later on when VB6 is unable to run on Windows. This may be next year, in 2 years, or in 10\. But that day is coming, and if you are given the chance to start anew, start with something that will survive.

You should focus on rewriting in a more modern language. There would also need to be multiple people helping you. As an example, take Eclipse.NET. From what I understand, it is an "official" version. Right now, however, it appears to be closed-source (or maybe partially open-source). Whatever the case, it's being written by a single person. Writing an MMO engine on your own is difficult, as is porting one.

However, people seem to be avoiding working as a team on a single project. The influx of custom versions only attests to that. I have not seen a single "team" working on a custom version. Part of the reason has been stated in multiple threads, many times. Working with multiple people leads to a non-standardized structure, poor readability, and in general, poorly coded features. But that is far from the truth. It is very possible, especially in this community, to have multiple developers work on a single project and still maintain the structure and clarity that can be achieved by a single developer. To create structured code, you need to have a structured process. The "hodgepodge" of tutorials is only that because there is no single coding standard. People use whatever they are more comfortable with, rather than with the style of the rest of the engine.

I'll admit that this post has appeared to have started to veer away from the original topic; a rewrite in VB6 with appropriate optimizations. There is a reason why I am bringing up the topic of developers. Because, before any major change like an engine rewrite can occur which requires multiple developers - and you will not get away with doing it on your own - standards need to be established. Benchmarks and targets need to be set. Coding best practices must be documented, published, and available to all. I am not referring to the best practices set forth in general C++/C#/VB/Java programming, but rather a set of guidelines that all aspects of the engine should follow. And more importantly, the code should be available to all. Anyone should be able to work on the official engine. Whether it is to add a minimap, or pets, as long as it meets the standards set out by the community, they should be able to contribute.

Everyone has a different style. Everyone has a different idea. Optimizations can be found everywhere. Challenges will need to be overcome. However, I truly believe that an engine created out of the teamwork of the entire community, rather than a small subset of pre-elected developers, will be able to flourish and grow.
Link to comment
Share on other sites

Yeah, it's the only way to fix most of the deep-rooted Mirage problems that all the Eclipse engines have at the moment. Also I'm not quite sure about the SQL stuff, not many people are really looking to go through the complexity of SQL and just want to dive straight into making a game really.
Link to comment
Share on other sites

ya i think it would. think bout it like this. if engine had 1 standard write. clean code. debuged and with current features. maybe evendx7 and dx8 support + what rob said above, if this was done Right. then custom verisions could be made to follow such order and less problems transferring code and more support.
Link to comment
Share on other sites

> ya i think it would. think bout it like this. if engine had 1 standard write. clean code. debuged and with current features. maybe evendx7 and dx8 support + what rob said above, if this was done Right. then custom verisions could be made to follow such order and less problems transferring code and more support.

SQL isn't that bad, it's just setting up a server for it that's a pain.

You could set it up to use a built in SQL server as an alternative.

That plus tools to export data to migrate tools to a real server at a later date would be a good idea imo.
Link to comment
Share on other sites

> Yeah, it's the only way to fix most of the deep-rooted Mirage problems that all the Eclipse engines have at the moment. Also I'm not quite sure about the SQL stuff, not many people are really looking to go through the complexity of SQL and just want to dive straight into making a game really.

http://www.microsoft.com/sqlserver/en/us/editions/2012-editions/compact.aspx

Have you been living under a rock or something? If you can write a conditional expression then you can write SQL in VB6; it's stupid easy. If people migrated to more modern language versions it'd be even easier, trivial even. Hell, if someone wanted to move to .NET I'd even write them a library to use for LINQ to SQL.

> also not many people are looking for Pixel-based movement. But it is a good idea to create a new engine, more power to ya! :3

Tile based movement has been dead for how long outside of RTS's? C'mon, guys. Break away from these long-dead or dying practices!
Link to comment
Share on other sites

> [http://www.microsoft…ns/compact.aspx](http://www.microsoft.com/sqlserver/en/us/editions/2012-editions/compact.aspx)
>
> Have you been living under a rock or something? If you can write a conditional expression then you can write SQL in VB6; it's stupid easy. If people migrated to more modern language versions it'd be even easier, trivial even. Hell, if someone wanted to move to .NET I'd even write them a library to use for LINQ to SQL.

I think he was referring to the fact that game makers do not want to set up a sql database. Which is very true. Could be wrong.
Link to comment
Share on other sites

> I think he was referring to the fact that game makers do not want to set up a sql database. Which is very true. Could be wrong.

That's exactly why I linked to SQL Server Compact. It's a very versatile, lightweight, embedded solution that anyone can use.
Link to comment
Share on other sites

> Have you been living under a rock or something? If you can write a conditional expression then you can write SQL in VB6; it's stupid easy. If people migrated to more modern language versions it'd be even easier, trivial even. Hell, if someone wanted to move to .NET I'd even write them a library to use for LINQ to SQL.

No. You don't understand. What you're assuming is that everyone already has a basic programming understanding. A lot of people want to try things out, experiment and such. I know when I tried VbGore all those years ago I came here because Eclipse let me drive straight in without going through all that SQL nonsense.

Anyone _is_ anyone. That mean's that you can't go ahead and generalise everyone's ability.
Link to comment
Share on other sites

> No. You don't understand. What you're assuming is that everyone already has a basic programming understanding. A lot of people want to try things out, experiment and such. I know when I tried VbGore all those years ago I came here because Eclipse let me drive straight in without going through all that SQL nonsense.
>
> Anyone _is_ anyone. That mean's that you can't go ahead and generalise everyone's ability.

Same here. That sql thingy in VBGore was only annoying…
Link to comment
Share on other sites

Maybe something like SQLite as a database would be better? That way if people want to upgrade to something like mysql later it's not hard hard to make the change. But for people who don't or can't run a SQL server they can still use the default SQLite without the need for setting up a server.
Link to comment
Share on other sites

Every single one of you has missed the flippin' fact that there is something called, "SQL Server Compact" out there that is EMBEDDED. It's starting to get a little sad. I see what some of you have said in regards to people who know absolutely nothing about programming, and that doesn't change anything. They'll still have to learn binary IO, they'll still have to learn WinSock, they'll still have to learn DirectX, so on, so forth.

> Maybe something like SQLite as a database would be better? That way if people want to upgrade to something like mysql later it's not hard hard to make the change. But for people who don't or can't run a SQL server they can still use the default SQLite without the need for setting up a server.

At least someones thinking outside of the box. When you install the server package, you choose: SQL Compact or flat binary. Too easy.
Link to comment
Share on other sites

> Maybe im missing something bud, i dont know a ton about this. But doesnt compacting it into one running file kind of defeat the entire point?

That's what a database is, man.. As far as defeating "any point" goes, the more information stored in a database, the more efficient it is to have it in place; the same cannot be said about having hundreds of flat files.
Link to comment
Share on other sites

Rather than worry about which database engine to use, or what the next best feature is, try to rethink the idea of what an engine should be. Being feature-full is a good thing, however, the most important thing that an engine should be is maintainable. Maintainability does not just mean easy-to-read code, it's also a measure of how easily you can make modifications.

In two years, the next best database engine will be released. It will be better than anything there is right now. How do I know this? Because software moves at an incredible rate, and it doesn't wait. If you do not design for the future, with appropriate abstractions to support all database engines (among other drivers), you will be right back at this point in two years.

Most of the differences listed in the first post are game features, when the idea behind this post is to improve the engine. Focus on the architecture of the engine and how all the systems work together, rather than a few cool features, and the engine itself will grow to be amazing.
Link to comment
Share on other sites

The intent of my original post was not 'feature' changes but rather rewriting core usability and performance functions. Map Processing, Rendering, Movement, The Tile Engine; all the ground level functionality.

VB6 is dated, that's obvious however I highly doubt you'll see VB6 go anywhere soon or even in the next couple of years. I know this mainly because of the vast number of enterprise level applications built with VB6 that will likely be the driving factor to continue support for VB6 applications in future operating systems. Now, it may not be natively supported, but rather through a Windows on Windows Subset style of compatibility.

I was just an idea I put out there, I'm not committing to anything. It's just something that I think would be nice, maybe as a side project someday in the future?
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...