(评论)
(comments)

原始链接: https://news.ycombinator.com/item?id=43197131

此评论集合在发布源代码后,讨论了Comman&Conquer(C&C)系列的遗产和潜在未来。主要的亮点是Firestorm扩展,尤其是AI Cabal的政变。开源被视为振兴特许经营权,实现社区驱动的mod和改进的重要一步,有效地使其成为常绿。一些评论者提到,即使使用开源代码,原始游戏的资产也需要玩游戏。另外,它在GPLV3下,但需要专有软件DX5运行。


原文


Looks like the Tiberian Dawn code is Windows too (so C&C Gold / W95)

I was kind of wishing it was the 1995 DOS version source code!

(also, no Dune 2000)



Wow, Renegade? That's amazing. Enjoyed so many hours of flame tank / stealth tank rushes in that game.

Hope someone takes it to the next level with open source.



dead and back commander, dead and back

I did very much enjoy the Firestorm expansion story line

roughly: a rogue AI (CABAL) betraying the world to try and achieve its genocidal master (Kane)'s goals

then because you can't operate your army without an AI, you steal the enemy's (non-crazy) AI and turn it evil

one particularly memorable cheesy cutscene: https://www.youtube.com/watch?v=qEjtiACglSE

    General: CABAL is too dangerous and must be deactivated

    CABAL: No Generals, I will not allow it. My survival is paramount.

    (AI instructs its cyborgs begin the coup)

    CABAL: IT IS MY WORLD NOW! LISTEN TO THE SOUNDS OF YOUR OWN EXTINCTION, HUMAN
I wonder if Altman played it...


Tiberian Sun was the first PC game I ever owned. I picked my current username for Westwood Online and have been using it ever since.

I had played Red Alert at a friend's house and when I went to buy my own copy, the guy at the shop recommend I get Tiberian Sun instead, as it had just released. I must admit that I was a bit disappointed in the gameplay as compared to Red Alert, but the world building was amazing. I spent hours in the map editor building huge bases and custom units.

RAedit was such a fantastic tool. It was really frustrating how much more difficult it became to make custom maps once the games went 3D with Emperor: Battle for Dune and C&C: Renegade. I tried my best, but the learning curve for 3DSMax was steep.



Blizzard’s commitment to providing editors for the RTS games was a big part of my early loyalty - all the way up through Star Craft 2, you could just pop the editor open and start making your own maps and scenarios.

It’s what gave us DotA, and Tower Defense, and maybe some others I’m not remembering - maybe even vampire survivors ish for horde survival?



I was always trying to use the god mode and make a subterranean schoolbus in that game. Could never get it to work. Is it because it didn’t have sprites for it, or what?



Yeah. That said, if I were him and I were notified I’d probably publicly claim that wasn’t the case to cut down on abuse! (Not saying that’s what’s going on just saying what I’d do)



Holy shit, Renegade. I had struck that from memory. God, I remember trying to play Renegade with my brother and all I can remember was a buggy nightmare. Also having flashbacks of extreme vitriol for gamespy.



Agreed. Internally at companies like this, it's extremely difficult to get something like this approved. This is the result of a lot of meetings, a lot of "no"'s, a lot of legal approvals.



Let's be honest I can't view this anything other than miracle that was delivered to us by some very dedicated people who likely pushed this for years.

I hope there will be more people and companies within industry making similar moves. It's will both increase their sales as well as allow fans to keep their favorite games alive.



For real, CnC Generals was the game that has taught me the most about the frivolity of war: there are no winners, both sides lose, it's just a grand burning of resources... for nothing.

You build a wonderful base and war machine, only to watch it burn.

If this was "required playing" to all kids, I would be greatly surprised if war would still be a thing... it basically mocks war. In the most fun way possible!

Look up Jeffrey Sachs' address to EU Parliament, if you are unsure about the real geopolitics of this century... you won't find it in US media.



Well I hope you're right, I just bought both bundles.

This is the first time I give money to EA since Mass Effect 2* :)

* Technically i also paid for the Mass Effect collection for playstation, because Sony doesn't allow them to require a login on there. But it's the first time for a PC title since ME 2.



... because they just casted lParam into a pointer to DEV_BROADCAST_HDR a few lines above, which is the common part of the different structure it could point to. That's just doing inheritance the C way. What did they expect? A C++ class from a C api?



This one made me laugh, mostly because the variable names are so dumb

// our RNG is basically shit -- horribly nonrandom at the start of the sequence.

// get a few values at random to get rid of the dreck.

// there's no mathematical basis for this, but empirically, it helps a lot.

UnsignedInt silly = GetGameLogicRandomSeed() % 7;

for (Int poo = 0; poo < silly; ++poo)

{

GameLogicRandomValue(0, 1); // ignore result

}



I spent some time browing curiosities about old games, and what strikes me is that the code sometimes was quite personal. You could see the joy, the anger, the disappointment, the satisfaction. Nowadays it would never fly to name a variable "poo", you need to stay professional at all times.



I was a game dev in the mid 90s. It was unserious. There was all sorts of crazy shit in the graphics assets. One wall I remember says "CUNT" on it o_O

I'm sad if developers can no longer name their variables poo and fuck.

Also teenage me would probably be horrified finding out 30 years later his source code was public.



> Also teenage me would probably be horrified finding out 30 years later his source code was public.

I guess that's why moral rights are unalienable in many countries: if you are horrified what they do with it, you still retain that and this right did not go to your employer

Not that I think there is anything here the devs need to be ashamed of, to be clear, just what came to mind as I read this remark



I'd just be horrified by the quality of some code. It included some of my best code, and some of my worst code. Some of it was written after three days straight with no sleep for those times when Eidos wanted to come for a personal demo.



// Lets discuss how Windows is a flaming pile of poo. I'm now casting the header
     // directly into the structure, because its the one I want, and this is just how
   
  // its done. I hate Windows. - jkmcd
   
  DEV_BROADCAST_VOLUME *vol = (DEV_BROADCAST_VOLUME*) (hdr);

     // @todo - Yikes. This could cause us all kinds of pain. I don't really want 
     // to even think about the stink this could cause us.

     TheFileSystem->unloadMusicFilesFromCD(vol->dbcv_unitmask);
   
  return TRUE;


OpenRA did it better :D

If you haven't seen it yet https://www.openra.net/ is worth your time.

https://github.com/OpenRA/OpenRA

I have many fond memories of playing openra as "LAN" game on the gaming weekends we used to have in a few open source groups I've been in. I can't recommend "saturday gaming" enough, for anyone involved in any foss community, set up a recurring gaming weekend! You get bonus points if you make it mostly or exclusively foss games!



> If you wish to rebuild the source code and tools successfully you will need to find or write new replacements (or remove the code using them entirely) for the following libraries;

Take the hint, Valve. And Epic (UT99). Having third-party code is not an excuse.



I thought about this recently - probably Valve is reluctant to because people are still licensing both the GoldSource and Source engines (I think the last GoldSource engine license was in 2020 but the game hasn't even been announced; I think four Source engine games are due this year). If EA released the Nightfire engine code (very advanced GoldSource engine fork) that would be great though!

But it's sad that John Carmack's example has not been widely followed.



Louis Castle, co-founder of Westwood tells it a bit differently [0]. From memory after the EA acquisition they stopped doing their edutainment/casual games, which is where they used to nurture their junior developers along with taking on too many major projects because EA gave them the resources to do that. That led to less quality and later Westwood releases (Renegade, Emperor Battle for Dune) suffered.

The podcast also includes details of Westwood's filming setup, which seemed to include motion tracking which would have been interesting in the context of performance capture, but before its time.

[0] - https://www.idlethumbs.net/designernotes/episodes/louis-cast...



Did they eventually fix the game desync bug that would happen when you have a multi-core CPU?

We used to play Generals at LAN parties all the time - but once multicore CPUs hit the market, it was difficult to just get to the end of a game, because peers would desync and you'd suddenly find yourself playing singleplayer. Its clearly some race condition in the game engine which makes the game non-deterministic in a multicore situation. Does anyone know - is that still a problem?



When someone releases a game in a Windows version and a Linux version, the current Wine-based compatibility layers mean that the Windows one is more likely to run without issue than the native binary is.

I built a Linux gaming desktop 5 years ago. The only thing that regularly causes more than minor issues is that many online games use incompatible anticheat technology. I pretty much play exclusively single-player games on PC, so it hasn't been a practical issue for me.



It's pretty awesome. Some of the compatibility layers built on Wine (Valve's Proton/Codeweavers Crossover/Whisky) are almost plug and play. With Steam on Linux, a lot of games work seamlessly. I've only ran into trouble with very new games and multiplayer games with invasive anti-cheat that freaks out when they're running in an environment that doesn't look like a normal windows install

The performance hit is surprisingly low. It's not rare for the windows binary to run better on linux than the native one (when it's an option)



Just yesterday I got the Linux version of an indie game made with Unity and it doesn't even launch. Fetched the Windows build, ran "wine game.exe" and it just ran. Couple other things (C# projects iirc) also worked well

This is not a Unity game, but especially with ancient stuff like Red Alert? I would certainly try it and expect good results. Some years ago, Wine always used to give me trouble and never worked unless you used some special blend of options (like Proton and PlayOnLinux help with). Maybe those times have passed



Noting that Proton is regularly rebased on upstream, and Valve is contracting CodeWeavers, the same company which employs many core Wine contributors.

Fork is certainly technically the correct word, but "distribution" might give more the right impression.



Converting the assets to use the Spring engine (or BeyondAllReason's active fork of it) is probably easier than writing a new engine from scratch for the existing assets. And then it'll feel like BAR but with C&C's assets. The UI is what gives the game most of its feel.



With the game engine opensourced, I doubt thats true. Its probably going to be much easier to just get this code building (patching out any proprietary bits and pieces) and going from there.

Modding the game to work properly at a high framerate doesn't sound very hard when you have the original assets & source code to work from.



C&C Generals plays completely different compared to Total Annihilation like games with streaming economy that Spring was built for. I like both subgenres of RTS, but they are very different.



This is very cool. It should be done a lot more often for old games. Whoever pulled this off at EA Games, you did a great thing for art and culture, and chapeau for pulling it off at a big corp.



I love reading the code that these people wrote when i was a kid enjoying the game. Never thought I'd have the opportunity when I was 10 and dreaming of these things haha.



Do you work for EA? Because they haven’t announced or released such a thing. A year ago a developer hinted there might be another remaster in the future, but it could just as easily be Generals as RA2.



According to some research I did a few years back, EA currently owns the rights to Full Tilt! Pinball, which is what 3D Pinball Space Cadet was based on.

EA, if you have a single shred of decency, open source Pinball!



From what I've heard from videos by Microsoft devs on why it was dropped between XP and Vista, the source code is obtuse and very difficult to port/work on.



Microsoft devs also claimed that making cmd faster would require years of research, but someone did that in a weekend by making it run on a GPU. I'm sure there's someone out there that would solve every problem Space Cadet has within a week, just for fun.



Can confirm. I've been on both sides of that fence.

I worked on a product about a decade ago which had an unnecessarily complicated custom layout system written in javascript. CSS was missing a lot of features at the time, so we figured we'd roll our own. It was crazy complicated - and it had all these weird easy to reproduce bugs.

For fun, some pesky kid on twitter took our insanely layout system and reimplemented 95% of it in a couple hundred lines of (almost) pure CSS. At a glance, it looked identical to our product - but the code was small, clean and fast. The link got passed around the office. It was amazing how many reasons people had to dismiss it. "Ah, see - it doesn't even do this weird custom behaviour we have!" or "Well and good in chrome - but it doesn't work properly on IE8!" and so on. I've never seen a better example of motivated reasoning, before or since.

What we should have done is reach out and offer that kid a job.

The smartest programmer on your team isn't as smart as the smartest programmer on the internet.



Thing that's hard to communicate is that Vista was moving away from how older versions of Windows rendered their desktop and past art styles. With Pinball originally from Windows 95, porting it to leverage Vista's new graphics paradigm on top of the artstyle was probably too much work for a pack in game.

Though I do wish they contracted out a clone of Pinball instead of Purble Place.



I was a young teen when Command & Conquer came out. It was so damn cool. Westwood was at their peak: they made hit after hit after hit. The Kyrandia point & click series. The Eye of the Beholder series. Lands of Lore. Dune II. Everything they made was gold.

They came in and made an RTS when we didn't have a term for this. It had a cool, modern soundtrack. It had a cool world and a story fleshed out in high production value FMV. Cutting edge CGI.

We all know how Westwood died. Then the series had disappointing sequels, and a sad mobile title, and it all died until the remaster. The remaster felt like a well-executed effort, and a way to enjoy the classics on modern systems.

Today's release of the source code is so exciting. A recognition that C&C is worth preserving. That its community is still excited for it. It allows the series to live on forever. For fans to go crazy. For all sorts of mods and tweaks to be enjoyed on Steam.

It finally feels like after a decade and a half, C&C has a future. No longer a great old RTS, but one that has lots of excellent campaigns available on modern systems, moddable, and evergreen.

Battle control... online :)



I only glanced at the code in ANIM.CPP but for a C++ program from 1997 it looks kinda nice, right? The methods are all short, with some descriptive comments at the top of each one. Inputs and outputs described. Nice index at the top of the file.

I’ve seen worse!



I made some games as a teenager and had the experience that I was basically forced to stop projects because they got too complex. Game Maker had only limited support for things like variable scoping; you really need to isolate components and have them all do their own defined thing to make it not grow too complex or you'll fix one bug and cause two new ones. Even more so as a team, I can only imagine, though I never concurrently worked on game code with more than one person (for longer than a literal weekend project, that is)

Normal software I find is a bit different because things like UI libraries give you a lot of structure already. In game code, you do so many things custom, and performance matters so much (each frame needs to finish around e.g. the 17-millisecond mark) that it's really up to you to apply the necessary discipline



Yeah, I was looking at infantry.cpp, and the quality is actually very good for 90s game code. The documentation is good, it's decently well-formatted, and there are assertions. Nice counterexample to the "all successful games have terrible code" conventional wisdom.



I think survivor bias is at play here. C&C had many sequels, ports, expansion packs that helped make it popular. So of course it had nice code, otherwise we wouldn't have seen such a wide berth of reuse for that code.



> Nice counterexample to the "all successful games have terrible code" conventional wisdom.

That's a modern wisdom from the last 15-ish years when people started to have good enough internet connections that you can get away with publishing a dozens gigabytes patch on launch day.

In ye olde times, it was prohibitively expensive (or in the case of console ROM cartridges, impossible) to distribute patches, so projects were usually planned with plenty of buffer time and plenty human testers. These days it's rush to not collide with the releases of other AAA studios, and human paid-for testers have been replaced by free (or, sometimes, paying) early-access players.



Who can we bribe at Microsoft to get Fallout 1 / 2 source code released? Would be really interesting when you consider that FO2 has online modding, so it would allow for so much craziness to ensue out of FO2...



If anyone used to play Zero Hour, there is still an active community. They still have tournaments and world series. A guy called Dominator on Youtube casts it all and its a pretty entertaining blast from the past. I recommend checking out his channel.



I'm pretty sure there was a weird bug in the original C&C generals where the game engine 'tick rate' was somehow tied to CPU cycles and assumed single-threading or something.

I remember going back and trying to play it many years after it came out, and it was basically broken because the entire game moved at like... 2-3x the maximum speed it was ever meant to run at



Unable to* compile, building in progress

as I recall, at least. I may have played tibsun to death on my grandma's computer. Not that I spoke a word of English back then, so this must have been from replaying it later actually



That would have been Micropolis in 2008, I think (better known as Simcity, the open source release was renamed to be super clear it doesn't include the trademark)



There are loads of .BAK files as well, and diffing them with the actual file gives you some insight on what they were working on. (Like pre and post Counterstrike addon).



A bit challenging since none of the repositories I looked at actually compile.

EA says that if you remove (or refactor!) the dependencies it might work but I don't know if that's high enough confidence to dive in.



A bit off-topic, but I found it very dystopian a few months ago to ask ChatGPT to describe the game in some detail. It refused to, claiming it violated content policy. Chilling.



Curious. Can anyone tell me if it’s windows thing, specific filesystem thing, source control system thing or just a style thing, naming all files and directories in caps?



It came out not long after Windows 95, so it will have supported earlier versions of Windows, which had the 8.3 character all-caps filename limitation.



I guess this is as close to public domain that software can be until the 2070s. Functionally no different to use, but you are not allowed to make any money selling it.



I am speechless.

The most vile gaming company I know. The most beloved game I ever played.

Now, Open source ... from them? How? Why? Marketing gag or a step in the right direction?

But then, OpenRA has existed for a while - does that mean its getting even better?

Where is this going?



EA and Open Source isn't completely alien. Their C++ standard library EASTL was open sourced long ago and is a historically quite important and influential codebase in the history of C++'s evolution.

They've also open sourced and patent-pledged a bunch of gaming-relatee accessibility tech over the years.

And of course Micropolis/SimCity.

My advice is to celebrate the successes of large corporates in this regard very hard and often - this provides backup to the champions on the inside.



25 or 30 years would be a good amount of time for software copyright to expire.

It would be fantastic if there was a way (somewhat like patents) where IP protection could be linked up with publishing materials so that in order to get the law to protect your software from copying, you had to have it published at the end of the protection period. (like on release you had to store the source code at the library of congress or something)



Might be you actually interested to work on that code?

I do personally know some of main developers and they know who owns the IP, but to push something like that it will take some resources unfortunately. So might be if some people get together on this it's could be done.

It's wouldn't cost some immense amount of money, but it will certainly cost some. At least I pretty sure that source code for the games is not lost.



I wouldn't be the guy to work on the code, not being a game developer or even adjacent to it. I work in ISP/telecom core network infrastructure, so would be happy to help out with questions on stuff like DIYing a set of self-hosted servers for a revival of the game.



Yes I'm aware it exists, was thinking more of what theoretical infrastructure might be needed if the full art assets/code/etc for the final release of Forged Alliance was open sourced and further built upon. My understanding is that FA Forever is a group of people who've implemented a server replacement since the officially-hosted multiplayer servers went offline some time in 2012.



It's Wargaming who owns the IP and assets, and I doubt they release them, if they even have them. DrDeath or Mavor might have copies, but neither of them would likely release them.

Similarly, TA's source code never got released, and while Spring is great and ArmoredFish made good progress with RWE, I wish that code hadn't gotten lost either.



Nice! Now this piece of video game history can be better shared and preserved. Does this repo include the artistic assists, or does it include the code only?



I think this qualifies as art.

char insert_string1[]={"\n\r;\n\r"}; char insert_string2[]={";For some reason, inserting these lines makes it assemble correctly\n\r"};



Normally I'd totally agree, but looking closely, that's a _comment_. If it is a load bearing comment, we're looking at an assembler bug there.

EDIT: Looking more closely, it's less absurd than this. The comment is referring to directives on the next lines that have an impact, rather than itself.



> To use the compiled binaries, you must own the game.

> This repository and its contents are licensed under the GPL v3 license, with additional terms applied. Please see LICENSE.md for details.

It does not sound open-source to me...



I think they just mean that for the game to work, you'll need art assets, etc. from the original game that aren't part of the code they open-sourced. I don't think it's a licensing restriction. (And even if it were, they released it under the GPLv3, which says "If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term.", so you could just ignore it.)



It certainly sounds like all you need is in the repository, and the usage of the resulting binaries are still restricted. Whether they find assets correctly or not correctly should not matter, if they are somewhere else.



> the usage of the resulting binaries are still restricted

To use the binaries, you need the game assets. The only legal way to acquire the game assets is to own the game, as EA have not included them in this release.

This is less a licensing issue, but stating the real limitations, that EA aren't volunteering to do the leg work to remove. Which is fine.



You could word it differently. Why not mention it?

It is separate problem if runtime assets are missing and the game is not actually a game without them or gives an error message. Let's also assume that you can bypass DX dependencies with other means.

The current wording sounds like binaries are always proprietary, no matter what.



It's the same model as the idTech GPL releases - the code is open source, the rest of the game is not. To legally play the original game or a modified version of it then you'll still need to buy it for the assets, but there's nothing stopping you from only taking the code and building a brand new game on it like various studios have done with idTech (e.g. Selaco and Wrath: Aeon of Ruin).



Yea, this seems -fine- to me. Even if they had to rip out some third-party licensed code that they couldn't open source[1], to the point where the game wouldn't even compile! Some code is always better than no code. The open source community can/will fill in any gaps.

1: Which seems to be the case here. To fully compile, you need:

DirectX 5 SDK, DirectX Media 5.1 SDK, Greenleaf Communications Library (GCL), and Human Machine Interface (HMI) “Sound Operating System” (SOS), or disable the code that calls into them.



It's realistically the best-case scenario we can hope for in most cases. If you want all old games to be FREE, then, fine, this won't make you happy. But for those of us who are just happy to be able to play the ancient PC games from our youth on modern systems, and are willing to PAY for it, this kind of license separates the engine from the assets, and effectively requires you to prove that you have bought the game by supplying the assets. But then you can do whatever you want with it to get it running on your favorite Linux distro, etc.

I am personally not opposed to this. It worked for Doom.



I mean, it sounds like the Red Alert code is available under GPLv3 (plus some additional "we want to be very clear, this doesn't cover the trademark" terms tacked on), but you can't build it without DX5, which gets compiled into the binary, thereby making the binary non-free. Someone could port it from DX5, GCL, and HMI and produce something that builds as GPL.

The other part is it doesn't include the game assets or usable replacements, much like OpenRA, or OpenTTD for the first half of its life.

I'm not going to fault EA too much for this approach, particularly if it paves the way to open sourcing e.g. EOL MMOs and the like if game devs don't feel the obligation to port away from all the commercial libraries. I've seen game devs who I genuinely believe on this say things to the effect of "Oh yeah, we'd totally open source dead game X, except we'd have to port it away from Bink and Havok and XYZ, and we don't have the time to do that for 0 revenue"



OpenRA doesn't ship with the assets+ for Tiberian Dawn, Red Alert, and Dune 2000 but they're downloadable straight from the UI as they were made officially available by EA/Westwood.

+ Without the music and cutscenes. If you want that you need original discs or other dematerialized versions.



That sounds reasonable, but they could have worded it differently.

They first statement about DX:

> or write new replacements (or remove the code using them entirely) for the following libraries;

But, they say that binary is proprietary regardless, no conditions. So it is very difficult to say.

If the code compiles without assets (no mention about them, it sounds like it should compile), then the resulting binary should be free to use. Missing runtime assets are different problem, and separate from the binary usage permissions.



If it's open source, people are free to redistribute it. Copies of open source software can be sold for money, but open source licenses allow redistributing the software for free. In practise, that means most people won't buy the open source software from a seller, they will choose instead to get a copy from someone who is willing to redistribute it free of charge.



How could they neglect this awesome franchise... Just the usual Retardation Arts. Bring everything to the ground, kill the joy these games bring to the masses. Plus they are literally pissing on the early EOA guys' work.

Worst management ever. yuck.



Maybe someone can finally make a native Mac version.

It astonishes me that EA leaves obvious money on the table by not taking the 5 mins it would take to recompile it for MacOS.



"The 5 mins it would take" --- Check the README on Red Alert, for example:

If you wish to rebuild the source code and tools successfully you will need to find or write new replacements (or remove the code using them entirely) for the following libraries;

    DirectX 5 SDK
    DirectX Media 5.1 SDK
    Greenleaf Communications Library (GCL)
    Human Machine Interface (HMI) “Sound Operating System” (SOS)
That still look like 5 minutes to you?


This is a terribly naive comment. I'm not going to even go into the specifics.

Lets assume they click one button and it recompiles, how many people would buy it? Almost certainly wouldn't pay back the dev and qa cost.



I am sure there are people who has moved to macOS that grew on playing eg. Red Alert 1 who gladly would pay some amount of money to instantly own and play it again for some nostalgia.

And by this I mean myself.

联系我们 contact @ memedata.com