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

Eclipse NET (Orion) Mod


Rob Janes
 Share

Recommended Posts

Eclipse .NET / Orion Edit (Whatever you'd like to call it)

Hey Folks

Just dropping in to post this, I saw jcsnider released Orion, an old edit of Eclipse Origins 1.X ported to VB.NET

This is simply that same engine with just a few minor tweaks that someone had asked for, and I just planned to release it everyone. I have no intentions on supporting this, but it might be something fun for people to tweak or learn from.

================================

UPDATE 01 January 31st, 2015

Windows are now completely sizable and the game display will change even during run-time, this means you can resize the game as much as you like to any size while the player is playing.

Added the custom class caching of jc's to allow Map Loading to take mere milliseconds now, Goodbye Loading Screens!

[www.canadianparamedicjobs.ca/EclipseNETv101.rar](http://www.canadianparamedicjobs.ca/EclipseNETv101.rar "External link")

=================================

The basis for this (Orion, can be found at [http://ascensionforums.com/index.php?board=6.0](http://ascensionforums.com/index.php?board=6.0))

**Change Log.**

**1\. Separate Solutions**

Rather than a single solution housing the client/server (albeit a smart person could open the vbproj individually if needed), the Client and Server are now their own solutions. Some may like it, some may not. Programmer preference, you could easily add the two back into one solution.

**2\. Full-Window Support**

Sizable Game Window (before Runtime). You can size the frmMainGame window before runtime in VB.NET and your game will display correctly. You could change the form to sizable and make it sizable, however it would stretch/skew the image. While it does calculate the Max_MapX, ScreenX etc on the frmMainGame resize function, the GameWindow for SFML is first initialized on InitGraphics, so it gets the size of the surface based on the size of picScreen at the time of execution. This could probably be modified so that the GameWindow sizes are updated dynamically, I'm just not that familiar with SFML libraries.

![](http://www.canadianparamedicjobs.ca/EONET1.png)

**3\. Increased Map Sizes (Loading Map Dialogue)**

As per any Eclipse, you can change map sizes server side with Max_MapX, I've simply increased map sizes and added a loading menu so that it will track where you're at in the loading process when handling map data.

![](http://www.canadianparamedicjobs.ca/EONET2.png)
Link to comment
Share on other sites

Rob will probably update this in the upcoming days. I released a patch for the buffer class today that sped up packet parsing exponentially. That patch also made his loading menu immediately obsolete for maps greater than 200 by 200 tiles in size.

Before that and a few other optimizations though, Kibbelz and I had 30+ accounts on at one time with no noticeable lag and very low resource consumption server side. (<%5 cpu on a very cheap VPS)
Link to comment
Share on other sites

> I made a simple CPS test if it can be usefull :
>
>  
>
> ![](http://snag.gy/yIze5.jpg)
>
>  
>
> ![](http://snag.gy/FNCJY.jpg)
>
>  
>
>  
>
> The VB6 version **Seems better** (i did remove the sleep(1) on the vb .net version ),

Good comparison. If you move the UpdateUI() call in ServerLoop from the top to before tmr25 = GetTickCount() + 25 you should get much better performance.

In all reality though .Net on a simple comparison like that will almost always lose, it is a lot heavier than languages like C and VB6\. With that said, it thrives because it can utilize multithreading, which makes it significantly better than VB6 in the long run for a game server.
Link to comment
Share on other sites

Update 01

Windows are now completely sizable and the game display will change even during run-time, this means you can resize the game as much as you like to any size while the player is playing.

Added the custom class caching of jc's to allow Map Loading to take mere milliseconds now, Goodbye Loading Screens!

[www.canadianparamedicjobs.ca/EclipseNETv101.rar](http://www.canadianparamedicjobs.ca/EclipseNETv101.rar)
Link to comment
Share on other sites

> Update 01
>
>  
>
> Windows are now completely sizable and the game display will change even during run-time, this means you can resize the game as much as you like to any size while the player is playing.
>
>  
>
> Added the custom class caching of jc's to allow Map Loading to take mere milliseconds now, Goodbye Loading Screens!
>
>  
>
> [www.canadianparamedicjobs.ca/EclipseNETv101.rar](http://www.canadianparamedicjobs.ca/EclipseNETv101.rar)

nice work rob :)
Link to comment
Share on other sites

> Good comparison. If you move the UpdateUI() call in ServerLoop from the top to before tmr25 = GetTickCount() + 25 you should get much better performance.
>
>  
>
> In all reality though .Net on a simple comparison like that will almost always lose, it is a lot heavier than languages like C and VB6\. With that said, it thrives because it can utilize multithreading, which makes it significantly better than VB6 in the long run for a game server.

No, .NET will lose if you completely disregard new paradigms like OOP while copy/pasting VB6 code into VB.NET.  The 50kb game server I wrote using C# makes any Mirage derivative look like a joke, and it took me an hour.  Why?  Because I utilized .NET instead of writing something malformed and deprecated.  

Few tips:

* Completely gut the networking and rewrite it with Lidgren; synchronous networking in the year 2015 is absolutely absurd.
* Once you convert to Lidgren gut your entire file IO, stop using predefined arrays, and start using objects.
* The client is a complete mess.  It's entirely procedural and bloated with unnecessary loops and while statements.
* Read and read some more on paradigms and design patters.  Don't ignore them, use them!

Edit: +10 for effort.  I don't mean to sound like I'm attacking the project; I'm simply stating it needs a LOT of tlc.  If it were in C# I'd probably make a lot of conversions myself.
Link to comment
Share on other sites

> I can't take any credit for any of the work, it's a mere port of EO1.X done by jcsnider.
>
>  
>
> And I agree for the most part Budweiser! Except on the lidgren part but that's entirely personal preference.

Only reason I'd vote against Lidgren is the fact that it's UDP only.
Link to comment
Share on other sites

> Only reason I'd vote against Lidgren is the fact that it's UDP only.

Lidgren is not UDP only.  It's both UDP and TCP (by that I mean it offers TCP functionality through the following, and maintains an active connection and has a built-in keep-alive:) and supports a myriad of functionality dedicated to unreliable versus reliable data transmission and even has multiple channel support for sequencing.  It also supports encryption, has it's own VERY fast messaging queue and message buffer, is asynchronous, and can be implemented in 101 different ways.

Top 2 C++/C# networking libraries, in order: Raknet, Lidgren.
Link to comment
Share on other sites

> Lidgren is not UDP only.  It's both UDP and TCP (by that I mean it offers TCP functionality through the following, and maintains an active connection and has a built-in keep-alive:) and supports a myriad of functionality dedicated to unreliable versus reliable data transmission and even has multiple channel support for sequencing.  It also supports encryption, has it's own VERY fast messaging queue and message buffer, is asynchronous, and can be implemented in 101 different ways.
>
>  
>
> Top 2 C++/C# networking libraries, in order: Raknet, Lidgren.

I don't quite fully understand how it can be utilized with TCP. Could you explain it a bit more please?
Link to comment
Share on other sites

> I don't quite fully understand how it can be utilized with TCP. Could you explain it a bit more please?

![](http://p1cs.me/AT.png)

Source: [https://code.google.com/p/lidgren-network-gen3/wiki/Basics](https://code.google.com/p/lidgren-network-gen3/wiki/Basics)

I apologise if my knowledge is a bit dated, I've not used Lidgren in a good few months, but I can't imagine a fundamental like that changing massively.

I'm not entirely sure if ReliableOrdered actually does utilise TCP (still), but the main concept is still the same.
Link to comment
Share on other sites

  • 4 weeks later...

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...