Designing games usually requires you to work with a software, not all the time though, you don't have to use one if you don't want to. These software programs(ex: BYOND) guides you towards building games, and they give you the tools to do so. Now it's up to you, the developer, to utilize these tools. Don't let the limitations of the software hold you back; keep creative control in your hands.
Let's use BYOND as an example here - BYOND makes it very easy to create games in ways that it was designed to make them. This guides you in present directions which are inevitably away from the creative ideas you had in your head. But, is it easy to just design the game in the present way? No. It takes effort to overcome this. Below are some tips you can use to keep control of your game and expand its creativity.
Atmosphere and Mood:: Games don't only consist of magical creatures, fighting enemies, and discovering treasures - one of the most important part of a game is the atmosphere. You should consider what you want the mood of the game to be, will music be an inspiration? Sound effects? That's up to you.
Objectives/Goals: Don't burden the game on just one single objective, goal, or reward. Multiple objectives are better than just one single one.(side quests, activities, e.t.c) For example, earlier today I was playing Saints Row The Third for 4 hours straight, from morning to noon. The game didn't get boring at all because of all of the side quests and activities they had to offer, and you know what was really interesting also? I got rewarded for doing them. Don't let boring game-play mechanics overwhelm the player. The constant seeking of the next objective keeps the player interested and moving forward, and he/she knows that they have an achievable goal coming their way.
Don't design your game for your purposes only: Most of today's games are designed with the individual player(which of course is the developer) in mind. I'm pretty sure everybody like to follow different methods or routines in a game. I prefer going off on a wild goose chase and just slaughter everything in sight, some like to follow quests, others prefer interactions with NPCs(non-playable-characters)... the possibilities are endless! Add all of these elements in your game to give players a box full of options.
"The successful man will profit from his mistakes and try again in a different way.": - quote by Dale Carnegie. Mistakes sometimes pay off in big ways. Use this to your advantage and think outside of the box. If you're afraid of making mistakes you will not experiment to expand your abilities. Get honest feedback from your friends who are playing your game, that's always the key. In class, when I'm writing a program I know when I'm not doing something right and when I am, I get honest feedback from my friends and from my professors so that I know when to optimize my code and what I've been doing wrong - that is what feedback is for! Takes note. You're the only one who can see it. You know everything that happens and you know where everything is; you understand innately how to play. The player doesn't know what's coming up next, and remember, you have to design for that.
Analyzing: Use everything to your advantage. Keep a notebook, loose-leaf, sketchbook, or what ever you want to draw and write your ideas. A blank piece of paper will not limit your imagination. When you make the code2programmer(as I would call it), you will be forced to learn new skills and utilize them. Also, you should keep a notebook with you when you play other people's games, it's not something you should necessarily do, just a suggestion. No, you won't be copying the ideas from that game. But instead you analyze what happens and to write down your own original ideas that come from playing.
IT'S OVER 9,000!: Just kidding, the description for this isn't related to that at all. But really what I mean by this is that you can use tons of stuff to expand your horizons. Confused? Don't be. Let's see... real time world transitions(lolwut?).. every time I play a game, I look at its mechanics. Real-time-world-transitions can vary from anything to static shadows, dynamic shadows, real time lighting(dynamic lighting), static lighting, anything! Then, I think about how I can transition that or code2programmer(see above) it into one of my projects, or how it can be helpful to pretty up my game.
Writing Pseudocode: I do this all the time. This is basically displaying your code so that you can understand it(human language?) before you write it in the technical way.
Walk four steps south.
Then walk east three steps and stop.
That's it for today. Stay tuned next time for Game Design Tips #2.