2016-02-20 21:23:58

Hi,

I'm looking into creating (a few) audiogames of my own, but am a little confused about the current recommended way(s) of going about it.
Here's what I've compiled so far by looking through both this forum and the blastbay toolkit forum:

BGT:
- Easy to start with and build projects because of pretty much all audiogame features having support at this point
- somewhat tricky to extend with unsupported features because its a nitch language (not sure about the interoperability between bgt and AngelScript or even c/c++)
- Abandoned pretty much, I think the last release was at least a year ago, maybe less. On the bgt forum are some code snippets now and again, but nothing like usable libraries really

.NET:
- A lot more feasible then it used to be due to the fact windows editions ater vista tend to have what you need already built in
- Not sure how good audio support and other game-related features like mouse, joystick and network support are and if people have figured out strategies for those. I'm sure tools exist, just wondering which ones would be best
- SlimDX was mentioned as a good framework to develop audiogames using .NET, xaudio2 also seems to be mentioned in conversation a lot.

Python:
- Pyaudiogame seems to be the main contender for Python frameworks for audiogame creation, but this project seems to have been abandoned as well, with the last commits about a year ago.
- PyGame is an alternative (?) but contains a lot of stuff you don't need as an audiogame developer.

PureBasic:
- Favored by some game developers, despised by others.
- Not free (costs money to obtain a license), not sure if its still being maintained properly and I think the docs are rather spotty

Given all this, I am kind of lost on where to even begin making a game like this. What tool would be the best to start with in 2016? If I do this, I want to do it right and not start on learning a language/tool only to find out feature X is not supported and will never be supported because work on the piece of software has stopped for an x amount of years. What are your thoughts on this?

2016-02-20 22:12:12

I was asking myself exactly the same questions as you do, and I knew that finding an answer will be hard, since everyone has different opinion. So I simply took a decision to try all mentioned languages above except dotnet. I'm coding in Python since 2009, and have the best experience with it, and I even purchased PureBasic. I've also tried to learn transitioning from Python to BGT. I've mentioned my findings in another thread on this forum.
Since I'm a fan of simpler programming languages, I'm not a very big fan of BGT, but I agree that it has everything required for writing audio game. In Python, I've tried to write a game with Pyglet (not Pygame), in combination with Pysfml for sound part since Pyglet doesn't support ogg format out-of-the-box. I've chosen Pysfml since it doesn't limit game development to just non-comertial games. I find this to be the best combination for me as a Python developer, but Pyglet is definitely not for beginners. Pyglet was difficult even to me at the beginning until I realised how it works. PureBasic is probably one of the simplest programming languages that you can use for writing games, but it's not object oriented, which means that you have to spend more lines of code for e.g., programming enemies and their AI, while in Python you do have object oriented programming and you can use classes that can make development faster.
I've also read some HSP (Hot Soup Processor) code, and that's the programming language used by japanese developers. BK3 and Shadow Rine are both written in this language. As far as I know, it's also not object oriented, but is quite simple and has very similar syntax to Basic family of languages. It's last version is unfortunately japanese only.
Currently, I still haven't decided in which programming language my first game will be written, but I'm sure it will be either Python or PureBasic. It all depends on which of them will give me best results for things that I want to achieve in my game.

2016-02-20 23:36:12

There are many places to start, but ultimately it doesn't really matter. All languages share certain similarities dispite different syntaxes and a feature here and there, so learning one language makes it easier to learn others. For example C/C++ have variables, loops, and If statements, much like Python and PureBasic do. Whats important is finding a language your comfortable with to help learn the ropes.

As Hrvoje mentioned Pyglet is another option, and has bindings for DirectSound and OpenAL, along with PySFML. A few other python libraries include PyAL whoch is a straight OpenAL wrapper and Pyttsx for voice synthesis. I usually write in python and have posted a few examples and code for handling the OpenAL bindings in Pyglet around here, if it helps.

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

2016-02-20 23:48:18

Hi,

Pyglet seems like an interesting contender. Would this library also handle things like mouse/joystick support and networking features for multiplayer games? Or would I have to use other libs, for example Twisted, to do that?

2016-02-20 23:53:24 (edited by magurp244 2016-02-20 23:53:47)

Pyglet does handle mouse/keyboard, but has no networking capabilities. I think someone's been working on implementing SDL2 joystick support, but that's largely experimental and not available.

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

2016-02-21 04:17:09

Regarding PureBasic.

I have been using PureBasic since about 2003 or late in the v3.x series and find it to be a very capable language that's easy to pick up. Sure it isn't free, but once you have it, all future updates including major version upgrades are free. On top of that, your license gives you access to PureBasic in 32 and 64 bits on the three platforms it's available on, Windows, Linux, and OSX. Unless who I'm working for makes specific language requirements, like C/C++ for the DRM system I maintained in my last job, I'll always choose to write in PureBasic. And while PureBasic doesn't have objects, I really don't miss them. It's a trade off really, for the nicety of objects, you get bloated executables and complex language syntax that can make the language difficult to learn as well as difficult to read. And finally, PureBasic is not dead, it is still actively maintained. Its last release was only two months ago and it is up to beta 3 of its next release.

One language I haven't seen anyone mention is Power Basic. It's another BASIC language that, like PureBasic,generates small and fast executables. Unlike PureBasic though, The syntax of Power Basic is more like a MS-DOS basic in that most of its built in commands are procedures rather than functions so a program tends to become rather wordy. For example I once converted a 10 line Power Basic routine into a single line PureBasic function.

I could list a whole bunch of reasons why PureBasic is better than Power Basic. But I only really need to list one reason. The developers of Power Basic won't tolerate criticism. When I was a Power Basic user, I posted a number of criticisms about the lack of native Windows commands and functions forcing everyone to learn and use the Windows API. I wasn't trying to trash the language, I posted the criticisms as feedback hoping to see the developers take steps to modernize the language and make it a better product. Their response was to ban me from their forums. I know of several other Power Basic users who were treated the same way who are now using PureBasic.

But even with that, Power Basic is still a powerful language, so I mention it as a possible option.

2016-02-21 07:17:06

Even though I no longer use pure basic given i've moved to python, I still think its a rather nice language. The one downside I really had with it was its inability to remove elements from arrays, but you can get around this with lists. For python and pygame, I normally just use the specific features I need like timers, keyboard handling and window creation. For my audio stuff it depends. If i'm going for building a game world where gameplay takes place, libaudioverse is something i'd suggest if you want environmental effects and reverb, it also has some rather neet features. If I don't need all that stuff in the case of menus, pysfml is my choice. Ultimitly, it will depend on what your most cumffy with. Remember most languages will have more than what you need for audio game development. Oh, I almost forgot. If your absolutely new to creating audio games, bgt is something i'd suggest for getting started.

Check out the new reality software site. http://realitysoftware.noip.us

2016-02-21 12:46:19

Are there versions of pyaudiogame, pyglet or pygame for Python 3.x? I'm currently beginning to get serious with Python.

“Can we be casual in the work of God — casual when the house is on fire, and people are in danger of being burned?” — Duncan Campbell
“There are four things that we ought to do with the Word of God – admit it as the Word of God, commit it to our hearts and minds, submit to it, and transmit it to the world.” — William Wilberforce

2016-02-21 15:03:46

Regarding python, pygame/pyglet  and pysfml:
This seems like a solid combination, although its perhaps a little difficult to get started with. What other libraries would you use to supplement these ones? I for example mentioned network support, would Twisted be the choice to go for there or is a better alternative available? Also, where does PyAudogame come into the picture and it is still being maintained?

Regarding PureBasic:
Ok, so the language seems to be more active than I thought which is good. How well does it play nice with the tools you would generally require for audiogame development? Again, things like playing, managing and panning sounds, keyboard/joystick/mouse/network support, keeping track of player data etc. I believe RTR was written in PureBasic but I could be wrong.

Regarding BGT:
The project seems to have been abandoned or at least semi-abandoned by the developer, which I understand the reasons for. How feature-complete would users say it is, do you run into anysignificant limitations?

2016-02-21 15:55:57

I think the biggest limitation is there's no way to implement 3d audio/hrtf. Its dll support is kind of basic which stops a lot of dll's from being used with it.

I like to sleep, Sleep is good,
This is how I do it: Lie on a nice warm cozy bed, and dream dreams about how to rule the world!
Follow @TheGreatAthlon5 on twitter for humorous facts and game updates!
If you like my posts, thumb me up!

2016-02-21 18:32:49

I don't really mind the lack of 3D audio until we get past the uncanny valley issue (though it might just be me). Most of the stuff that bugs me are things that aren't really necessary--the lack of built in midi or graphics support, mostly, but the inability to interface with most external libraries is a downer, too.
(I'm pretty sure you can do lots of things in the Windows API through BGT, and those which aren't available are easy enough to wrap... but it's still rather cumbersome.)
Also, the nature of BGT dictionaries is kinda hideous compared to every other language I've used (I'm guessing they're based on C or C++ dictionaries?). Javascript straight-up merged them with arrays, and Python's dicts are pretty similar. Java's HashMap's are more cumbersome and restrictive, but still nice enough compared to those available in BGT.

BGT is for audio games, and audio games can get away with lots of things that graphical games started sharing libraries to avoid a long time ago. If anyone would actually make an audio game that requires realistic physics or geometry, they'd be working from scratch in BGT. But since most audio games can get away with tiles, voxels, and axis-aligned simple shapes at most, it hasn't been an issue.

看過來!
"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-02-21 20:18:59

danny wrote:

Even though I no longer use pure basic given i've moved to python, I still think its a rather nice language. The one downside I really had with it was its inability to remove elements from arrays, but you can get around this with lists.

To be fair, most languages don't have a built in command to remove array elements. So I don't see that as a disadvantage. Most of the time where I'd have to use arrays in other languages, I use lists have built in functions for appending or inserting elements as well as removing them, and a whole bunch more built in capabilities.

2016-02-21 21:51:59

Python even doesn't have arrays, but in my opinion they are even not necessary since there are tuples and lists as well as dictionaries. I'm not sure about all the changes in Python 3. I'm still at Python 2.7, and I will stick to it until wxPython is ported to Python 3. For the same reason, software such as NVDA, TWBlue and Chicken Nugget are still built with Python 2.7.

2016-02-22 01:34:15

PyGame works with Python 3; I have a couple games I'm working on that use Python 3.2.  And it does have arrays, they just choose different words for them.  Lists are "lists" (a word that makes more sense IMO), and "tuples" are constant arrays (don't know where they got that word from; guess they picked it out of a hat, LOL).  And "dictionaries" are associative arrays.  So while Python kinda has its own lingo, the language can definitely keep up.

As for alternatives, I don't know about about Pure Basic or BGT, but there's also the option of doing it with HTML5 using a JavaScript library like "Howler.js".  This is pretty cool because you can create audio games that run in a web browser.  I still kinda prefer Python, but I've messed with Howler.js a bit and its stereo panning works great, even on my iPhone.

I think though that which way you start will depend more on what you already know.  For example, I know Python and JavaScript, so PyGame or JavaScript would be my first choices.  It would actually take more work try a new language like BGT or Pure Basic.   So if you're having a hard time deciding, you might want to try with whatever language(s) you already know.

2016-02-22 06:12:46

I gave up on HTML5 and Javascript when I discovered that they made it impossible to load local files, meaning all the sounds must be loaded from a server. I have no desire to set up a server and throw sounds on it just to test the audio engine.

I remember someone successfully making an offline Javascript audio game recently, though. I haven't figured out how, since I seem to have lost track of the copy I downloaded.

看過來!
"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-02-22 08:45:17

hello,
i use C/C++ and python to develop
boath of C++ and python support object orianted programming and you can code your game objects easily in them
about arrays, you can use tupals or lists in these situations to remove elements from them or in C++ std::vector and std::map are best options
for networking support, there are many libraries out there with good performance
but it depends on the type of networking, for http and ftp curl is good, for sockets eNet or kNet
i think pysfml support's networking!, i'm not sure

2016-02-23 05:57:57

Hi!
I work with python and panda3d.
I use in my current Gameproject the soundlibrary "bass4Py", it have 3d-support, supports file streams and have a got system to play sounds.
It have enviriomental effects and many more.
I haven't work with pygleet, on my beginners time, i programmed with pygame and pyaudiogame, but this aren't that, what i searched.
I suggest for beginner pygame or pyaudiogame, when you have trained at python, use panda3d, it have a nice physicengine, joistick support, network support, a good soundengine, and many, nany more...
My first really project is big, but i hope, i can it relize in this year...
smile
best regards,
Christopher

sorry for my english, I hope you have understood me.

2016-03-03 22:19:16

Hi,
I don't really understand enough maths to write audiogames, but I have used Pyglet with joysticks, and it works fine.

There's also the amazing Libaudioverse which has already been mentioned, and I personally like Twisted a lot for my networking needs.

I know I've basically said stuff that others have, but I like to think I condensed it! :-)

Cheers.

-----
I have code on GitHub

2016-03-04 04:48:01

python 3 works with accessible output2 and pygame, i'm practicing right now with. python 3.4. and if you dont't need some library, just don't use it. as simply. try to use languages with community support, documentation, etc. i don't know if BGT has it, but i think not.

2016-03-04 15:24:41 (edited by chrisnorman7 2016-03-04 15:26:58)

Pyglet also works with Python3. I'm using 3.5, and it works great.

For anyone who's finding it hard, it's simply a case of using decorators:

import pyglet

window = pyglet.window.Window(caption = 'Pyglet Test')

@window.event
def on_key_press(simple, modifiers):
    print('Simple = %s, modifiers = %s.' % (simple, modifiers))

pyglet.app.run()

Or by sub-classing:

import pyglet

class MyWindow(pyglet.window.Window):
    def on_key_press(self, simple, modifiers):
        print('Simple = %s, modifiers = %s.' % (simple, modifiers))

window = MyWindow(caption = 'Test Pyglet with classes')
pyglet.app.run()

HTH,

-----
I have code on GitHub

2016-05-02 21:36:06

Hi,

It's interesting to see nobody brings up .NET for audio game creation. Is this not a suitable combination? I remember Tward, sadly he is no longer with us to confirm, liked using it for his games for a while. What do you guys think, is it feasible?

Regards,
Zersiax

2016-05-02 22:19:36

I use C# and .NET for all my game projects and am very happy with it.
My new games are using OpenAL Soft for the audio library, though Tactical Battle still uses DirectX.AudioVideoPlayback.
.NET can be cross platform using mono on linux and Mac, and Xamarin on iOS and Android.
Xamarin used to cost an extra fee but is now free, like mono.

I saw this thread but did not post because discussions of which programming language to use often deteriorate into heated arguments.
If you have any specific questions about game development in C# feel free to ask.

~ Ian Reed
Visit BlindGamers.com to rate blind accessible games and see how others have rated them.
Try my free JGT addon, the easy way to play Japanese games in English.
Or try the free games I've created.

2016-05-02 22:30:55

Hi,

Do you by any chance have any examples? I am learning c# for my internship and would love another use for it smile You may PM if you feel more comfortable that way smile
Regards,
Zersiax

2016-05-02 23:15:00

I've emailed you.
You can email me at [email protected]

~ Ian Reed
Visit BlindGamers.com to rate blind accessible games and see how others have rated them.
Try my free JGT addon, the easy way to play Japanese games in English.
Or try the free games I've created.