4 ms·
I'm impressed as well! It's exciting to see folks so enthusiastic about the game. I took a deeper look at the github project. It's been a long time since I w
by mike_san 5y ago
I'm impressed as well! It's exciting to see folks so enthusiastic about the game.
I took a deeper look at the github project. It's been a long time since I worked on the Space Cadet code, but the decompiled github code is pretty familiar. It's formatted differently of course, but I think it's actually better than the original.
And, nice! Check it out David and Kevin: k4zmu2a got the quotes in! https://github.com/k4zmu2a/SpaceCadetPinball/blob/master/SpaceCadetPinball/control.cpp#L647 https://github.com/k4zmu2a/SpaceCadetPinball/blob/master/Spa...
Now I'll never live down how long I spent working on the flippers.
Bonus points for anyone who knows why the classes in the source are prefixed with a 'T'!
-Mike Sandige (Lead programmer on Space Cadet)
- mzs 5y ago"She may already be a glue bottle" What?
- mike_san 5y agoThis quote is mine, and is related to a game we were working on for Microsoft before we pivoted to pinball. There was a bug - probably mine - where the game displayed the previous state for an object, but the object had changed state, so the resulting behavior was confusing. 'she' and 'glue bottle' were referring to imagery used for the placeholder prototype artwork. I was trying to explain what was going on, and it made sense, but only in that incredibly constrained context. Outside of that context it's nonsense, but that's what makes it memorable and humorous to us.
- justsid 5y agoDefinitely thought that was about a childhood horse
- mysterydip 5y agoThanks to both of you. It took me a while to realize the depth built in. I tried making a pinball game many moons ago but couldn't get the ball to "feel" right (flippers as well). How was that process? Did you go play physical tables, go for a realistic approach, or tweak magic numbers until it "felt right"?
- kgliner 5y agoWe played every table we could get our hands on. Also rented tables weekly to be brought into the office once we moved to Austin. I tried to dig as deeply into the history of pinball too, to understand why tables had evolved the way they had. Mike (Sandige) built a scripting system that allowed me to tweak the physics, materials, etc. of each component. But our constant exposure to real tables helped us form a "feels right" baseline to target. I also applied whatever I'd learned at that point about game design fundamentals (it was early in my career). After we finished 3D Pinball and started on Full Tilt, I got put in touch with a seasoned designer of real pinball tables who had worked on some hits from the 70s. He took me to task for a bunch of mistakes I made in 3D Pinball, and some of those corrections found their way into the Full Tilt version of Space Cadet (and more so in the other tables in Full Tilt). Kevin Gliner (designer and producer for 3D Pinball, etc)
- mysterydip 5y agoWow, great info. Thanks!
- secondcoming 5y ago> Bonus points for anyone who knows why the classes in the source are prefixed with a 'T'! Was it written in, or ported from, Delphi?
- alternatetwo 5y agoHas to be ported, since Delphi doesn't generate PDB7's. Or at least written by someone familiar/used to Delphi, since Age of Empires utility classes are also prefixed with T, but the game was obviously written in Visual Studio - but some dev tools were written in Delphi, so somebody seems to have taken the naming scheme from there in that case.
- pjmlp 5y agoBorland C++ frameworks used the same coding conventions as Turbo Pascal/Delphi. They still use them.
- mike_san 5y agoyep, this is it. The project started out in Delphi, but I had to port it to C to integrate with the Windows Build. For some reason they didn't want to include Delphi tooling in the Windows build.
- nopakos 5y agoFrom wikipedia: "...[Danny Thorpe] in 1994 while at Borland, he contracted with Santa Cruz startup Cinematronics (David Stafford and Mike Sandige) to build a component model and collision physics engine for a software pinball game. Cinematronics licensed an early version of the pinball engine to Microsoft" Maybe Borland and Delphi has something to do with the 'T' prefixes. Source: https://en.wikipedia.org/wiki/Danny_Thorpe https://en.wikipedia.org/wiki/Danny_Thorpe
- pjmlp 5y agoBorland's C++ frameworks use the same convention, to this day.
- mike_san 5y agoYep, this is the reason. Danny's initial code used Delphi with this convention. I'm not actually sure why that convention is used there, though. I remember asking Danny why, and I think his answer was just that was the Delphi convention. But it's been a while, so perhaps I have forgotten the details of his answer. I later had to migrate to C++ to integrate with the Windows build. And I retained the naming convention, mostly because it was quicker than changing it and I didn't have a lot of time. But I was always uncomfortable with the T prefix on the ramp class.
- unwiredben 5y agoI remember using lots of T classes back in the early 90s when I was building software using Turbo Vision, a text user-interface framework bundled with Borland C++ (https://en.wikipedia.org/wiki/Turbo_Vision https://en.wikipedia.org/wiki/Turbo_Vision)
- justshowpost 5y agoAbsolutely not. "T" prefix stands for "type" and has its roots in case-insensitive Pascal /* eg common C style notation involving type identifier and var identifier is illegal in Pascal */ Rect rect; (* so Pascal requires some distinct identifiers eg *) rect: TRect; the other common prefix is "P" which stands for pointer type
- veddox 5y agoGreat to see you commenting here! :D Were those quotes some kind of cheat system?
- mike_san 5y agoThese were just a fun little Easter egg that made us smile. Typing the right code displayed memorable quotes collected from various folks at Cinematronics in the hectic time we were developing Space Cadet. Maybe I can find some time to check with the folks that they are ok with it, I can put together a commit that comments who said them. I don't recall who said all of them, but I'm sure David and Kevin can fill in my gaps. There was a more deeply hidden Easter egg that shows the credits as well. Code to trigger that is not in this repo, though.
- pjmlp 5y agoBorland C++ OWL and Turbo Vision. :)
- kingcharles 5y agoAlways interesting to see the things hidden in games. When I was in the biz I was aware of many easter eggs, a lot of which are still unknown to the public. For instance, this sign in GTA:SA has the word "TFT" on the back which is a reference to a secret video game "Illuminati": https://gta-myths.fandom.com/wiki/Signs_(GTA_SA)?file=Egg_8.jpg https://gta-myths.fandom.com/wiki/Signs_(GTA_SA)?file=Egg_8....