I feel like the poll didn't allow be to answer one of the questions accurately:
What is prototyping to you?
The actual nature of the prototype depends on the subject. Typically, the first prototype will be completely minimalistic - the lowest-fidelity representation of the system which still allows it to be experimented with in a way which will transfer meaningfully to the final system.
If I have an idea for a control scheme, weapon/skill, AI behavior or something of that nature, the minimal prototype may be something interactive created with a scripting language. I will no doubt be using terrible placeholder art - stick figures, stolen sprites (non-animated) or boxy models.
An idea for a graphical effect may be testable in Photoshop. I've tested ideas for shader-based effects using a scripting language like Python. The prototype may not even run in real time, but it allows me to gauge the results and play around with ideas more easily and in a more productive environment.
On the other hand, it may be possible to effectively play around with the idea using a few improvised props (bits of paper, game pieces etc). Turn-based battle system? Play with a friend on paper.
In fact some systems are very nebulous, and a typical interactive prototype may not make much sense. A skill or development system, for example, generally works in terms of abstract inputs - the player kills an enemy of level X, the player spends Y points on a stat, the player casts a spell Z times etc. To build a representative prototype of this might require you to implement shallow versions of all sorts of related systems such as combat, movement, casting and so on, simply to provide input to the system you are actually trying to experiment with. Suppose you want to estimate the rate of player growth or damage against enemies of various levels resulting from a particular character development system you have in mind - does it make sense to spend hours artificially grinding away in an interactive prototype? At this point you're probably better off using a spreadsheet! (After all, that is how the most obsessive players will be calculating their optimal builds anyway...). Of course, this is still a system you'll want to playtest, tweak and balance once the related systems (combat, casting etc) are actually implemented and you can put it in its proper context.
Finally, prototyping a game may not be the same thing as prototyping a single system or mechanic. Generally, my actual approach to beginning design / development of game is more like the following:
- Have an idea. Make notes. Over a short period of time, I will begin to develop a broad vision of what the game will consist of. Keep a notebook and continue to make notes of new ideas in off-time throughout the following steps
- Prototype the core mechanics. Often this consists of basic control / combat, implemented with placeholder art in Python. Play around with it. If it's engaging, consider going further with the idea. I believe that the very act of interacting with a game or controlling your character should be satisfying
- Create a "playground" area. Usually hacked together with what I expect to be the final development language. For a side-scrolling platformer, first create a character floating in thin air. Then add basic movement. Then perhaps a floor. Then a box to climb on to. Then walls. Then maybe a simple enemy, etc, etc... Basically, populate this test area with new game entities as you create them, to provide an accessible way to play with them
- More brainstorming of specific mechanics / abilities. As I now have my playground area, I can often prototype these ideas with minimal effort
- Think more seriously about the world, the mood of the game, its setting, the people / factions involved, what messages I want to get across etc. I've usually had some sort of vision for this in my mind since the beginning of the process, but now begin to build it around the gameplay in a meaningful way. New factions may give me ideas for new game mechanics, and vice versa
- Clean up the code. Some sort of save/load is usually implemented at this point, which allows the playground world to become one of several test worlds or mockups of planned scenarios
For example in my current game (a space shooter), I decided that I wanted some kind of robot faction. Thinking about this led me to the idea of networked swarms of ships. I knew about flocking/swarming AI, so tried that out in my playground area, using a spreadsheet to help me come up with reasonable initial parameters for the algorithm. It looked pretty cool, but then I considered the possibility of the robots spontaneously splitting/joining/reassembling with nearby teammates in flight. This turned out to be very interesting when prototyped, and actually added some more strategy to the combat. This splitting/merging mechanic was born out of a combination of thinking about the lore (how such a robotic race might work using self-assembling nano-robots) and playing with the earlier prototype of basic flocking behavior.