I'm going to reduce your question to 8-bit games since those were the "early ones" (unless you are talking about games on the PDP-11.. but that's a different animal, entirely.) Your topic is also pretty much bait, in a way. But fun bait just the same.
Most guides say they were written in Assembly, but C++ has been around since the '70s, and they also had Pascal.
Pascal had been around since Dr. Wirth first invented it (my recollection says "late 1960's" and perhaps to the "early 1970's" when I first heard about it. However, it was very very difficult to get ahold of -- unless you were a student at an elite college and an up-to-date teaching crew. Which means most of us hoi-polloi couldn't get our hands on it, even through we tried (I certainly tried.) When UCSD Pascal came out, things became a bit easier (roughly 1980?) and books arrived in the late 1970's discussing the P-machine, which really did help people in porting Pascal on their own. Wirth also wrote a book (black hard bound cover, as I recall) called "Algorithms and Data Structures" in 1976 (which I bought) and near the end of that book Wirth develops a PL/0 interpreter which also went a long ways in helping people just "get started" writing their own interpreters.
This is around the time that "The C Programming Language" book came out (1978) and when I was first working on the Unix v6 kernel code (written in C and in PDP-11 assembly code.) It was my own first experience with C.
C++ was NOT here yet! Not in the late 1970's. It was being used by Bell Lab's as part of some research on their telephone switching systems, circa 1980 or so. But it was NOT in any way or form available to the public at this time. I think the first announcement I saw about C++ would have been around 1985. It was still "C with classes" at least until 1983 and probably later. When I first saw it, circa 1985, it was a pre-processor called CFRONT (last version was 4.0) And I was writing compilers, so I was kind of around these people and exposed as much as anyone to it, I think.
So no C++ in the 1970's. Sorry, not so.
For most of us doing coding on the Altair 8800, IMSAI 8080, Apple II, and IBM PC (and I was a cofounder of a company selling Apple II and IBM PC software nationally), it was assembly code. Memory was quite tight. I don't think most people today have any clue at all about that. It was very tight. By the time the IBM PC first came out in August of 1981, the standard memory system was 64k byte! And I considered that to be "HUGE." I'd developed a complete interpreter to fit in just 5k byte leaving room for user programs in the remaining 3k byte of an 8k byte system!! So for me, 64k byte was incredible. But still, commercial applications needed RAM and even the few C compilers available at the time were not particularly efficient in their code generation. There really was little choice in the matter. You wrote in assembly. You also wrote in C, perhaps. And sometimes you used BASIC as a "harness" of sorts and used it to invoke your assembly code.
I don't think I started writing applications "mostly in C" until about 1985, or so. Even then, there was still a requirement for assembly coding -- for commercial applications, anyway. Windows 1.0 through 1.04 also came out (none of them worked worth crap.) It wasn't until Windows 286 and Windows 386 arrived (windows 2.10) that anything was worth a darn. Here, you coded in C and assembly, routinely.
For games, it all depended. For games which targeted "game machines" that had very little RAM available and relatively slow processors, you were pretty much stuck writing assembly code -- perhaps in a mixture with C, if lucky. There was NO POSSIBLE WAY you could do this without the use of assembly code. If for no other reason, then because C itself doesn't have the semantics and syntax to permit the required hardware mapping (C uses a very strict and rather simple model of the world, which pretty much fits zero game machines of the time.)
There are engines today, such as Unreal Engine, that are used to reduce time to create a game.
Well, 30 years and more have passed. There were no packaged software back then. If you were a business and wanted to use an Altair 8800 for business work, you hired a custom programmer. Because there were NO PACKAGES. Didn't exist. Not at first, anyway.
Today, you have veritable oceans of RAM and multi-core CPUs and at least a factor of 10 if not a factor of 100 more programmers out there developing tools for you.
I really find it hard to believe every game in the 80's and 90's was created by scratch, in ASM, especially since many Nintendo and Capcom games look very similar. Seems like you could upload 100-500kb of graphics and some program would store it all correctly, and the programmer would just need to write things like which direction the graphic fired, or what graphics to display when he died, upgraded armor.
Well, you are bandying years around a lot. The 1990's were nothing like the 1980's which were nothing like the 1970's which were nothing like the 1960's, to be honest. Have you ever worked with a mercury delay line memory? I have. These are tubes of mercury with little vibrations in them. The ones I worked with could store 2000 bits in them as a "circulating memory." You'd rack up 42 of these to make up a single 42-bit wide memory system with 2k to work with. Ever work with a drum memory (8k byte the size of a washing machine and costing more than a car and slow as molasses?) I did. Ever work with core memory (little donuts with three wires threaded through each of them and looking like a kind of "weaving loom" of sorts?) I did.
The 1990's saw the demise of the RISC vs CISC wars of the mid to late 1980's, the advent of the reflection wave PCI bus and the movement towards the new Windows NT/2000 kernel. Memory systems were measured in 100's and then 1000's of megabytes, processor speeds near and then exceeding 1 GHz in that decade. The 1980's were basically going from the 8080 to 8086 transition at the beginning of the decade and memory sizes typically in the 8 kb to 64 kb area, to the 80486 and fast floating point and memory sizes that were 1000 times larger. 1985 was the first year that Intel made more money selling processors than memory! The 1970's started out with no microcomputers at all and the cheapest minicomputers costing $100k (back when $100k actually meant something) for a PDP-8, to the development of C as a language and the PDP-11 16-bit minicomputer (costing in some cases nearly one million dollars) to the development of the first affordable kit computer, the Altair 8800 in the last 1974 to early 1975 period. Calculators were horribly expensive, but at least they were no longer the mechanical monsters of the 1960's! Glass terminals were in their infancy and didn't become more common until the TV typewriter or the ADM-3A (I built one from a kit) or the Altair 8800 memory-based displays. Graphics was almost unheard of and we were using periods and asterisks on line printer paper to print pictures, for gosh sake. Pong was the game of this decade. The 1960's? Multi-million dollar computers on raised, air-conditioned floors built in special buildings and owned by just a few of the wealthiest companies in the world.
When I wired up my first computer, it was using 7400 parts. I designed it. And it worked. Had the news folks at my doorstep because "some kid made a computer in 1974." When I next built an Altair 8800 from a kit, it came with 256 bytes of memory. I could not even afford to buy the added 768 bytes of memory I wanted, which could have fit into the three remaining empty sockets on the board. 256 bytes of memory cost me almost as much as the entire computer did!! I couldn't afford it. So it wasn't until a year later that I could afford to buy two 4k dynamic ram cards (which I had to make, of course.) Around this time, all I did was write in assembly code (or machine code directly, toggling in the bits with my fingers.)
Darned yes, people wrote entire commercial applications in assembly. You are talking to one who did. I also later got to work on the Intel chipsets you use, working at Intel in the 1990's.
Language choice depends a great deal on circumstances. Until at least 1986 or so and probably until after 1990 in many case, game machines were just too cost-conscious and strapped for resources to make extensive use of higher level languages and still have their game products be very competitive. Those that delivered well and survived well were almost certainly heavy in assembly code, I believe.