Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

How To Improve My Game

Not that I'm having any trouble, it's just I was wondering if anyone had any tips or things to improve my game. I can change the colours and text styles, and I will import some images, but if anyone has any ideas of how to make it more awesome please. And this isn't just for me - anyone could look at these things and learn something!

P.S.: I am using Harlowe.

Comments

  • Easy, get some testers. At least 5 of them.
  • Easy, get some testers. At least 5 of them.

    Good idea!
  • edited August 2016
    But is there any other ideas that anyone has? Just some stuff which you use to make your games better?
  • Adding sound always adds to a game. It can be ambient music or simple sound effects, but some sort of auditory response can really make a difference.
  • Rally hard to give generic ideas to just "improve" a game - improvements should always be directed and specific. But I would second sound feedback. Even if you just have one sound for when a new passage loads, that is a significant improvement.
  • Anything to build on the interactivity of the game is good. Sound when clicking, sound when hovering over a link, music in the background, animated gifs, buttons instead of links, etc...

    Those are just ideas on how to polish the game, but when it comes to the actual gameplay - that really depends on the type of game or experience you're going for. @rubereaglenest said it best, get testers and get as much feedback as you can. You can never have too much feedback.
  • If you do add sound to your story/game then also add the ability to control the volume of the game's sound, a user should not have to mute/turn down the sound of your story/game at an operating system level. This is an issue many Renpy and Game Maker based games have.
  • edited August 2016
    Depending on the sound library, global sound volume is difficult to implement in HTML games.

    If you're using a library that sets volumes per sound effect, it's impossible without spending hundreds if not thousands on specialist decibal normalization software. This is why I'm only allowing music volume adjustments, because the SugarCube audio macros are volume per file and hence it is too difficult for me to adjust sounds globally.

  • How do I do sounds?
  • Deadshot wrote: »
    How do I do sounds?

    The short answer is to use the following code:
    {<audio autoplay loop>
    <source src="location of your audio file" type="audio/mpeg; codecs=mp3" />
    </audio>}
    

    Note that you'll have to change the codecs based on the type of audio file you are using.
    The {} are used to remove any extra white space in your passages, and adding the type and codecs is optional, but I found it works better.

    autoplay, loop, are pretty self explanatory - you may not want the sound to loop, but it depends on what you are planning to do.

    The long version is a bit more complicated and depends on what you are planning to do exactly.
    There are quite a few threads in these forums about audio so a quick search should provide some insights.
  • edited August 2016
    you could do what melyanna suggested but that will create lag what I did was use howler.js basically paste it into java script then make a passage called music which will have the tag startup and paste this into it
    <script>
    var audio = {};
    
    audio.whatever name you want= new Howl({
    	src: ['the url of the music'],
    	html5: true,
    	loop: true,
    });
    </script>
    
    you can as many as you want then paste this into the passage you want it to play in
    <script> audio.whatever name you want.play(); </script>
    
    important note it has to be the same name also if you want users to be able to go back don't use this as is because the songs will jam you have to make it like this
    <script> audio.whatever name you want.pause(); </script>
    <script> audio.whatever name you want.play(); </script>
    
  • Khaloodxp wrote: »
    you could do what melyanna suggested but that will create lag what I did was use howler.js basically paste it into java script then make a passage called music which will have the tag startup and paste this into it
    <script>
    var audio = {};
    
    audio.whatever name you want= new Howl({
    	src: ['the url of the music'],
    	html5: true,
    	loop: true,
    });
    </script>
    
    you can as many as you want then paste this into the passage you want it to play in
    <script> audio.whatever name you want.play(); </script>
    
    important note it has to be the same name also if you want users to be able to go back don't use this as is because the songs will jam you have to make it like this
    <script> audio.whatever name you want.pause(); </script>
    <script> audio.whatever name you want.play(); </script>
    

    What do i paste into javascript?
  • Anything to build on the interactivity of the game is good. Sound when clicking, sound when hovering over a link, music in the background, animated gifs, buttons instead of links, etc...

    Those are just ideas on how to polish the game, but when it comes to the actual gameplay - that really depends on the type of game or experience you're going for. @rubereaglenest said it best, get testers and get as much feedback as you can. You can never have too much feedback.

    How do I make a button instead of a link?
  • Deadshot wrote: »
    Khaloodxp wrote: »
    you could do what melyanna suggested but that will create lag what I did was use howler.js basically paste it into java script then make a passage called music which will have the tag startup and paste this into it
    <script>
    var audio = {};
    
    audio.whatever name you want= new Howl({
    	src: ['the url of the music'],
    	html5: true,
    	loop: true,
    });
    </script>
    
    you can as many as you want then paste this into the passage you want it to play in
    <script> audio.whatever name you want.play(); </script>
    
    important note it has to be the same name also if you want users to be able to go back don't use this as is because the songs will jam you have to make it like this
    <script> audio.whatever name you want.pause(); </script>
    <script> audio.whatever name you want.play(); </script>
    

    What do i paste into javascript?

    the howler.js file you can download it online here, after you download go to the dist folder, then open howler.js with a file editor like notepad ++ and then go to line 2133 Edit the line of code that reads:
    define([], function() {
    and change it to:
    define('Howler', [], function() {
    now select all and paste it your javascript everything should work fine
  • edited September 2016
    Khaloodxp wrote: »
    Deadshot wrote: »
    Khaloodxp wrote: »
    you could do what melyanna suggested but that will create lag what I did was use howler.js basically paste it into java script then make a passage called music which will have the tag startup and paste this into it
    <script>
    var audio = {};
    
    audio.whatever name you want= new Howl({
    	src: ['the url of the music'],
    	html5: true,
    	loop: true,
    });
    </script>
    
    you can as many as you want then paste this into the passage you want it to play in
    <script> audio.whatever name you want.play(); </script>
    
    important note it has to be the same name also if you want users to be able to go back don't use this as is because the songs will jam you have to make it like this
    <script> audio.whatever name you want.pause(); </script>
    <script> audio.whatever name you want.play(); </script>
    

    What do i paste into javascript?

    the howler.js file you can download it online here, after you download go to the dist folder, then open howler.js with a file editor like notepad ++ and then go to line 2133 Edit the line of code that reads:
    define([], function() {
    and change it to:
    define('Howler', [], function() {
    now select all and paste it your javascript everything should work fine

    Thanks. I'll try that. What do i do in the dist folder?
  • howler.js that you download is like a package inside the dist folder contains the actual javascript howler.js that's what you should edit
  • edited April 2017
    Khaloodxp wrote: »
    you could do what melyanna suggested but that will create lag what I did was use howler.js basically paste it into java script then make a passage called music which will have the tag startup and paste this into it
    <script>
    var audio = {};
    
    audio.whatever name you want= new Howl({
    	src: ['the url of the music'],
    	html5: true,
    	loop: true,
    });
    </script>
    
    you can as many as you want then paste this into the passage you want it to play in
    <script> audio.whatever name you want.play(); </script>
    
    important note it has to be the same name also if you want users to be able to go back don't use this as is because the songs will jam you have to make it like this
    <script> audio.whatever name you want.pause(); </script>
    <script> audio.whatever name you want.play(); </script>
    

    how do i have multiple musics? when i put two in my music passage it doesn't work. i can only have one in the music passage.

    music passage:
    {(set: $health to 1)(set: $hydration to 1)(set: $starvation to 1)(set: $displayHealth to false)}

    <script>
    var audio = {};

    audio.songtwo = new Howl({
    src: ,
    html5: true,
    loop: true,
    });
    </script>

    <script>
    var audio = {};

    audio.akbanan = new Howl({
    src: ,
    html5: true,
    loop: true,
    });
    function stopaudio() {
    for(keybar in audio) {
    audio[keybar].stop();
    }
    }
    </script>

    the stuff at the top is just some other stuff i needed in my startup passage, and the extra stuff in the <script> is supposed to stop music when another one starts. also, for some reason its not showing the src of the music but it is actually there.
  • greyelf wrote: »
    If you do add sound to your story/game then also add the ability to control the volume of the game's sound, a user should not have to mute/turn down the sound of your story/game at an operating system level. This is an issue many Renpy and Game Maker based games have.

    how can i control the volume of music?
  • edited April 2017
    In Howler you'd use a script that adjusts the volume inside of a button or link someone can click in an options screen.

    That said, I don't think it's a huge deal for simple games. A simple on/off switch should suiffice as that's usually what people are after. Someone concerned about sound probably just wants to turn it off completely, not adjust volume by 10%.
  • Claretta wrote: »
    Someone concerned about sound probably just wants to turn it off completely, not adjust volume by 10%.
    Personally I turn down all 'RPG Maker' based games down to 40% and Ren'py games to 50% as soon as I start them up, that way I don't have to alter the operating system's volume control.
  • edited April 2017
    In cases like that I prefer to use my system volume control as it's much faster than having to fiddle in an options screen. Same with listening to YouTube. There's a lot of inconsistent volume levels there and the youtube volume switch is a pain, so I'm used to just quickly pressing my system volume.

    I can understand your viewpoint, but I generally regard volume controls as a lesser priority than other features.
  • Deadshot wrote: »
    how can i control the volume of music?
    The easiest solution to controlling the master volume with Howler.js in Harlowe would probably be something like following:
    Master Volume: \
    (link-repeat: "0%")[<script>Howler.volume(0)</script>] | \
    (link-repeat: "20%")[<script>Howler.volume(0.2)</script>] | \
    (link-repeat: "40%")[<script>Howler.volume(0.4)</script>] | \
    (link-repeat: "60%")[<script>Howler.volume(0.6)</script>] | \
    (link-repeat: "80%")[<script>Howler.volume(0.8)</script>] | \
    (link-repeat: "100%")[<script>Howler.volume(1)</script>]
    
    It's not sexy, but it should work.
  • Deadshot wrote: »
    how can i control the volume of music?
    The easiest solution to controlling the master volume with Howler.js in Harlowe would probably be something like following:
    Master Volume: \
    (link-repeat: "0%")[<script>Howler.volume(0)</script>] | \
    (link-repeat: "20%")[<script>Howler.volume(0.2)</script>] | \
    (link-repeat: "40%")[<script>Howler.volume(0.4)</script>] | \
    (link-repeat: "60%")[<script>Howler.volume(0.6)</script>] | \
    (link-repeat: "80%")[<script>Howler.volume(0.8)</script>] | \
    (link-repeat: "100%")[<script>Howler.volume(1)</script>]
    
    It's not sexy, but it should work.

    thanks. do you know of a way to stop all music? and if i wanted two tracks, where would i put the second one, because putting two in one startup tagged passage makes neither of them for some reason.
  • edited April 2017
    Deadshot wrote: »
    do you know of a way to stop all music?
    AFAIK, Howler.js has no built-in way to do that, so you'll need a custom solution. Based on your example up-thread, someone already wrote such a function, stopaudio().

    Deadshot wrote: »
    and if i wanted two tracks, where would i put the second one, because putting two in one startup tagged passage makes neither of them for some reason.
    Don't use two <script> tags, as your example up-thread shows. When you do so, you overwrite audio in the second.


    Try something like the following: (I called the master stop function stopAllAudio())
    <script>
    /*
    	Setup.
    */
    var audio = {};
    
    function stopAllAudio() {
    	Object.keys(audio).forEach(function (howlId) {
    		audio[howlId].stop();
    	});
    }
    
    
    /*
    	Audio tracks.
    */
    audio.songtwo = new Howl({
    	src   : ['…URL here…'],
    	html5 : true,
    	loop  : true
    });
    
    audio.akbanan = new Howl({
    	src   : ['…URL here…'],
    	html5 : true,
    	loop  : true
    });
    </script>
    

    Basic usage of stopAllAudio():
    <script>stopAllAudio()</script>
    
    Within a (link-repeat:) macro:
    (link-repeat: "Stop All Audio")[<script>stopAllAudio()</script>]
    
  • Deadshot wrote: »
    do you know of a way to stop all music?
    AFAIK, Howler.js has no built-in way to do that, so you'll need a custom solution. Based on your example up-thread, someone already wrote such a function, stopaudio().

    Deadshot wrote: »
    and if i wanted two tracks, where would i put the second one, because putting two in one startup tagged passage makes neither of them for some reason.
    Don't use two <script> tags, as your example up-thread shows. When you do so, you overwrite audio in the second.


    Try something like the following: (I called the master stop function stopAllAudio())
    <script>
    /*
    	Setup.
    */
    var audio = {};
    
    function stopAllAudio() {
    	Object.keys(audio).forEach(function (howlId) {
    		audio[howlId].stop();
    	});
    }
    
    
    /*
    	Audio tracks.
    */
    audio.songtwo = new Howl({
    	src   : ['…URL here…'],
    	html5 : true,
    	loop  : true
    });
    
    audio.akbanan = new Howl({
    	src   : ['…URL here…'],
    	html5 : true,
    	loop  : true
    });
    </script>
    

    Basic usage of stopAllAudio():
    <script>stopAllAudio()</script>
    
    Within a (link-repeat:) macro:
    (link-repeat: "Stop All Audio")[<script>stopAllAudio()</script>]
    

    Thank you so much!!! My game will be coming out very soon!
  • edited April 2017
    Deadshot wrote: »
    do you know of a way to stop all music?
    AFAIK, Howler.js has no built-in way to do that, so you'll need a custom solution. Based on your example up-thread, someone already wrote such a function, stopaudio().

    Deadshot wrote: »
    and if i wanted two tracks, where would i put the second one, because putting two in one startup tagged passage makes neither of them for some reason.
    Don't use two <script> tags, as your example up-thread shows. When you do so, you overwrite audio in the second.


    Try something like the following: (I called the master stop function stopAllAudio())
    <script>
    /*
    	Setup.
    */
    var audio = {};
    
    function stopAllAudio() {
    	Object.keys(audio).forEach(function (howlId) {
    		audio[howlId].stop();
    	});
    }
    
    
    /*
    	Audio tracks.
    */
    audio.songtwo = new Howl({
    	src   : ['…URL here…'],
    	html5 : true,
    	loop  : true
    });
    
    audio.akbanan = new Howl({
    	src   : ['…URL here…'],
    	html5 : true,
    	loop  : true
    });
    </script>
    

    Basic usage of stopAllAudio():
    <script>stopAllAudio()</script>
    
    Within a (link-repeat:) macro:
    (link-repeat: "Stop All Audio")[<script>stopAllAudio()</script>]
    

    for some reason when i get to the passage when i want akbanan (short for AK-47 Banana) to start, it gives me an error message. I used the stopAllAudio() thing to stop the first one (whcih works perfectly thank you!), but it doesn't play the second one. sorry for asking so many questions about this and thanks for answering them
  • The screenshot shows you calling stopaudio(). If you're using my example, the master stop function is named stopAllAudio() instead.
  • The screenshot shows you calling stopaudio(). If you're using my example, the master stop function is named stopAllAudio() instead.

    thanks, yeah i figured it out.
Sign In or Register to comment.