One of the goals I've set for games I want to create is for accessible gaming. What is that? Simply put, making the game usable my as many people as possible, by being aware of how people with disabilities play the game.
For people who don't regularly work in the disability area, it often gets confusing and sometimes beyond awkward to address disability without having personal experience. Sometimes people are also insensitive to having a disability - insensitive to anyone other than themselves really - so I'll also point out that almost everything needed to address the specific use-case of disability, improves the usability and gameplay of the games themselves. I'm not going to mention disability-specific technologies.
There is an example of a blind gamer playing Zelda OOT by listening to the sound in 3D: http://www.youtube.com/watch?v=nmmqarQRSSE
Notice that he relies upon the 3D sound features for orientation, and there is a nice usability for some of the actions that have unique sounds. Some players might not have immediately noticed the sound events, but may have subconsciously relied upon them to enhance their gameplay. For this gamer, it became a critical feature that allows the game to be played.
There are other things to notice, including ways in which we could improve the game not just for a blind gamer, but for any gamer. Did you notice that he would save, then jump to figure out where objects were? Did you ask yourself how did he know where to go left or right or up or down - they weren't things that seemed to have unique sounds to them. He explored his environment and figured out where things were through trial and error. There are sounds the avatar makes that don't always naturally convey being blocked or walking in place, that could easily be created and enhance the game. There was a moment where he continually jumped down into the pit to orient himself - because that was the only way to feel out the map - that made me wonder about other game mechanics and features I might add to keep that action in more plausible game terms: what if the character had a pocket full of pebbles that could be thrown and get audio feedback and the camera might follow for awhile such that he wouldn't have to jump? How might that lead to other ways for players to interact with the game that might not have been thought of otherwise? Using the pebble game mechanic we might have a better understanding of how far a ledge is before I jump or I might be able to trigger a trap or find how deep a cave is without walking into it; all sorts of ideas might come into play.
So something such as "3D spatial sound" isn't just a cool feature, it is something that we might consider as being required for any well-crafted, accessible game. That requires everyone from the artists who create the art (and sound maps for that art) to the developers (to ensure the 3d video engine matches the 3d audio functions) to the designers (ensuring unique sounds for unique events and allow users to configure them ) to the testers (ensuring the 3d sound works as intended; torches don't sound like jet engines from 20 feet away, you can't hear through solid walls, etc.) understand it.
Mezz's Mess
Tuesday, May 10, 2011
Thursday, April 21, 2011
Premature optimization is the root of all evil
And optimization where it isn't needed, stinks.
While viewing response to someone asking why their code didn't work, someone responded noting "To save yourself some typing, when you have an expression in the form 'a = a-b', you can write it as 'a -= b'. In your code, it would mean that 'health=health-dmg' can be written as 'health-=dmg'."
I'm glad they took the time to respond and educate, but I can't quite help thinking that the idea expressed isn't natural and doesn't result in any real benefit to the compiled program and ultimately hinders understanding. Certainly not for the site where the question was posted, the developer was not experienced and was asking for help.
Do those of you who are experienced understand how this sort of thing puts some people off? Is it that you've forgotten what it is like to be honestly ignorant? Do you think it is really important to be aware of and use that specific expression?
The question was about understanding a concept, not about optimized semantic expression.
Those of gear wisdom please note: "dumbing down" is an intellectual challenge and opportunity for the teacher and mentor - not a reason to be critical of the student.
While viewing response to someone asking why their code didn't work, someone responded noting "To save yourself some typing, when you have an expression in the form 'a = a-b', you can write it as 'a -= b'. In your code, it would mean that 'health=health-dmg' can be written as 'health-=dmg'."
I'm glad they took the time to respond and educate, but I can't quite help thinking that the idea expressed isn't natural and doesn't result in any real benefit to the compiled program and ultimately hinders understanding. Certainly not for the site where the question was posted, the developer was not experienced and was asking for help.
Do those of you who are experienced understand how this sort of thing puts some people off? Is it that you've forgotten what it is like to be honestly ignorant? Do you think it is really important to be aware of and use that specific expression?
The question was about understanding a concept, not about optimized semantic expression.
Those of gear wisdom please note: "dumbing down" is an intellectual challenge and opportunity for the teacher and mentor - not a reason to be critical of the student.
Friday, April 15, 2011
New Version of Blender3D is out!
There is a new version of Blender3D out.
"If you're used to the old Blenders, Blender 2.5 may seem quite different at first. Be prepared to read a bit about this, how to reconfigure things, and learn to use the new built-in 2.5 search functionality!"
"If you're used to the old Blenders, Blender 2.5 may seem quite different at first. Be prepared to read a bit about this, how to reconfigure things, and learn to use the new built-in 2.5 search functionality!"
Monday, April 11, 2011
Learning To Live Together
One of the things I've been noticing on my travels across the web is the number of different projects that have all had similar ideas and started their own projects.
I can certainly understand their desire to create something they are interested and share it with others. I have the urge to do the same thing, but instead of putting out code, my approach is one of planning before execution of code. What framework should I use? What balances out with the easiest thing for me personally to implement? What is the learning curve and how long will it take me? Which technologies are most likely to be used by anyone else I might contact? What do I not know that will reduce my chances to produce a workable product?
The primary goal I'd like to already have addressed is that the work could be easily leveraged by another project. I think having many people being able to have their own projects and ideas is a wonderful, varied thing, that should be encouraged. However I am very much aware that most projects don't survive on just the enthusiasm of the core developers. Having code that is freely available to be leveraged by others is needed to help create more chances, more projects, to allow new creativity to fold back into other projects.
So I've added that to one of the goals to address by my project. I am looking to find tools to help separate functions from code, and document and communicate those functions in ways that other ciders and projects can isolate a specific function or feature and then get to the specific code.
I can certainly understand their desire to create something they are interested and share it with others. I have the urge to do the same thing, but instead of putting out code, my approach is one of planning before execution of code. What framework should I use? What balances out with the easiest thing for me personally to implement? What is the learning curve and how long will it take me? Which technologies are most likely to be used by anyone else I might contact? What do I not know that will reduce my chances to produce a workable product?
The primary goal I'd like to already have addressed is that the work could be easily leveraged by another project. I think having many people being able to have their own projects and ideas is a wonderful, varied thing, that should be encouraged. However I am very much aware that most projects don't survive on just the enthusiasm of the core developers. Having code that is freely available to be leveraged by others is needed to help create more chances, more projects, to allow new creativity to fold back into other projects.
So I've added that to one of the goals to address by my project. I am looking to find tools to help separate functions from code, and document and communicate those functions in ways that other ciders and projects can isolate a specific function or feature and then get to the specific code.
Monday, March 28, 2011
Just finished reading: Game Engine Architecture
I just finished reading Game Engine Architecture by Jason Gregory.
It was an interesting read for me as an experienced coding developer. The book covers issues generic to any game engines, including consoles (i.e., PS3, XBox 360), issues specific to the hardware design such as endianness, differences of game engines across different types of games, and how a game team or game designer needs to think about engineering their own games. It also covers some of the basics of what every team and individual needs to have and use as part of their personal software development process (version control and how that affects configuration control, including coding techniques to use during development and debugging).
I particularly found the diagram of runtime engine architecture of interest, as it gave a visual to the conceptual issues of how to chunk game specific functions and engineer solutions to common game problems.
I also was somewhat relieved to find some of the tools I've been exploring for my own development were referenced and noteworthy. It also confirmed my concern that content creation is going to be the biggest issue in terms of creating a product.
Other useful tidbits for me were discussions on the core master control routine that calls and controls all the other game functions, discussions on resource metadata and model and art databases separate from or as part of the game itself, how to flag those resources in-game during play-testing or debugging via a suggestion of a debug drawing API, how to think about subroutines called out from the master control routines as it relates to multi-threaded or multi-processor programming, a lot of math related to 3d surfaces and objects (that has caused me to go and chip some of the rust off of my math skills), and finally, most interesting to me because of how it might affect game play of some of my ideas of how I want a space game to work, discussion on collision, in-game physics, and how that relates to the in game 3d models and bounding surfaces of those 3d models.
I've also noticed that I have difficulty in scanning through code samples and reading about pointers. Luckily, I've kept at it and found a few basic examples to help me muddle through understanding how the semantics of writing them in code (dereferencing) was confusing me - not the concept of pointers! Thanks to Bart K. and Free Gamer as well as a fun trip through high simplification at Learning C++ Pointers for REAL Dummies!
It was an interesting read for me as an experienced coding developer. The book covers issues generic to any game engines, including consoles (i.e., PS3, XBox 360), issues specific to the hardware design such as endianness, differences of game engines across different types of games, and how a game team or game designer needs to think about engineering their own games. It also covers some of the basics of what every team and individual needs to have and use as part of their personal software development process (version control and how that affects configuration control, including coding techniques to use during development and debugging).
I particularly found the diagram of runtime engine architecture of interest, as it gave a visual to the conceptual issues of how to chunk game specific functions and engineer solutions to common game problems.
I also was somewhat relieved to find some of the tools I've been exploring for my own development were referenced and noteworthy. It also confirmed my concern that content creation is going to be the biggest issue in terms of creating a product.
Other useful tidbits for me were discussions on the core master control routine that calls and controls all the other game functions, discussions on resource metadata and model and art databases separate from or as part of the game itself, how to flag those resources in-game during play-testing or debugging via a suggestion of a debug drawing API, how to think about subroutines called out from the master control routines as it relates to multi-threaded or multi-processor programming, a lot of math related to 3d surfaces and objects (that has caused me to go and chip some of the rust off of my math skills), and finally, most interesting to me because of how it might affect game play of some of my ideas of how I want a space game to work, discussion on collision, in-game physics, and how that relates to the in game 3d models and bounding surfaces of those 3d models.
I've also noticed that I have difficulty in scanning through code samples and reading about pointers. Luckily, I've kept at it and found a few basic examples to help me muddle through understanding how the semantics of writing them in code (dereferencing) was confusing me - not the concept of pointers! Thanks to Bart K. and Free Gamer as well as a fun trip through high simplification at Learning C++ Pointers for REAL Dummies!
Sunday, March 27, 2011
My Spoon Is Too Big!
How do you eat an elephant? As the saying goes, "One bite at at time".
As a "new" developer, it is mighty tempting to bite off more than one can chew. When we are new to a discipline as complex as modern computer programming, it can be hard just to figure out where to start. We don't know how much we can eat or how much we can stomach in one sitting!
I've saw a development posting for someone asking how to make a text-based navigation, similar to what was used in the classic Zork or Adventure text-based games: "go north", "east", "up", "climb", etc. This computing "problem" has been solved many years ago, but learning how to reason out a specific design, the specific way to code, takes some understanding and learning.
I too have been trying to get through as much material and reading as much as possible in hopes to speed up the "eating of the elephant". I have some awareness of the large amount of work ahead of me. But some days after setting and finishing my reading goals, reading the responses spooned out from other developers, I can't help thinking that perhaps it isn't only a matter of simply keep chewing but instead I don't think they same way as they do (perhaps I am a banana)!
As a "new" developer, it is mighty tempting to bite off more than one can chew. When we are new to a discipline as complex as modern computer programming, it can be hard just to figure out where to start. We don't know how much we can eat or how much we can stomach in one sitting!
I've saw a development posting for someone asking how to make a text-based navigation, similar to what was used in the classic Zork or Adventure text-based games: "go north", "east", "up", "climb", etc. This computing "problem" has been solved many years ago, but learning how to reason out a specific design, the specific way to code, takes some understanding and learning.
I too have been trying to get through as much material and reading as much as possible in hopes to speed up the "eating of the elephant". I have some awareness of the large amount of work ahead of me. But some days after setting and finishing my reading goals, reading the responses spooned out from other developers, I can't help thinking that perhaps it isn't only a matter of simply keep chewing but instead I don't think they same way as they do (perhaps I am a banana)!
Tuesday, February 22, 2011
Time flies like an arrow...
...fruit flies like a banana.

~Julius Henry "Groucho" Marx
I can't believe it has been over a month since I posted. Goes to show you that communication is hard, dedicated work!
I have been somewhat (to my mind) productive. I've goofed off a bit reading space opera novels (The Reality Dysfunction, The Neutronium Alchemist, The Naked God), but also have been reading up on some of the technologies (Game Engine Architecture) needed for creating my own multiplayer space-based game. That included starting down the path to learn Blender 3D and scrape the rust off of my coding skills. Maybe I should state coding-fu, so I can refer to my fu being weak and avoid injuring the definition of 'skill'. I think I'll drink some coffee and go nice and easy into remembering what I forgot about C++ development...

~Julius Henry "Groucho" Marx
I can't believe it has been over a month since I posted. Goes to show you that communication is hard, dedicated work!
I have been somewhat (to my mind) productive. I've goofed off a bit reading space opera novels (The Reality Dysfunction, The Neutronium Alchemist, The Naked God), but also have been reading up on some of the technologies (Game Engine Architecture) needed for creating my own multiplayer space-based game. That included starting down the path to learn Blender 3D and scrape the rust off of my coding skills. Maybe I should state coding-fu, so I can refer to my fu being weak and avoid injuring the definition of 'skill'. I think I'll drink some coffee and go nice and easy into remembering what I forgot about C++ development...
Subscribe to:
Posts (Atom)


