Hey Frekster,
Quote: "I want to somehow not use walls in the physical sense on a level, however, I have to use something to confine the user, or do I?"
Just a random idea that popped into my head when you mentioned that - How about some sort of a 'rumble' sound. Really low frequency, just audible, low enough volume not to occlude other sounds, and have it increase in frequency as the player gets closer to an object.
So, it'd be an audio collision system.
Where sighted players are able to judge the distance from a wall by just looking ( using parallax effects of the eyes, and the pseudo-3D of graphics ), blind players are able to judge the distance from a wall by listening to the frequency.
It'd take a little for the player to get used to - Testing out the limits such as 'Such and such a frequency means you're just about to hit the wall', 'not able to hear the rumble at all means you're not anywhere near a wall', etc.
As an alternative to increasing frequency, an increase in the volume of the rumble ( only ever so slightly, though ) could be used. Again, you don't want to occlude other sounds in the game.
As for level design, VanB's original suggestion sounds like the best one.
To do that, I would go about making a 'level editor' of sorts to set up some sort of objective system.
Basically, make yourself a very basic audio-game, then put in controls for you to place items/objects/sounds/objectives/trigger zones, etc, and write that out to a file.
Then, take the same audio game without those controls in it, and program it to read in the file, and add a random element to it.
In this fashion, you would be creating 'static' levels that are random each time. Much like, as you said, Diablo.
On the code side of things, you need to consider using a perfectly top-down ( so, vertical ) camera controlled by the arrow keys ( or mouse if you wish ), where you can easily move around the 'map'.
From there, you need some trigger keys, so just using the numpad for example, to 'drop' an item/sound/etc directly onto where the middle of the map is right now.
For you to navigate that map in the 'editor', you would need a simple system whereby when an item/sound etc comes on screen, you are audibly notified, and given an approximate location, so if you wish to edit or remove it, or place something near it, you can simply move over to it.
Consider maybe using a naming system, whereby when you place an item/sound etc, you are prompted for a name, which is then read back to you for each item when they appear on screen - just to give uniqueness to every single item in the 'world'.
Continuing from there, you have to save all this to a file. Just take each item, its type ( so, you'd associate a string with each one and name it "item" or "sound" etc ), its world coordinates, the unique names you gave them, other possible things like sizes or rotations, the last camera position, and write all that out to a file so that your level editor can read it back in straight away next time you want to edit.
For the actual game, you would output a file that didn't have those unique names, and other editor-only attributes, but would instead contain all the data about each object, which would then be fed into a 'world builder'.
This world builder would be used to create rooms from pre-set designs ( that you would have to make another editor for basically in the same manner ), as well as open area's - grass patches, boulders, burnt out car, etc. The world builder would take each of these, and randomly position/link them together to make a world, which would accommodate the items/sounds etc you outputted from the original editor.
It'd be a tricky process to balance correctly, however, once you have it done properly for one thing ( such as random rooms and linking them ), then you can simply apply that approach to all the other aspects, and everything should just fall into place ( I make it sound easy... Easy is what it isn't! ).
Anyway, again I wish you the best of luck with it, and I am more than interested to see what comes out of this project. Be sure to keep us updated with posts in the WIP forum or Program Announcements ( if you have a full game
).
Cheers,
Jess.