Jump to content

CnCNet Forums

Search In
  • More options...
Find results that contain...
Find results in...
CCHyper

Introducing RedAlert++

Recommended Posts

Introducing

logo_main_drop.png

An open source re-implementation of the C&C Red Alert engine. Written from scratch in C++.

www.redalertpp.org    www.twitter.com/RAPlusPlus

 

 

forum_about.png

RedAlert++is a project to create an accurate reimplementation of the game engine used for the classic Westwood Studios RTS, Command & Conquer: Red Alert in C++.

 

The team developing this are fans of the game who want to see it preserved and ensure it can be enjoyed properly on modern platforms. They do not have access to any of the original source code, and the project is being developed from scratch through careful examination and comparison to the original. This is to ensure that the new engine is as true to the original engine as possible, guarantee an authentically retro gaming experience. The project is not endorsed, sponsored or in any other way connected to EA/Electronic Arts and and has no intention to profit from the endeavour.

 

In the coming months, we will be posting regular updates and working towards a public release in the near future.

 

 

forum_features.png

- Utilises the latest open source graphic and audio libraries (SDL, OpenGL and OpenAL). -

- Fully compatable with the original game, allowing you to run the compiled binary as a direct replacement of your original installation. -

- Fixes bugs that appear in the original game, without losing gameplay authenticity. -

- Built on years of thorough research into core gameplay dynamics to deliver a genuine experience. -

- Allows you to continue playing your favourite RTS on a device of your choice. -

 

 

forum_faq.png

Q: Why develop another Red Alert engine from scratch, if we already have FreeRA, FreeCNC and OpenRA...

A: FreeRA and FreeCNC are far from complete and appear to be abandoned while OpenRA is focusing on reimagining the classic Westwood RTS titles with modern era twists such as features found later Command and Conquer titles or other RTS games. Our focus is on a classic recreation with great attention to detail on the core mechanics, more akin to OpenDUNE, hence the new project.

 

Q: Why is it called RedAlert++?

A: Correct, but the project has been inactive for some years now. We approched the creator, Damien some time ago now and asked the status of the project, and if it was currently inactive, could we use the name RedAlert++. Damien's project is still being developed in private and he has given us permission to use the name and hopfully in the future we can bring him on board to help with development.

 

Q: Where to download latest version of RedAlert++?

A: At the moment, RedAlert++is being developed in private so we can ensure the basic engine works as required. Once we are happy with the state of the engine, we will release a public build and also create a public repository on GitHub.

 

Q: What do I need to run RedAlert++?

A: It's simple! - All you will need is a installation of the original C&C Red Alert (patched to 3.03), and a compiled binary from the RedAlert++source code, be that from a preview build or from the public repository yourself. EA released C&C Red Alert as Freeware in celebration of the release of Red Alert 3 and it is now possible to legally download a copy from the EA servers or official mirrors.

 

 

forum_team.png

CCHyper

Core Engine Programmer

- C&C Engine Researcher -

 

OmniBlade

Core Engine Programmer

- SDL and OpenGL -

- Cryptography & Algorithms -

- Cross Platform Deployment -

 

Additional Contributions

tomsons26 - Branding Artwork and Design

Tore - Web Technical Support

Grant - Web Technical Support

CNCNet Network - Website Hosting

 

 

forum_socialmedia.png

If you are a fan of using social media, you can also

follow_twitter_sm.png or follow_facebook_sm.png for updates and other information.

 

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
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)

Share this post


Link to post
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

Share this post


Link to post
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.

 

 

Share this post


Link to post
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++.

Share this post


Link to post
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.

Share this post


Link to post
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^)?

Share this post


Link to post
Share on other sites

Are you aiming cross-platform compatibility?

 

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

 

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

Share this post


Link to post
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 :)

Share this post


Link to post
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.

Share this post


Link to post
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.

Share this post


Link to post
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/

 

Share this post


Link to post
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"?

Share this post


Link to post
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

Share this post


Link to post
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.

Share this post


Link to post
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.

Share this post


Link to post
Share on other sites

looks cool, but will any new features be added, like high resolution, build queues, being able to add to your selection of units holding down shift and box selecting? Being able to choose starting locations on skirmish maps, and having the AI be on your team? I've kinda become addicted to Dawn of the Tiberian Age. :D

Share this post


Link to post
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?

Share this post


Link to post
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'.

Share this post


Link to post
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.

Share this post


Link to post
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.

×