4 ms·
It has always amazed me how modern tools and languages can empower a single developer to do what large teams used to spend years building a few decades ago.
by mmoez 7y ago
It has always amazed me how modern tools and languages can empower a single developer to do what large teams used to spend years building a few decades ago.
- Crinus 7y agoIf we're talking about something like Unity or Game Maker, perhaps, but someone who has enough knowledge to make a project in C++17 like a game, has enough knowledge to make the same project in C89 with little difference in time spent (if anything it might be faster in C89 since it enforces simplicity and has much faster compilation times whereas C++17 often creates architecture astronauts). Non-programming tools like 3D model editors are another case though as outside of very expensive suites like Mirai, things have progressed much better nowadays. But again this doesn't apply everywhere: for example Deluxe Paint was an easy and popular tool to use for 2D games in the 80s and early to mid 90s and a modern pixel art editor doesn't provide that much more functionality outside of what you can get with modern resources (e.g. unlimited undo).
- fooker 7y ago>if anything it might be faster in C89. You're underestimating the role played by good abstractions in developer productivity.
- manfredo 7y agoI don't think the increase in productivity in re-implementing old games lies in ease or programming. It's the fact that all the art assets already exist and all the game design is already done. And not to mention, marketing, HR, etc. are totally out of the picture. For most games, programming is far from the biggest labor cost.
- fooker 7y agoYou have contradicted yourself. >For most games, programming is far from the biggest labor cost. And as you say, the other bigger costs are out of the picture when re-implementing old games. So, programming is the largest remaining part, almost by definition of 're-implement'.
- manfredo 7y agoI'm pretty confused as to why you think I contradicted myself, and your last couple sentences don't really make sense to me. When making a game from scratch, you need to produce art assets (often 50-70% of the cost of the game is art assets alone), design gameplay mechanics, market the game, test the game, and distribute the game (which, in the old days, often meant making physical cartridges or disks). Let's say that 10% of the labor in making a game from scratch went to programming. When you're re-implementing a game, all you need recreate is that 10%. So if re-implementing a game is an order of magnitude easier than making a game from scratch, there's no reason to think that programming games has gotten any easier.
- Crinus 7y agoI am not, but C++ does not provide any abstractions that would be helpful for a DOS-like game that "someone who has enough knowledge to make a project in C++17 like a game" cannot do (also remember the context in the original message was about stuff made decades ago being made today, not modern AAA engines). Even if you take out the possibility of grabbing something like SGLIB, the two most common data structures in a game you'll need are lists and dynamic arrays and you can create a generic header for both in an hour. What sort of abstractions does C++17 enable that you think are useful for creating a 2D sidescrolling platformer (or anything other decades old game) that are so empowering compared to C to sidestep C++17's deficiencies?
- blub 7y agoC doesn't provide any abstractions period... there is no such thing as a list or dynamic array in C, at best one can build a leaky abstraction based on structs and pointers with almost zero type safety. Case in point, the SGLIB you mentioned, which uses the same old macro tricks from decades ago. Anything is better than C at providing abstractions for building games, because any language offers more than procedures, crude arrays and structs. C++, Rust, C#, Python, Java, Swift, etc. All of these would run circles around C for almost any kind of possible project.
- Crinus 7y ago> there is no such thing as a list or dynamic array in C, at best one can build a leaky abstraction based on structs and pointers with almost zero type safety First of all, type safety is not necessary to create something fast which is what the original comment was all about and everything i'm writing is in the context of mmoez writing how modern tools enable individuals to do work that decades ago would need entire teams and my reply to that was that this applies to some types of tools and someone who knows C++17 enough to make such a game like those made decades ago wont gain implementation speed from the language itself as opposed using something like C89. I repeat this context because i have a feeling from your replies that you are taking my comments out of it. Second, you can use the preprocessor to create type safe lists, dynamic arrays, etc. In fact SGLIB does exactly that, this is why you pass a type to the macros that declares your list types and functions. But outside of SGLIB's approach you can also use include files as templates with parameters passed outside of it. Here is an example i wrote some weeks ago: https://news.ycombinator.com/item?id=19879059 https://news.ycombinator.com/item?id=19879059 This creates types and functions based on the parameters you give to the header. > Anything is better than C at providing abstractions for building games, because any language offers more than procedures, crude arrays and structs. Also a somewhat decent macro system, but so does C++. However i never argued that C is good at providing abstractions (as i show above you can, but it can be a PITA). C++ and some other languages are better than that, sure. What i argued about is that those abstractions will not cause someone who has enough knowledge to write a game like the one submitted here in C++17 to make it "that would need teams decades ago" faster than if he'd used something like C89. In other words, considering the type of project we're discussing about, even if he gains any speed, it'd be minimal.
- pjmlp 7y agoThose architecture astronauts are able to benefit from abstractions and type safety, while still being able to target a C64 class computer. https://youtu.be/zBkNBP00wJE https://youtu.be/zBkNBP00wJE
- blub 7y ago"Architecture astronaut" refers to ivory tower architects not developers using particular languages, get your vocabulary right. And secondly, C is probably the least productive programming language still in use, because of the huge overhead of working with memory. Don't even bother claiming this is not so, I spend enough time reviewing C code to know that this language should be banned for any new project.
- Crinus 7y agoI wrote "creates architecture astronauts" meaning that C++, like Java (although Java does it to a greater extent), pushes people to create unnecessarily convoluted architectures. > Don't even bother claiming this is not so, I spend enough time reviewing C code to know that this language should be banned for any new project. Yeah whatever.
- blub 7y agoI know what you wrote, that's why I pointed out that it's incorrect. And now I have a feeling that you're confusing architecture with design, because neither C++ nor Java pushes people to create convoluted "architectures". While programming languages can nudge architects in certain directions, this is only true for rather special languages, such as Erlang. Both Java and C++ support standard programming paradigms, can and are used to create many types of architectures.
- muterad_murilax 7y agoJeez, could you be more hostile?
- jdmoreira 7y agoThis tone is really inappropriate for HN
- blub 7y agoSaying that C is more productive than <insert any language here> and this kind of thinking is making things worse for everyone: the poor bastards that have to debug the C code written by whoever believes the above, the security teams that are hopeless at securing said code and the SW development industry which already has a poor reputation. Recommending C for anything except Linux kernel development in 2019 is a public disservice. If more of us were appropriately harsh towards C, instead of finding excuses for it based on nostalgia the SW world would really be a better place.
- dkersten 7y agoI put a lot of it on the availability of information and documentation now. And modern operating systems and libraries are better than having to directly poke at obscure low level hardware like you had to do back then (I mean, not to detract from this persons excellent work, especially all the low level reverse engineering, but using SDL + OpenGL is a lot easier than poking at hardware registers in weird graphics modes and crazy sensitive VGA timing).
- bluedino 7y agoLarge teams? Most games like Duke were written by a single programmer and maybe 1-3 artists and a sound guy in just a few months.