canadian beaver

Hardcore Games is based at Victoria, BC, Canada. With extensive experience in development, its possible to work with small studios using remote desktop where guidance can be provided. Even full development is possible for most major engines.

We have worked with computers since September 1970 when an IBM System/360 model 25 was all there was to learn on. Later we used an IBM System/370 model 168 which was much more powerful. FORTRAN was available on the System/360 and successive machines, Punch cards were standard on the mainframe and vacuum column take were widely used.

The first computer game we wrote was tic-tac-toe which was written in FORTRAN IV. Later when interactive terminals became available the game was a natural as an interactive game. Interactive gaming definitely was an intriguing concept but it could not be leveraged effectively for years to come.

With a CP/M machine and BASIC converting code from FORTRAN to BASIC was fast. The IBM PC we expanded the BASIC software library extensively. PC BASIC was more sophisticated with the improved memory available. Windows uses C and C++ and the 32-bit version eventually moved to 64-bit with backwards compatibility.

On the old IBM System 360 model 25, all that was available was COBOL, ALGOL and FORTRAN. Converting code has become a task for mechanised solutions with F2C and COB2C being some open source solutions. C is very efficient which is why converters use the language as the target. ALGOL was influential leading eventually to C and C++. ALGOL evolved into PASCAL before MODULA-2 and eventually OBERON. The languages were influenced by SIMULA which had far reaching ideas that influenced many languages.

These days not much call for COBOL outside some banks and government agencies. The reason is that most have switched to a web based interface. Some banks still use a terminal to a COBOL based banking system here in Canada.

We also used CP/M microcomputers which were available in the mid to late 1970s as well. The IBM PC surfaced in 1981 and we have uses PC machines ever since. The early hard disks were pretty unreliable so floppy backups were important.

The IBM PC came with as little as 64KB of memory just like the IBM System/360 I started with but there were sockets on the motherboard to increase the memory to 256KB. A card was needed to add more RAM to the machine and to add a real time clock etc. The 8088 CPU had 64KB segments for the memory but addressing was not hard to use as the CPU offered segment registers. BASIC was in the ROMs of the IBM PC which was available as an interpreter and it could save code the floppy disk.

Years ago, games were largely done in Assembler with microcomputers. Turbo C (in 1987) make development slightly easier. Then C++ gained ground and more recently C# has been used for game development. C++ is on average 2-3 times faster than C#. Modern machines however are so powerful that the overhead of .NET is not as bad it used to be. Much of the old code had to be overhauled for Windows 3.1 with Win32s which afforded support for 32-bit development.

The Commodore 64 used a 6502 CPU which was very hard to program. The Radio Shack Color Computer used the 6809 CPU. The 6809 was dramatically better for a developer to use as it had 16-bit addressing so the entire memory space was addressable. The 8088 CPU again lacked adequate addressing to easily see more than 64KB of memory. The 80386 finally provided a 32-bit flat address architecture and now AMD64 moves that to 64-bit.

Early games did not consider physical reality much. Weapon fire moved in a straight line. Eventually games started supporting gravity which affects projectiles, 3D graphics started to emerge in the latter 1980s as processors became more powerful. Doom surfaced in 1993 which really introduced 3G graphics to the world and it did not take long for more games to emerge.

Modern game development needs a good understanding of undergraduate math. Linear algebra is part of the needed curriculum and so vector calculus. Rotation matrices can be coded into a class to simplify development to some extent.

Level of detail has been pushed as the resolution of LCD panels has moved from 1920×1080 to 3840×2160 and beyond. The current LG 27UL500-W panel will be ideal for the 10th generation console period.

Tessellation was a minor part of DX9 but it was moved into focus with DX11. This technique increases the number of triangles making up a given surface which tends to look more natural.

Most recently ray tracing has become a marketing mantra. The PC got into tray tracing long before the GPU ever surfaces. The FPU was adequate for handling the math to slowly render raytraced scenes. The RTX 2080 which supports hardware ray tracing may find traditional rendering to be too demanding for real time.