Jump to content

Introducing RedAlert++


CCHyper

Recommended Posts

  • Replies 115
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted Images

Hello CCHyper! So this is not OpenRA? Cause IIRC they've used C#, which no-one in their right mind would use for a computer game.

 

Respect for using C++, bro! The only sensible choice, IMHO. https://youtu.be/xF0-LGoXtaw

 

Well, their default platform handling appears to be SDL2 and OpenGL, so a lot of the drawing effects are going to be done on the graphics card or handled by native code anyway, so as far as I see, it is the engine logic implemented in C# and C# performance (on the Microsoft VM at any rate) is close to native as I understand so I doubt they will actually be loosing much.

 

Back onto the topic of OpenRedAlert, here is a screen shot of a blitter test showing the various RA blitter logics we've implemented so far. They use fading tables as the original game does to remap the palette indexes, though unlike C&C which loads some of them from disk (.mrf files), RA generates them on theater load so so do we.

blit_test_208.png.9e3b3cd21e1b20a10d52ce78e51854a5.png

Link to comment
Share on other sites

What can be done with having the RA source code that can't be done by diving into the binary bowels of compiled executables (as Nyerguds puts it), or just simply modding the game? Or, to put it in another way; what's the advantage of having the source code (or recreation of the source code)?

 

(serious question, not being sarcastic or whatever)

Link to comment
Share on other sites

Well, their default platform handling appears to be SDL2 and OpenGL, so a lot of the drawing effects are going to be done on the graphics card or handled by native code anyway, so as far as I see, it is the engine logic implemented in C# and C# performance (on the Microsoft VM at any rate) is close to native as I understand so I doubt they will actually be loosing much.

I agree with the performance being close to native but the data still has to be copied around in order to use OpenGL in the first place. Could as well use PHP.  :D  Lastly you're forcing .NET upon your users.

 

 

What can be done with having the RA source code that can't be done by diving into the binary bowels of compiled executables (as Nyerguds puts it), or just simply modding the game? Or, to put it in another way; what's the advantage of having the source code (or recreation of the source code)?

I just realized the question is "what can be done with the source code as opposed to dll injection". Read what Blade wrote below. Sums it up well.  :D

Link to comment
Share on other sites

What can be done with having the RA source code that can't be done by diving into the binary bowels of compiled executables (as Nyerguds puts it), or just simply modding the game? Or, to put it in another way; what's the advantage of having the source code (or recreation of the source code)?

 

(serious question, not being sarcastic or whatever)

 

Some things are very difficult to achieve with exe hacking, and others practically impossible. With the source code it would be possible to create native ports to OS X or Linux or even Android and iOS for example. It would also be possible to port the rendering back end to something better supported on windows than ddraw so it wasn't necessary to mess with ddraw.dll files and such.

 

It would also make fixing bugs or adding new features a lot easier and make it easier to understand what parts of the code are doing which in turn might enable other tools and projects to be developed.

 

 

Link to comment
Share on other sites

I agree with the performance being close to native but the data still has to be copied around in order to use OpenGL in the first place. Could as well use PHP.  :D  Lastly you're forcing .NET upon your users.

 

Well it is true you could use any interpreted language, java, python, whatever, but MS does go out of its way to make nice tools and frameworks to make everything easy so you don't have to reimplement basic data structures, so long as you don't mind being tied to them. On windows its not really an issue, but it does make it a bit less cross platform friendly when you have to install a large 3rd party vm and frameworks collection, especially when a lot of people are on those platforms to avoid anything Microsoft. Still, with MS being so big in the business world there is a lot of love for .NET so lots of devs know it and it is harder to mess up than in C++.

Link to comment
Share on other sites

It has been decided after a lengthy discussion with the OpenRA team that it would be best for us to rename the project, while in its infancy. We would never ask OpenRA to rename their project as it has cemented itself as a project with a great future, and that name is now engraved into the internet.

 

We have decided to go with RedAlert++, I will be updating the topics and website shortly.

Link to comment
Share on other sites

"Written from scratch"

 

I'm just curious as to how one would go about doing this. Are you guys looking through reverse engineered code (disassembled code, going through the RA binaries one instruction at a time with a debugger) and using that as a guide?

 

Or do you guys load up the game and go "Ok, so the menu appears and these buttons are drawn at x,y coordinates (writes code to draw menu with buttons). Now when the 'Start New Game' button is clicked, the difficulty settings appear (writes code for the difficulty selection dialog box which will be called when a mouse-click is detected)?

 

(I'm aware that it's much MUCH much more complicated than that :D, but is it something like that^)?

Link to comment
Share on other sites

"Written from scratch"

 

I'm just curious as to how one would go about doing this. Are you guys looking through reverse engineered code (disassembled code, going through the RA binaries one instruction at a time with a debugger) and using that as a guide?

 

Or do you guys load up the game and go "Ok, so the menu appears and these buttons are drawn at x,y coordinates (writes code to draw menu with buttons). Now when the 'Start New Game' button is clicked, the difficulty settings appear (writes code for the difficulty selection dialog box which will be called when a mouse-click is detected)?

 

(I'm aware that it's much MUCH much more complicated than that :D, but is it something like that^)?

 

There is a mixture of of research and writing the code from scratch to ensure we make full use of the feature available to us in this day age, 20 years later from when Red Alert was first released!

 

 

Are you aiming cross-platform compatibility?

 

Will this project development be public? (github account, etc)

 

I Wish you guys absolute success, nothing less. :)

 

We will be aiming for cross platform deployment, and we will be also working towards making a public repository in the future :)

Link to comment
Share on other sites

So this is not OpenRA? Cause IIRC they've used C#, which no-one in their right mind would use for a computer game.
Why? There's been quite a few games developed in C#, including Bastion, Transistor, Rogue Legacy, Apotheon, Dust: An Elysian Tail, etc. Additionally, games such as Guns of Icarus Online, Oddworld: New 'n' Tasty!, Pillars of Eternity, Shadowrun Returns, and Yooka-Laylee all use Unity, which uses Mono. I can't say for certain all those games were programmed in C#, but I'd say it's a 50% chance for each of them. We're not dying for raw speed anymore; the problem is that games are getting harder to maintain.

 

I agree with the performance being close to native but the data still has to be copied around in order to use OpenGL in the first place.
Even the NES requires you to copy CHAR data from ROM to VRAM. What exactly are you getting at?

 

Could as well use PHP. :D
PHP is slow, and optimized for generating web pages, not real-time interactive applications. It is also infamous for being so lax as to encourage hard-to-maintain code. Compare that to the tools that exist to help with refactoring C# code.

 

Lastly you're forcing .NET upon your users.
No, they're forcing the CLR on their users, which is implemented by either .NET or Mono at the moment.

 

We will be aiming for cross platform deployment, and we will be also working towards making a public repository in the future :)
That's good. Github has only been a blessing for C&C community projects in the past.

 

I Wish you guys absolute success, nothing less. :)
Same here. :) Certainly going to enjoy playing Red Alert natively on Linux and FreeBSD. :cnc: Is playing matches against players using the original .exes planned? I know that'd certainly be tough to do, but it'd be the ultimate proof of accuracy.
Link to comment
Share on other sites

Is playing matches against players using the original .exes planned? I know that'd certainly be tough to do, but it'd be the ultimate proof of accuracy.

 

Unfortunately, this is not possible. There is no way for us to perfectly replicate the system Red Alert uses.

Link to comment
Share on other sites

So this is not OpenRA? Cause IIRC they've used C#, which no-one in their right mind would use for a computer game.
Why? There's been quite a few games developed in C#, including Bastion, Transistor, Rogue Legacy, Apotheon, Dust: An Elysian Tail, etc. Additionally, games such as Guns of Icarus Online, Oddworld: New 'n' Tasty!, Pillars of Eternity, Shadowrun Returns, and Yooka-Laylee all use Unity, which uses Mono. I can't say for certain all those games were programmed in C#, but I'd say it's a 50% chance for each of them. We're not dying for raw speed anymore; the problem is that games are getting harder to maintain.

Don't mean to hate, but, I've never heard of any of those games. Just because you can write games in C#, PHP, Python and JAVA it doesn't automatically mean they are good choices. TBH, I've never had any problems maintaining good C++ code. Compilation times, are very good if you don't include the entire boost library in all your header files and keep your code in code files.

 

 

Even the NES requires you to copy CHAR data from ROM to VRAM. What exactly are you getting at?

Talking about Marshalling: https://en.wikipedia.org/wiki/Marshalling_%28computer_science%29

 

 

PHP is slow, and optimized for generating web pages, not real-time interactive applications. It is also infamous for being so lax as to encourage hard-to-maintain code. Compare that to the tools that exist to help with refactoring C# code.

I'm not defending PHP in any kind or way, but, Facebook uses PHP and there's things like HipHop and HVVM. Sure, C# is fast but the fact it's CLR and .NET, offering lower level hardware access isn't its strength.

 

 

Lastly you're forcing .NET upon your users.
No, they're forcing the CLR on their users, which is implemented by either .NET or Mono at the moment.

Even Mono itself says "Cross platform, open source .NET framework":  http://www.mono-project.com/

 

Link to comment
Share on other sites

Is playing matches against players using the original .exes planned? I know that'd certainly be tough to do, but it'd be the ultimate proof of accuracy.

 

Unfortunately, this is not possible. There is no way for us to perfectly replicate the system Red Alert uses.

 

I guess that most people here wouldn't mind it if the game actually fells the same.

Basically, what you are trying to do is something like a "chocolate-doom RA"?

Link to comment
Share on other sites

I guess that most people here wouldn't mind it if the game actually fells the same. Basically, what you are trying to do is something like a "chocolate-doom RA"?

 

This is the first time I have heard of such a term, but that would be correct. We are trying to recreate that exact gameplay, as much as possible (we do not have the original source code or design documents), so we are aiming for 99.8% :D

Link to comment
Share on other sites

How about copyright issues? What are the possibility of EA killing this project?

 

No more than OpenRA, OpenDUNE or CorsixTH. I have it on good word that we will be ok as long as we do not try to profit from this project, as C&C is still very much a active and in development IP.

Link to comment
Share on other sites

Well, it still would be werid if they plugged it. I mean, even if you potentially profit, it would be from a recreation of a game that they are already giving out for free. It's not like they're going to pull RA from the internet and start selling it again.

 

Anyway, this projects sounds really awesome even to a strictly TD guy like me, so I wish you luck.

Link to comment
Share on other sites

Don't mean to hate, but, I've never heard of any of those games. Just because you can write games in C#, PHP, Python and JAVA it doesn't automatically mean they are good choices.
No one is saying that just because you can write a game in a language that it's a good idea. I'm saying writing games in C# is hardly a new thing, and that it's a proven platform. Have you heard of Xbox Live Indie Games on the Xbox 360? That used the .NET Framework and C#, on a platform that has less processing power and RAM than most computers in use today.

 

Marshalling doesn't take up a significant amount of time in a well-designed real-time application. The more pertinent problem would be the cost of calling an unmanaged function from managed code, which is mostly safety checks. I'm hoping .NET Native will alleviate some of those problems in the future.

 

Sure, C# is fast but the fact it's CLR and .NET, offering lower level hardware access isn't its strength.
So? It's good enough at it to not cause problems. C#'s strong suit is that it's a first-class citizen of the .NET Framework (arguably the first class citizen). It's strength is rapid application development without a significant amount of performance.

 

Even Mono itself says "Cross platform, open source .NET framework": http://www.mono-project.com/
You're right on that. I routinely hear MS's implementation referred to as ".NET" and Xamarin's as "Mono", so I assumed .NET was the name of the specific Microsoft implementation. My mistake.

 

Anyway, this projects sounds really awesome even to a strictly TD guy like me, so I wish you luck.
That reminds me, will this officially support Tiberian Dawn later down the line, or is this strictly Red Alert only?
Link to comment
Share on other sites

That reminds me, will this officially support Tiberian Dawn later down the line, or is this strictly Red Alert only?

 

The effort needed to do that would be minuscule, compared to what they need to accomplish to actually recreate RA from nearly scratch, so I guess (and hope) the answer is 'yes'.

Link to comment
Share on other sites

Microsoft with their .NET and the Mono team at Xamarin are doing a pretty good job providing a well designed framework and a fast JIT even AOT and native compilers for some platforms. OpenRA isn't slow because it was written in C#, but because it is slow. Some of that is by design. Being modular and extensible trades off with some inevitable performance overhead. Most of it though, because no one bothered to let the source code go fast routes as that isn't trivial. Real programmers know about that and some professionals recently joined the effort and started optimizing the code and benchmarking the engine. http://changelog.openra.net documents the on-going quest. Some of the recent improvements are major and speed up things by a magnitude.

 

As you can do even further optimizations when choosing C++ or another low-level language, I assume RedAlert++ will run faster compared to an OpenRA mod with an equal feature set. I wonder if it makes a noticeable difference in casual play on modern hardware. Still it is really just guesswork at the moment so I can't wait for the RA++ project to launch so we get the opportunity to see a direct comparison. Sharing code and implementation strategies will probably benefit both projects so I really hope for RA++ to get developed in the open as well.

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
  • Recently Browsing   0 members

    • No registered users viewing this page.

×
×
  • Create New...