This is a blast from a previous lifetime! I worked at Relic Entertainment during that time. Both Relic and Radical's offices were in Yaletown in Vancouver at that time, IIRC. Radical ended up moving to Main & Terminal.
I worked on Company of Heroes and Dawn of War during this era. The code looks very familiar. It's the same style of C++. The code looks very similar to Homeworld.
https://github.com/HomeworldSDL/HomeworldSDL
It werfers the nebels. Not sure why the German language' put-together-able-ness always tickles me. I've always loved when language works like that:
Spanish: paraguas - which is umbrella in english looks like it comes from 'para aguas' or 'for waters'
English: billfold - a wallet where dollar bills are folded
Small nitpick: the "para" prefix comes from Latin and means to defend, to protect against. Thus "Paraguas" is to protect against water. In French, you similarly have parapluie (to protect against rain), paratonnerre (lighting rod), etc..
Yeah, I truly lament the ruination of the Company of Heroes series. The newest installment, CoH3, is so atrociously soulless, greedy and straight-up broken that it's basically almost mocking the playerbase.
Similar things are happening with the Men of War franchise (a similar but more realistic game).... enshittification is happening everywhere, and nothing is becoming better.
>I hate SaaS with a passion, but it provides a financial incentive to continue improving an already great product
In theory but every game I liked initially that went down that route turned to garbage. Destiny and Overwatch come to mind. The game aesthetics and world deteriorate as stupider and stupider cosmetics flood the game. Less and less time is spent in great content and more on increasingly IAP abusing events that qualify less and less as games.
Would be interested to hear a counter example but I think there is good reason no gamer gets excited hearing a game is gonna be SAAS/“live service”
Imho, the problem is vertically integrated publishing behemoths.
For them, SaaS is much more about "Maximizing profit from this game, to fund other games (or generate shareholder returns)" than "Providing a sustainable business model to continue developing this game".
Consequently, you get maintenance teams whose primary KPI is maximizing revenue, versus improving a game.
I don't know if that's true. Sins of a Solar Empire just got better with all of it's expansions. Same goes with most paradox games (although, they'll nickel and dime you for it).
It's the blockbuster games that seem to have this problem as they always seem to dilute the game mechanics down for more cinematic experiences as time goes on. It's what happened to CoH, it's what happened with Dawn of War, it's what happened with Civilization (people will variously say 3, 4 or 5 was the peak; few list 6 as it) and it might happen with the Sins sequel.
Afaik, Paradox is still small enough / left alone enough by its parent to have avoided the shenanigans. We'll see what happens if they keep growing.
I also think by virtue of being niche and specific, Paradox incentivizes dev teams to stay true to the spirit of their game. I.e. no one is making a detailed 4X game because they want to sell CoD numbers. They do it because they honestly love 4X games.
For Stellaris, one of Paradox’s space 4x games, they have a team dedicated to maintenance and a separate team for DLCs. The result are large free updates that improve/rework on the mechanics which compliment the DLCs keeping the games fresh for years.
Usually the base paradox games feel like they’re “missing” major features which makes some DLCs necessary for a more full experience, but by the time that happens the base game is heavily discounted so base+dlc=full price of a new game.
Just felt like I have to add onto the paradox comment since I enjoy their major updates + dlc approach. Whenever I buy one of their games, I know I’ll probably come back to the game for at least 5 years.
> but by the time that happens the base game is heavily discounted so base+dlc=full price of a new game.
That is in no way true. Even now, there isn't any way for you to get EU4 (a much older game than Stellaris) and all of it's DLC for less than 60usd. Even in some super sale. At least, I've never seen it.
For your own example, the lowest the Stellaris ultimate bundle has ever been is ~117usd, which was when there was far fewer DLC in it:
It's a common meme that a Paradox game will cost you 300-400usd, for a reason. I'm not knocking their economic model, people pay for it without much complaint. However, it is objectively more expensive for the consumer than a single full game.
>Usually the base paradox games feel like they’re “missing” major features which makes some DLCs necessary for a more full experience, but by the time that happens the base game is heavily discounted so base+dlc=full price of a new game.
As someone who recently played a bunch of HOI4, this is not true. Even during a summer sale, game plus DLCs that fix the "new" ways they changed the game is often multiple hundred dollars.
They don't do this out of the goodness of their heart, they do this because it's insanely profitable to make a single game and then charge $12 for every adjustment and additional mechanic over the next ten years.
It's somewhat defensible for them, because I don't need the Japan DLC for HOI4 if I don't give a shit about playing as japan, but it's still the equivalent when Civ 5 charged ten dollars to add religion back to the game and fix the dumb health mechanic that allowed you to kill any unit with ten spearmen.
> Yeah, I truly lament the ruination of the Company of Heroes series.
The original CoH felt like such a well balanced and interesting game!
I have to say that oddly enough Iron Harvest has a similar feel to it, gameplay wise, even if the setting is different.
Then, you already mentioned Men of War, there's also Call to Arms, both of which still seem decent in my mind.
Where available, community made mods can be a nice touch! The community for those isn't too large, though, given the somewhat niche genre. There are also some free RTS games like Beyond All Reason (though it's more similar to Total Annihilation), or some others made in the Spring engine: https://springrts.com/wiki/Games
Very few WW2 themed ones, though. I'd also mention Steel Division, the first game of which had great balance, but the second game in the series feels almost too large scale for me (like Wargame, less about micro with individual units).
I will always remember Company of Heroes fondly, played it a lot with my friends. Such a well made game with much attention to detail and a great sense of humor. Sadly, the magic was lost in the newer versions.
DoW is probably one of the best modern "classic" RTSes. It distilled all of the classic mechanics (resource collection, army management, upgrading, etc) into just refined enough without dumbing things down. It's a shame it progressively got worse with each sequel (focusing more on RPG and MOBA elements).
And there have been plenty of RTSes...the genre just lost it's mainstream appeal in general. In this very thread alone, four others have been mentioned.
Oh hey, I also worked on Company of Heroes, but a good decade later while porting it to iOS. It was definitely among the nicer codebases I worked on at that job. But we did some unholy things to port it and get it working with touchscreens, I'm glad none of the original team have to see that. Decently chuffed with what we managed to bolt on to the existing UI system though.
Thanks for sharing that info on Neall... It had been a few years but he was great to work with on ps3 rollout and other tech fun back in the day. Sorry to hear it :(
You state you will never release it avoid take down, and then when it’s done you “accidentally” get “hacked” and let the Streisand effect handle the rest. It’s either that or developing a remake in complete secrecy and drop it on the internet as a fait accompli.
For examples of what happens if you don’t employ underhanded tactics, take a look at AM2R or the Chrono Trigger remake.
He even pay for the 3D graphics! Essentially he is making ad money, boost his subscribers counts and he is marketing his product sold on the Unity Store.
I joined Radical Entertainment a few years after Hit & Run, and I can confirm that it was filled with very good engineers (and artists!), with really solid hiring and leadership. It wasn't without its flaws, but it was an excellent place for new and experienced developers alike.
Ultimately the transition to 360/PS3 and the massive increase in production value and challenges cracked the company - or, depending who you ask, it was just the Activision merger with Vivendi (owner of Radical).
> I feel like most open source C++ projects I read in non-game spaces are just a complete mess of indecipherable syntax.
This is because a lot of C++'s idioms are a) very old (stemming back from C++98, and slowly morphing with each version) and b) extremely conservative. Ideas that are important to more "modern" languages like KISS and "nothing magic" apply much less, as efficiency is generally more focused on. Especially in systems and embedded development.
> Is this game code uniquely well written or am I often looking at the wrong codebases?
I would say it's multi-faceted. Firstly, the codebases you're referring to probably aren't nearly as messy or archaic to primarily C++ developers. They just seem that way to outsiders; though there are plenty of messy codebases. Secondly, gamedev has it's own paradigms and idioms that are generally structured more agnostically and modular.
That all being said, I would say modern codebases built in C++11 and newer are much "cleaner" for non-C++ developers with more modern idioms.
There are also games with lots of very hacky and ugly code. :)
But I can recommend you to read the code from Quake, Doom, etc. Start with the early versions, because it's even much simpler. I also find this very easy to read and very simple, and easy to hack around with.
I can attest to that, atleast for spectacle. I once wrote a sharing plugin for purpose and spectacle had an issue where it was not propagating possible errors correctly. Setting up a dev environment for kde/spectacle was extremely easy and the code was easy to follow. Took me maybe 3 hours from zero to fixing it and making a PR.
I understand that you're being facetious, but the reality is much darker than this historical trivia might suggest - the web platform is today largely controlled by one mega corp.
Two of three remaining relevant browser engine vendors (Apple and Google) base their browsers in that code base. They could have gone from scratch or used a different base, but they took KDE's. They wouldn't have if it was of bad quality and unmaintainable.
Was pleasantly surprised by the comments.
But while the codebase is grokkable (every line is simple), it's brittle [1].
Not saying it's a big deal: brittle codebases are fine when the codebase is only going to be touched by a small amount of people. Less so when the code is going to be used and modified for decades by thousands of people (in OS, compilers, browsers...).
[1]
Unchecked assumptions everywhere, #ifdef with platform specific code everywhere, singletons everywhere. Only spent 5 minutes browsing the code, I'm sure there's more examples.
singeltons are rather common in game code, it's not that bad. What's wrong with ifdefs for platform specific code though? Alternative is to have different compile-time paths.
In my experience (with gamedev) it often leads to your game silently breaking on platform you're not building it for. Proper CI will catch this, but it still makes the feedback loop longer.
I don’t think you are. I have a couple of decades in the industry, in which I’ve had the honour to see quite a lot of code from many different organisations through one of my roles in Enterprise Architecture in the Danish public sector. In my completely anecdotal experience it takes quite a lot of dedication to the CI part of the development process to achieve clean code bases, and it’s often not something that’s going to be very beneficial in the short term. Over time, I think that most good programmers eventually ends up in a “readable code is good code” mantra, but it’s not an easy path and a lot of the “meta” philosophies that we teach programmers from their first day in programming are sort or counter-productive to writing clean code.
Having gotten into programming around the millennium I’m obviously mostly familiar with the OOP side of things, but many of the things I was taught in regards to OOP is still things I see CS students being taught when I do my side gig as an external examiner. Where I’m from we tend to start learning OOP with a classic “bird -> duck, something that flies, some bird that walks” sort of thing so students can put in “fly”, “swim”, “walk” and “say something” methods. Which is great, in theory, because in the real world (again very anecdotal) people tend to build polymorphism and inheritance in ways that eventually almost always seem to end up with code basis having been better off just writing a duck, a chicken and a ostrich instead of nesting them under a bird class. Don’t get me wrong, I love having basic classes to inherit from in any sort of data-modelling so it’s not like I’m aboard the “I hate all OOP” bus, my point is rather that we still teach students something that often turns out not to produce clean code. Often it’ll take a long time for some of those students to get to a point where they become critical of “academic” programming and many frankly never learn how to write clean code.
In non-OSS you can dictate a lot of things that you can’t with open source without breaking a lot of the concepts. I don’t necessarily think it’s wrong to demand that open source organisations make it a requirement that the only way you can build things for them is if you use their template projects in a technology they want to govern. But that goes against the principle of technology agnostics, so many will rightly not do that. If you don’t, however, take control on how code is supposed to be written, then it’s going to be written in a multitude of ways and I think it’s very hard to avoid it becoming messy over time.
Now, if you have a single project and not an organisation, and maybe you even have changing custodians, then you’re likely going to end up with not only different ways of contributing but also different governing philosophies over time. Which is very democratic, and probably unavoidable, but it’s also very prone to leave you with a code base that isn’t easy to read because it’s not actually written by a single set of “clean code” principles but multiple.
Or in short, no, writing clean readable code is hard.
In contrast, while far from my favourite language to write code in, I found Erlang to almost enforce, or at least strongly hint to the developer, many practices for writing clean code.
20 year old "leaked" code that was apparently previously leaked at some point but no one noticed the first time around. :) I really did love this game back in the day though.
It finally finished uploading on dial-up ;) Yea surprisingly fun game given the premise. Up until that game I thought he Simpson's lived in Illinois instead of Oregon
I think they chose Springfield specifically because how generic a name it was. It is a very common name across many states (might be the most common place name in the US). Groening is from Oregon though.
Some v92 "winmodems" were more glorified sound cards so needed CPU. If the PC was busy, sonetithe line could drop. A 33.6 would be hardware, so there could be a time when slower becomes faster due to CPU load.
All external 56k modems were hardware, some people wouldn't risk an internal card for fear of ending up with a driver based device.
I actually had both a V.90 and V.92 external modem. V.90 was limited to 33.6k upload, and rarely exceeded 50k in download. The side sending at "up to 56k" needed to have a digital connection to the telco (in theory ISDN, but ISPs would have trunk lines usually).
I'm not sure I knew this at the time (if I did, I had forgotten it by now), but V.92 actually did allow sending at up to 48kbits from an analog line. This was usually not used because it would lower the rate coming from the other direction, and l̶e̶e̶c̶h̶e̶r̶s̶ ̶g̶o̶t̶t̶a̶ ̶l̶e̶e̶c̶h̶ most people cared more about downstream.
The first 56k modems were download at 56k, upload at 33.6. In theory that was the same upload speed as a 33.6k modem, but I guess line quality could have caused some issue with the higher download baudrate meaning that the upload suffered (say getting 45 down 28 up)
It wasn't until 2000 that upload got upto 48k (still not the full 56k on the download). I moved to cable/dsl in late 1999 so didn't go beyond 56/33.6
Or you get the damned Lucent/Agere drivers mess the things and transfer garbage instead of data. I still has some mp3s with garbled parts from these times and with 128kbps it's quite audible.
Simpsons Hit and Run was such a treat when it released. The amount of love for The Simpsons as a series that Radical had just oozed out of every pore of the game. It's full of fun little show nods and quips and is just a joy to play
Loved it as well. Also play a lot of Tapped Out and have for years for the exact same reason - it's just got everything that has ever been in the Simpsons and it's such fun to just build the world and watch the characters wander.
I think often about trying to figure out how to strip the assets and build an open source clone for it for when EA inevitably kill it and deprive the world of it.
commit these things and stand by them. I've ended a meeting with "I wrote that because of how obvious it is that composing a more detailed comment is not worthwhile and you've negated the point of that by having this meeting. if you really don't understand, have one of the juniors explain" but you better make sure you're right and so right that even the most contrived counterpoint won't hold water or start drafting new resumes
I would have expected a flurry of activity given the cult popularity of this game. It was leaked on 1st June according to github. Does anyone know if there has been anyone working on this trying to make it run on modern computers? Very fascinating!
You can already run Hit & Run on modern computers - I'm playing it here on an ultrawide monitor full-screen with 5120x2160 resolution. All you need is to download "Lucas' Simpsons Hit & Run Mod Launcher" and enable a couple of compatibility checkboxes and off you go.
I guess it's a way to optimize the build somehow, but you can achieve the same result with a proper build system, well-defined targets, and precompiled headers, but it's more work for the developers.
Torrents handle most people leaching if at least a handful of people are seeding. Westerners with fat upload pipes can support everybody else.
At a bit less than 5GB, this is the perfect candidate for a torrent. Small enough to reasonably seed to a high ratio, while so large that it apparently puts me over mega's transfer quota for my IP..
I'm not sure about upload specifically, but recent lists of countries sorted by average download speed puts a lot of non-Western countries (in the sense of lack of European influence, etc.) near the top of the list.
But your point stands that the large pipes, wherever they are, can support the RoW.
There was a period in the 90s and 00s when gay meant lame. I’m sure many used it hatefully, but schoolboys were just using play yard lingo.
When gay began to mean GAY, people stopped using it to mean “lame”.
This poster is probably 30-50 years old and likely meant no harm. There’s an internet meme “fake and gay” which has nothing to do with homophobia but instead refers to the 90s usage.
I think everyone is aware of this. However the playground usage is based on homophobia. I can assure you (being 38 myself) that we schoolboys all knew roughly what being gay was and that it was something bad and shameful. I do not want to get overly bent out of shape about some idiot’s casual homophobia on a random corner of the internet, but let’s please not deny that it is casual homophobia.
> When gay began to mean GAY, people stopped using it to mean “lame”.
This is completely ahistorical. The ‘lame’ meaning came long after the ‘homosexual’ meaning.
I’ll speak for myself then. I had no concept of what homosexuality was when I was 9, but parroted speech I heard at school. By 13, I was aware of the people using “gay” to mean “homosexual” and I began confronting anyone saying it, and stopped saying it myself as an adjective to mean lame.
I truly didn’t know. There was no internet, so my only source of culture was media and school.
Sure, some individuals may not have known, but the usage is very obviously rooted in homophobia, and any present day adult should be able to see that. People can make thoughtless mistakes and I don’t think this person is the devil, but the comment is a very clear instance of casual homophobia.
Yeh, I raised it here in that same spirit of acknowledging and calling it out.
I'm in my 30's, very happy that I barely hear this kinda direct homophobia anymore. I've long been unpacking the personal repercussions of `gay === very bad` being deep set in my brain in those formative years.
People stopped using it because of enormous mounting social pressure and increasing awareness of its homophobic roots, not as some innate linguistic slide. The "fake and gay" meme comes from 4chan where it has persisted since "gay" was still a pervasive pejorative term, not as a winking post-modern reference to it. Your optimism about the banality of this history is whimsical and it'd be nice to live in that world, but the actual harm of that usage cannot be divorced from the term regardless of your individual intent.
Unfortunately you really can't distinguish if it's actually empowering ironic homophobia of a queer individual or not. Wouldn't take it too seriously, it's the internet after all.
I don’t really see any way this could be ironic or empowering. There are bigger problems to worry about, but we may as well recognize this for what it is.
I hate this trend of the internet where we have to agree with anyone who is offended. I don't actually recognize this for what it could be, and my experience and opinion is as valid as others.
Who is the offended person here who you think that you have to agree with? I’m not really following.
My post that you’re replying to just said that I don’t think that the comment on GitHub is likely to be an instance of ironic empowering homophobia. If you disagree then I have no particular beef with you on that factual point - I just think you’re wrong.
I really dislike this tendency to (implicitly) exaggerate what people are saying when they point out homophobia or other such prejudices. It kills any possibility of a sensible conversation. No-one in this thread has called for anyone to be ‘canceled’.
I really dislike framing people from different eras as homophobes. Back when this was written this was seen as just a joke, no harm intended, no homophobia involved whatsoever.
The relevant comment is on the linked GitHub page and was written recently (June 1 2023), not in a different era. Perhaps that misconception explains your comment.
Also, no-one in this thread has called anyone a homophobe, but only pointed out that the comment is an instance of casual homophobia. It seems that you’d like to have a particular argument with some kind of caricature of a cancel culture warrior, but I’m afraid no-one present actually meets that description!
It's difficult to understand with all the yearly gay prides, weddings recognized by the governments, and ability to adopt children. I recognize that there are still improvements, but it's way more accepted than in the 90s and before.
I’m not dying on your hill of non-sequiturs, don’t worry.
It turns out the remark this is all about is something in the setup of this repository, not by the original authors of the code. My comment was assuming it was. If so, the remark would be not a very shocking one and not rooted in homophobia, and complaining about it would be like complaining the Bible is misogynistic.
Instead, the remark was made in our era and probably rooted in some infantile meme lord attitude and although in my opinion not expressing real homophobia still not appropriate.
I worked on Company of Heroes and Dawn of War during this era. The code looks very familiar. It's the same style of C++. The code looks very similar to Homeworld. https://github.com/HomeworldSDL/HomeworldSDL
I went to SFU, where Neall Verheyde one of the programmers from Radical lectured one semester. Sadly, it looks like he passed away a few years ago. https://www.dignitymemorial.com/obituaries/west-vancouver-bc...