My brother built a 32 bit computer from bit slice chips, my other brother made a tv typewriter IO for it. I was the one who was going to program it. So I made a game.
I had no compiler, not even an assembler or linker. I had to write it in psuedo assembler and then hand assemble and link the code.
One issue I discovered early on was I made mistakes and it made lots of branch statements invalid if things moved. Not having a linker I devised a system where i put a jump table at the top of every module and then all other modules accesed that module via it's jump table. Just an example of approaching a problem.
I had the first ever Sphere computer (look them up! Amazing machine) It was a text only screen and I wanted to write a graphic game for it. So I designed an built my own graphics card, designed and built tank controllers for 2 players and wrote a tank war game for 2 players.
I never saw problems as a wall to walk away from, I saw them as an incredible chance to do something different to be able to scale it.
So when it came to writing a text adventure on a machine with tiny memory I had to get creative. I had not done anything like this before and i was just insprired to do the game, the language, the compiler and the interpreter all at the same time. It just felt right :)
I continue to push myself over walls and today I use Unity, C# and continue to do things that aren't supposed ot be possible.
For example www.finalPilot.com has an underlying network communication package I derived because I couldnot find a current solution that would totally fit the problem domain. It had to work on both UDP and WebGL with the same code base. It was a lot of fun coming up with a working system. WE are in the process of soon starting a new game with some new challenges and its network system will be much different from what Final Pilot uses.
Sorry if I rambled a bit and happy to fill in more details if needed.