2016-09-02 18:51:31 (edited by CosmicNeanderthal 2016-09-12 19:14:37)

As the topic says, we are a small team of developers/students from Cape Town South Africa who are currently developing a first person shooter audio game that features fully simulated 3 dimensional sound. The 3D sound capabilities are achieved through the use of the OpenAL Soft implementation of the OpenAL 3D audio API, specifically making use of the HRTF functionality.

The game plays much like the original Doom video games developed by id Software in the nineties, although with less emphasis on shooting, and more on exploration of maze-like levels with some horror elements included. The player can move and rotate in any direction on the horizontal plane. That is to say that you can move forwards and backwards and side to side, but you may not look or move up and down.

The game is currently in the final stages of development, and we are planning to release it some time in mid-October. We will be distributing the game on a donation basis from our dedicated website, which is not yet live at this time. All donations received will go directly to the Cape Town Society for the Blind.

We are planning on releasing the game as open-source, and have constructed the game to be as mod friendly as possible. The levels are created in a floor-plan format using text-files, where certain characters represent different objects within the game (e.g '|' = wall, 'Z' = zombie). This means that anyone will quickly and easily be able to create their very own levels and play them, should they wish to do so.

Below is a link to the Cape Town Society for the Blind website, as well as my email address if you'd like to contact me directly for whatever reason.

Cape Town Society for the Blind: http://ctsb.co.za/
My email: [email protected]

Please do let us know what you think, and watch this space for updates. Oh and feel free to read the cheesy game-play scenario below. 

You take on the role of a lone survivor stranded on an abandoned space station where some sort of horribly catastrophic event has taken place, resulting in the deaths of all other personnel. You must navigate your way through the labyrinthine hallways of the space station, searching for key cards and fighting off all manner of foul creatures, in order to reach the last remaining escape pod. Armed with your trusty shotgun, you are ready to do what it takes to survive.

2016-09-02 19:46:09

Hello! And welcome to the audiogames.net forums!

This game sounds like it's right up my alley. I prefer games that focus on exploration and puzzles solving over wall to wall battles. This game sounds like it will be somewhat like the Blindside game (http://www.blindsidegame.com/), which I thoughly enjoyed, even though it was short and was never finished, or at least none of the subsequent chapters of the story were never produced.

If you are this close to release, do you perhaps have any recordings of the gameplay we could listen to?

I like the idea of the game's proceeds benefiting the blind, I'd be more willing to buy games if more developers did something like that.

Looking forward with eager, and sweaty hands for this game!

2016-09-02 20:46:12

Hello folks! Yeah, welcome aboard! I thank you for this project, it reminds me of good old games I used to play with my dady. Can't wait to see it working. big_smile
Best regards, Haramir.

The true blind is the one who refuses to see.

2016-09-02 22:04:31

What language will it be coded in? Maybe Peter Meijer's image to sound techniques could make an useful addon, depending on rendering output. I don't have a whole lot of experience in 3D but I have an open source prototype demonstrating the concept over here if your interested in having a look.

-BrushTone v1.3.3: Accessible Paint Tool
-AudiMesh3D v1.0.0: Accessible 3D Model Viewer

2016-09-03 12:06:08

Hi guys! Nice to see we already have a few interested folks!

We are planning on releasing a trailer to showcase the game real soon. I'll definitely keep you guys posted and let you know when that's available for listening.

The game is being written in Java using LWJGL to access the OpenAL API. The 3D sound simulation is made possible entirely by the HRTF functionality present in the OpenAL Soft implementation. If you've ever listened to that virtual barbershop thing, that's basically the experience you'll get when playing the game. Stuff that's behind you will sound like it's behind you and you won't have much trouble figuring it out since it all seems pretty natural. It's actually pretty cool stuff so do read up on  it here if you're at all interested.

I just realised that I never even gave the name of the game haha, it's Blackspace. Most of the sounds we are using in game have been sampled directly from the original Quake game, as well as a couple sounds downloaded from freesound.org.

Keep on posting folks!

2016-09-03 12:45:14

Are you planning on implementing anything in particular to aid with navigation (EG sonars, virtual canes, sonifiers), or is that handled by environmental sounds and such?
Something I've noticed is that the ability to snap to the cardinal directions is an excellent substitute for the ability to visually align to walls and the like, but it does somewhat clash with the idea of making the experience as immersive as possible. In reality, a blind person would align either to things they can touch, or things with an obvious and consistent direction (traffic, the sun, the fact that that army of crickets is probably in grass and not on the road, etc). I've found that doing it that way in audio games is trickier than reality (and in reality it's easier to misestimate how much you've turned); realistic virtual echolocation still isn't available, and if we're aligning by touch, we don't get to move arms or legs or canes to do so, so it's more like bumper-cars. So if there aren't obvious environmental sounds to align to (and sometimes even then, depending on the soundscape), I generally find it easy to get hopelessly lost.
I wouldn't suggest any method in particular, just that whatever it is, it's reasonably intuitive to the majority of players. (Disclaimer: I'm bad at picking methods which are intuitive to the majority of players.)

看過來!
"If you want utopia but reality gives you Lovecraft, you don't give up, you carve your utopia out of the corpses of dead gods."
MaxAngor wrote:
    George... Don't do that.

2016-09-03 13:10:30 (edited by CosmicNeanderthal 2016-09-03 13:10:49)

Thanks Jones, good question.

There are a few rules we follow when designing levels to make navigation as straightforward as possible. Firstly environmental/ambient space station sounds are almost always placed near doors, so that the player should be able to navigate the level fairly easily by simply following these atmospheric sounds. You can hear doors open when you are in range of them, and they close behind you once you have passed through, indicating that you have successfully left that room/passage.

The levels are also designed to guarantee a lot of looping back and forth between areas, so if the player is paying attention he/she can easily get a good impression of the layout of the rooms and passages. We also make sure that each individual room or passage is fairly small, so it's not really possible to get hopelessly lost since there's not too much room to get lost in. The game is going more for an arcade-like approach than a strictly realistic one, we don't generally place sounds in rooms just for the effect alone. Chances are if you can hear a sound, it's been strategically placed there to guide you.

That said it is possible to get a bit confused at times and find yourself bumping into walls, but the game makes it very clear to you when this is happening by having your character make a recognisable "umph" sound, which I suppose could be considered a virtual cane of sorts. When this does happen, one should simply walk backwards or strafe out of that position and try to re-orientate him or herself.

2016-09-03 13:43:27

Hello!
That would be really great!
I am relaly interested in this game.

If you want to contact me, do not use the forum PM. I respond once a year or two, when I need to write a PM myself. I apologize for the inconvenience.
Telegram: Nuno69a
E-Mail: nuno69a (at) gmail (dot) com

2016-09-04 06:32:54

Hi cozmik! welcome to the forum!
good luck with your game and yeah definitely I will try your game when it will be ready.
I have one question
do you use the TTS or human voice in this game?
if the story has been voice over it will be the great as you see in shades of doom by ksapergia.
as far as the navigational system goes it will be great if we can track the object in a particular area.
Thanks
Ishan

life's battle do not always go to the stronger and faster man,
But sooner or later who win the one who thinks he can!

2016-09-04 21:22:22 (edited by CosmicNeanderthal 2016-09-04 21:23:32)

Hey Ishan, thanks for the warm welcome!

We will be using TTS for a lot of the feedback. Stuff like navigating menus and checking how much ammo or health you have left will be dictated to you through TTS.

That said we will have a small introductory sequence where there will be a voice over to give some exposition on the 'story' of the game. We're really focusing on game play here though, so don't expect to hear anything that sounds like Ridley Scott wrote it haha.

2016-09-05 03:14:22

Hi cozmik!
ausam!
as you know the cozmik I mean a cozmik is developing and how it will be cool when a cozmik will look at the cozmik the cozmik is not that you are thinking but defenately you will get the idea.
thanks for responding
Ishan

life's battle do not always go to the stronger and faster man,
But sooner or later who win the one who thinks he can!

2016-09-06 05:03:00

Well, your idea is definitelly awesome!

Thanks for all, I'm waiting for tchec the final game!
And I didn't know that openal supports HRTF X_X. I want use, a lot of time, hrtf on my progects, and I've tried open al sometimes,but I don't know that it supports hrtf rofl.

Exist any tutorial or guide, on how to achieve efectiveli use of hrtf in a openal opogect? I know the listener, buffer an sources stuf, but no how to implement hrtf over your scene configuration :3

Well, thanks for all. waiting for a result!

2016-09-06 15:06:25

Wow, this sounds really cool. I'm excited. I would definitely post this game over in New Releases when it's done.

2016-09-07 23:32:42

The standard OpenAL implementation does not support HRTF as far as I know, but the OpenAL Soft software implementation does. You can download it here. With OpenAL Soft you should be able to enable HRTF in all games that use OpenAL for sound. It's pretty awesome big_smile

2016-09-07 23:41:54

I use LWJGL to access the OpenAL API. The LWJGL forums are very helpful if you want to learn about how to implement HRTF in your projects. This thread helped me get started a couple months back.

2016-09-07 23:44:06

This article explains how you can get HRTF to work in games that use the OpenAL API.

2016-09-12 14:31:21

@CosmicNeanderthal
Thanks for the info!

In personal, Java isn't one of my preferred develop environments, but I can achieve the same result using pyAl or some wraper for .net :3

Thanks for the info! I will use this in the future!


I

2016-09-12 19:13:14

No problem buddy!

Just to update everyone, we are currently working on implementing the last few enemy types to be included in the game. We are aiming to finish with all the engine stuff by the end of this week and then we're just going to be focusing solely on level design. We are also planning to put up a trailer real soon, if not next week then the week after.

Cheers folks!

2016-09-16 06:05:08

Hello @CosmicNeanderthal

Hey, when you try the HRTF configuration with openal, it works nicely at the first time? O do you have problems with it?

In my case, i follow the instructions at http://www.bitoutsidethebox.com/shabda/hrtf-info/
step by step, but something is wrong.

When i tried the new openal settings with the hrtf demo on that page, it sounds exactly same if  i don't have it enabled.

And when  i run the openalinfo tool (32 and 64 bits) it says, in my soundcard HRTF not found, but the alsoft.ini is correctly placed with the settings as the page says, and i put the new dll in windows system32 & syswow 6 folders, but... nop.

This is the ouput of the openalinfo32 tool.

Microsoft Windows [Versión 10.0.10240]
(c) 2015 Microsoft Corporation. Todos los derechos reservados.

D:\programacion\openal-soft-1.17.2-bin\openal-soft-1.17.2-bin>openal-info32.exe
Available playback devices:
    OpenAL Soft on Altavoces / Auriculares (Realtek High Definition Audio)
    OpenAL Soft on Line 2 (Virtual Audio Cable)
    OpenAL Soft on Line 1 (Virtual Audio Cable)
    OpenAL Soft on Line 3 (Virtual Audio Cable)
Available capture devices:
    OpenAL Soft on Line 3 (Virtual Audio Cable)
    OpenAL Soft on Mic 3 (Virtual Audio Cable)
    OpenAL Soft on Mic 1 (Virtual Audio Cable)
    OpenAL Soft on Line 2 (Virtual Audio Cable)
    OpenAL Soft on S/PDIF 1 (Virtual Audio Cable)
    OpenAL Soft on S/PDIF 3 (Virtual Audio Cable)
    OpenAL Soft on Micr├│fono (Realtek High Definition Audio)
    OpenAL Soft on S/PDIF 2 (Virtual Audio Cable)
    OpenAL Soft on Mic 2 (Virtual Audio Cable)
    OpenAL Soft on Line 1 (Virtual Audio Cable)
    OpenAL Soft on Mezcla est├®reo (Realtek High Definition Audio)
Default playback device: OpenAL Soft on Altavoces / Auriculares (Realtek High Definition Audio)
Default capture device: OpenAL Soft on Line 3 (Virtual Audio Cable)
ALC version: 1.1

** Info for device "OpenAL Soft on Altavoces / Auriculares (Realtek High Definition Audio)" **
ALC version: 1.1
ALC extensions:
    ALC_ENUMERATE_ALL_EXT, ALC_ENUMERATION_EXT, ALC_EXT_CAPTURE,
    ALC_EXT_DEDICATED, ALC_EXT_disconnect, ALC_EXT_EFX,
    ALC_EXT_thread_local_context, ALC_SOFTX_device_clock, ALC_SOFT_HRTF,
    ALC_SOFT_loopback, ALC_SOFT_pause_device
No HRTFs found
OpenAL vendor string: OpenAL Community
OpenAL renderer string: OpenAL Soft
OpenAL version string: 1.1 ALSOFT 1.17.2
OpenAL extensions:
    AL_EXT_ALAW, AL_EXT_BFORMAT, AL_EXT_DOUBLE, AL_EXT_EXPONENT_DISTANCE,
    AL_EXT_FLOAT32, AL_EXT_IMA4, AL_EXT_LINEAR_DISTANCE, AL_EXT_MCFORMATS,
    AL_EXT_MULAW, AL_EXT_MULAW_BFORMAT, AL_EXT_MULAW_MCFORMATS, AL_EXT_OFFSET,
    AL_EXT_source_distance_model, AL_LOKI_quadriphonic,
    AL_SOFT_block_alignment, AL_SOFT_buffer_samples, AL_SOFT_buffer_sub_data,
    AL_SOFT_deferred_updates, AL_SOFT_direct_channels, AL_SOFT_loop_points,
    AL_SOFT_MSADPCM, AL_SOFT_source_latency, AL_SOFT_source_length
EFX version: 1.0
Max auxiliary sends: 4
Supported filters:
    Low-pass, High-pass, Band-pass
Supported effects:
    EAX Reverb, Reverb, Chorus, Distortion, Echo, Flanger, Ring Modulator,
    Compressor, Equalizer, Dedicated Dialog, Dedicated LFE

and this is the alsoft.ini file:

hrtf = true
hrtf_tables=44100.mhr


of course, the mhr file is in the same folder  that the ini. c:\users\user\appdata\roaming\

Please  if you can, help me u.u

2016-09-17 00:03:58

Hi Sanslash.

I admit I too had a bit of trouble figuring out if HRTF was indeed working at first. As far as I can tell that info tool doesn't actually seem to work, it still tells me "No HRTFs found". In the end the only way I was able to make absolutely certain that it was working was by querying the HRTF status within my actual program and having it print out to the console. This might be somewhat inconvenient for you if you don't typically write in Java and don't already have the latest LWJGL nightly build but the best I can do is paste you some code to run in your Java IDE of choice which will let you know for certain if you do indeed have HRTF installed.

import org.lwjgl.BufferUtils;
import org.lwjgl.openal.*;
import org.lwjgl.openal.SOFTHRTF;
import static org.lwjgl.openal.ALC10.*;
import static org.lwjgl.system.MemoryUtil.*;

import java.nio.ByteBuffer;
import java.nio.IntBuffer;


public class Main {

    public static void main(String[] args) {

        long device = alcOpenDevice((ByteBuffer) null);
        if (device==NULL) {
            throw new IllegalStateException("Error: failed to open the default device");
        }

        ALCCapabilities deviceCaps = ALC.createCapabilities(device);

        IntBuffer contextBuf = (IntBuffer) BufferUtils.createIntBuffer(3).put(new int[]{SOFTHRTF.ALC_HRTF_SOFT, ALC_TRUE, 0}).flip();

        System.out.println("OpenALC10: " + deviceCaps.OpenALC10);
        System.out.println("OpenALC11: " + deviceCaps.OpenALC11);
        System.out.println("caps.ALC_EXT_EFX = " + deviceCaps.ALC_EXT_EFX);

        System.out.println("\nNum HRTF specifiers = 2: " + (alcGetInteger(device, SOFTHRTF.ALC_NUM_HRTF_SPECIFIERS_SOFT) == 2));

        long context = alcCreateContext(device, contextBuf);
        alcMakeContextCurrent(context);

        System.out.println("Sample rate: " + alcGetString(device, SOFTHRTF.ALC_HRTF_SPECIFIER_SOFT));
        int response = alcGetInteger(device, SOFTHRTF.ALC_HRTF_STATUS_SOFT);
        System.out.println("HRTF enabled: " + (response == SOFTHRTF.ALC_HRTF_ENABLED_SOFT || response == SOFTHRTF.ALC_HRTF_REQUIRED_SOFT));
        System.out.println("HRTF state: 0x" + Integer.toHexString(response)+ "\n");

        AL.createCapabilities(deviceCaps);
        alcDestroyContext(context);
        alcCloseDevice(device);
    }
}

I hope this is helpful.

2016-09-17 10:19:22

Your mhr files should be in C:\Users\User\AppData\Roaming\openal\hrtf just in case you perhaps had them loose.

2016-09-19 09:39:46

First, thanks for the code, I'm gona try it. But if java doesn't work, I can tri using directly the  lib in c++

Respect the folder... ¿are you sure?

the alsoft.ini is placed on c:\users\user\appdata\roaming\alsoft.ini the tutorial say this. And the MHR file have to be at the same folder... or the tutorial is wrong and the mhr file have to be placed in a openal subfolder at roaming?

hTanks for all!

Respecting the tool, well, i have to send a issue to openalsoft github for that case will be checked :3

thanks for all!

2016-09-19 14:22:33

I suppose it doesn't really matter where you put the mhr files as long as you give the correct location at hrtf-paths in the alsoft.ini

2016-09-20 06:04:55

hmmm can you show me your alsoft.ini?

and your current distribution of the files?

Respecting the api, of openal, and for the game. You can override the user settings directly from the game? For example. If the user doesn't have openalsoft installed, and doesn't habe the mhr files or the alsoft.ini  you can use a local openal32.dll placed in the folder of the game, with its corresponding ini an mhr without conflicting with the current settings of the user?

Thanks for all!

2016-09-24 11:49:51

Yes, as long as you have the OpenAL stuff in the same directory as the application I believe it will work just the same. At the moment I still have everything in it's default directory but I intend to change that for the actual distribution of the game. I've pasted the contents of my alsoft.ini below.

[General]
%23sample-type=float32
%23period_size=1024
%23periods=4
%23stereo-mode=auto
%23stereo-panning=uhj
%23hrtf=true
%23cf_level=0
%23resampler=linear
%23rt-prio=0
%23sources=256
%23slots=4
%23trap-alc-error=false
%23trap-al-error=false
hrtf=true
hrtf-paths=openal\hrtf
frequency=44100

[decoder]
hq-mode=false
distance-comp=true

[reverb]
%23boost=0
%23emulate-eax=false

[pulse]
%23spawn-server=true
%23allow-moves=false
%23fix-rate=false

[alsa]
%23device=default
%23device-prefix=plughw:
%23capture=default
%23capture-prefix=plughw:
%23mmap=true
%23allow-resampler=false

[oss]
%23device=/dev/dsp
%23capture=/dev/dsp

[solaris]
%23device=/dev/audio

[jack]
%23spawn-server=false
%23buffer-size=0

[port]
%23device=-1
%23capture=-1

[wave]
%23bformat=false