51

(34 replies, posted in General)

@S32: Sounds good, now please play through Eggman Hates Furries and try I Wanna Be The Guy if you have not done so already.  They are key to discussing the where we should take the storyline in a sensible manner so that we can all get on the same page, pay special attention to IWBTG's opening cutscene and first five minutes of play.  Also, make sure to pay attention to the ingame cutscenes of Eggman Hates Furries such as when Eggman is in his hovercraft right after the first little bit of the game.  We need to decide what kind of story we are aiming for so that we can write it in an efficient time-frame so that our artistic team can take a look at it and give us the best graphics to convey it that they can.

The above direction is also to anyone else who wants to help in the shaping of the storyline.  I need everyone on the same page so that we can discuss this with the same frame of mind.  Also, after you have played my examples, please post about the storyline you think we should be aiming for and list examples of how it is effective to use certain techniques when aiming at our particular audience.  The examples I have listed are both entirely free to play, so do enjoy and try not to get too frustrated at IWBTG as it is meant to be an example against insane difficulty being the reason our game is targeted at older individuals.

52

(34 replies, posted in General)

Hello there guys,
It seems we have our basic team assembled, I would like to invite S32 and squirrel to join us at this time because neither have made it clear their intentions of work on this project.  Also, I would like to remind anyone who hasn't posted and wants to work on this that they should post so that we can get their name on the list and get their help as soon as possible.  Also, if you wish to create content for this and do not want to be part of the full time team then post your content here on the forums anyway, I always like to see how various people see the final vision for the game.  Anyway, now on to the meat of my post
Now our creation of storyline can begin.  The first thing I think we need to do is examine our target audience and determine what kind of game we are making here.  For a starting point, I would like to take a look back at 8/16-bit platformers and see what made them so great, and determine if there is a specific style of gameplay we want to make happen.
The first example is, of course, the original Sonic the Hedgehog.  This game, while it may look simple on the surface, gets very frustrating very fast.  Yet, somehow it still manages to keep people playing it all the way through to the end.  However, I believe our next example takes everything Sonic 1 did well and expanded on it to the point of creating what I consider to be one of the best game ever built.  I speak of course of Sonic 2.  With it's very fast gameplay, unique level mechanics, and the introduction of new mechanics for Sonic that made the game more friendly to all, this is what I feel was the epitome of Sonic games.  After that, of course, we had S3 & K, and I thought that was also an improvement on the base game mechanics, however I feel as though if we were to aim at a Sonic-esque game we should aim at two because of the reasons I have described.
Now we start getting into games with more RPG aspects introduced to the basic platformer formula.  For my first example, I'm going to pull Super Mario World.  This game featured many many levels, a point based saving system which was easy to control for the developers, and basic level RPG elements because of the powerups.  Of course, this game is not the epitome of RPG elements, however it is a good place to launch our discussion of adding these elements to our game if we choose to use them.  Now lets examine something with a little more focus on RPG elements.  This time I'm talking about Castlevania.  With multiple weapons to choose from in a weapon system that allowed for unconventional gameplay, and a health system that didn't seem to matter so much because of the clever use of instant death traps Castlevania is a very difficult game that, despite being an RPG, maintains a low level story that can mostly be told mostly through mechanics.  Also in this category: Megaman and various other games too numerous to list here.  Now, let's examine the common elements of these games, and determine our course of discussion from there.
Now let's take a step into the realm of full fledged RPG games.  Now I want to speak of Zelda 2.  With many people to talk to, a random encounter system, and intricate dungeon design; this game is one I would consider a good idea to look to for certain RPG elements that we can get if we want to make a deeper game.  Also up for discussion are games like Final Fantasy, Shining Force, and other top-down RPG's.  I would almost argue against such RPG depth in Open Surge though, usually games such as this are best done on a top down basis because there is much text and enemies are more of a random encounter which you beat by selecting things in a menu than anything else.

So, given the three categories of story background I have listed above which do you believe we should aim for?  I personally am in favor of a light to moderate storyline that uses lots of unique mechanics to convey things that are not said outright in dialog.  I'm going to list one more example for this: Silent Hill 2.  It uses engine limitations (the fog) and unique scenery pieces to create a creepy atmosphere.  I believe we could use elements like these to create any emotion we wanted.  Of course, we will have to back up such scenery with music which will also help to bring the emotion meant to be felt across to the listener.  In fact, we want to make every single element of the game back up this idea (see extra credits for more on this) Now, to the discussion:

Which of the three types listed above do you believe we should aim for and why?  What unique mechanics do you think would most accent the style we are after?  Also, expound on what difficulty level we should be aiming at for this game (please see I Wanna Be The Guy below for a perfect example of why we don't want this to be too difficult).  If you believe I am wrong about any of the points I made in my post above, please also post your arguments as to why I am wrong.
Remember to keep our target audience in mind when discussing these things.  What appeals to them most about the games I have posted above and what appeals most to them about games made today?

Also for Reference:
Eggman Hates Furries for an interesting take on the level design and boss design mechanics I'm referring to, and perhaps even the minimalistic cutscenes that convey certain emotions.
The Angry Video Game Nerd for downfalls of certain games of this particular era
I Wanna Be The Guy For a hairripping experience in why we don't want to go overboard on difficulty.

53

(17 replies, posted in Game assets)

I'm rather enjoying the overall style of the art you've been creating.  I like the way the color depth on the sprites has been increased.  Awesome work cool

54

(7 replies, posted in General)

Interesting idea, AI can be done by Objects but can probably be done better by the engine.  I really did like the way Tails followed Sonic in 2 but in all honesty this is a much more advanced command than I know how to program properly and I have a little too much on my plate with planning for the Open Surge Reanimated project (which still needs one team member dedicated to start if you're interested).  Perhaps after we get 0.2.0 we can get into finite details such as this for later releases, it would be especially helpful when there is more than one character on the team and you want them all to follow the main player.  As for now, I suggest the following commands as a workaround.

observe_player
simulate_button_down

This will allow you to make their character do certain things in certain situations, you'll just have to program it into your object code.

55

(34 replies, posted in General)

Well, as far as adult language goes we only have to remember that maturity and darkness doesn't necessarily come from having to use language such as that.  In fact, edge can be given by environmental cues that give it an edgy feeling.  For example, you have seen my little scene before the wolf boss.  The reason it has edge isn't because of language it uses or gore, rather it is because of the atmosphere created by the sun going down, the forest's edge, and the magical ritual that is making a normally nice creature into a monster.
Now, gore does have it's place in certain game types, the question we have to ask ourselves is if we need it here.  For example, there is very little gore in the first Castlevania game (or in any of the ones I've played) but it still manages to give that darker feeling.  I personally look at gore as a cosmetic effect, to be used only if the scene absolutely requires it.  You see, the monster that leaves not even a drop of blood is more frightening really because it shows that it either knows what it's doing or it is very very large.

As an example, here is a take on that which conveys that the ankle is broken.
--Surge walks into the room and sees Neon in a cage in the corner--
Neon: Surge, you came!
Surge: Of course I did, what happened?
Neon: Well, those dragons found me wandering around near the waterfall and kidnapped me.
Surge: Don't worry, I'll get you out.
*Surge breaks open cage*
*Neon limps out quite slowly*
Surge: What's wrong?
Neon: M...my leg hurts.  I think it might be broken.
*Neon falls to ground*

Or, perhaps something like this if we want to reduce dialog:
--Surge walks into the room and sees Neon in a cage in the corner--
*Surge walks over and bust open the cage*
*Neon stumbles out, pain conveyed by face, and collapses to the ground*

Let's examine some Extra Credits on these topics:
http://penny-arcade.com/patv/episode/na … -mechanics
http://penny-arcade.com/patv/episode/me … hor-part-1
http://penny-arcade.com/patv/episode/me … hor-part-2
http://penny-arcade.com/patv/episode/the-uncanny-valley

56

(34 replies, posted in General)

Well, the first thing we need to do is determine a roadmap for our project.  This will include such tasks as evaluating our target audience to see what most appeals to them, determining what style of platformer we want to make, remaking the storyline with our platformer style and target audience in mind, re-evaluating character roles in the story and changing them as needed, examining our current content to determine what needs to be reworked, planning any new content that is needed to effectively convey our story, planning a timeframe, getting our Sunshine Paradise ready and using level design and mechanics to tell the story as much as possible,  bugtesting, determining our placement of monitization messages, and finally launching.  Of course, every team member will be more than welcome to give their input on what they need most to accomplish their task, and the entire project will be open to the public so that they can see where it is going and offer critique and suggestions.
We still need at least one more team member to begin, I will edit my first post to reflect who has currently agreed to help.  Remember, because this is a community project we can end with more than we started with.  Every little bit helps.  The scope of this project will be getting Sunshine Paradise out so that 0.2.0 can be successfully launched.  If this inititive is successful we will probably want to consider running further level building campaigns in this manner.  Once most of the groundwork is done this production method will be streamlined by the base work we've completed.

57

(4 replies, posted in General)

I figured out what the problem was, for some reason OpenAL is not recognizing alsa or pulse or many of the other audio systems.  /dev/dsp/ is OSS, and unfortunately my kernel doesn't have support for that.  I'm not sure why OpenAL is not sensing any other audio systems, but it is the reason I get no sound.

58

(4 replies, posted in General)

Hi there,
I've gone through another system reinstall on my Linux partition, and today I set up my compiler environment again.  I ran into a strange possible bug, the audio didn't play as it did when I last compiled for Linux.  Here is the output when I load the game in the console:

AL lib: oss_open_playback: Could not open /dev/dsp: No such file or directory

Not sure why that happened, I still have all the files I compiled for install.  If you think I should attempt to reinstall one I will.
Thanks in advance :-).

59

(34 replies, posted in General)

I have a proposal for a project that I believe could help get Open Surge out there in the public and seen.  According to what I'm seeing right now, Open Surge is designed to have an appeal to a younger crowd than even Sonic 1 had, and I believe it could appeal to that demographic and others more through a more modern look and a slightly edgier story.
Hence: Open Surge Reanimated.
Now, this project cannot succeed alone.  We need the help of the community to make it work.  KZR and I have been talking, and we believe that a group of at least 3-5 individuals working with us on this could achieve this different view on Open Surge in a reasonable timeframe.  Keep in mind, we would not be following the design documentation as a formula, rather we would be following it as a more of a general guide and would be taking artistic liberties with it that drastically change the way the game is perceived.  If you would like to work with us toward this vision please post what it is you would like to help with below and when we have a team of at least 3-5 we will start work.  We will not start before then, if the community wants this then the community will have to help us achieve it.
I'll leave you with a little tidbit that I thought up, perhaps this will help be a motivating factor in getting the team together:

"Surge walks along, wondering where his pal, Neon went.  It is sunset, and growing darker, and he beings worrying about him.  As he continues forward, he sees a strange flickering light in the distance.  Wondering if it could be Neon, he hurries forward.  As he reaches the edge of the forest he looks in to see two four lit torches arranged around a small figure sitting atop a stump.  He steps forward, curious, when suddenly the lights grow extremely bright.  The figure on the log gives out a low whimper, then raises it's head to the sky and howls with a ferocity that tinges the air.  As the figure howls, the torches dim, and the light of the full moon shines down on the growing, growling, wolf in the clearing."

Team:
KZR
Alexandre
lunarrush
svgmovement
MatheusRRR
S32X

60

(20 replies, posted in Game assets)

svgmovement wrote:

Hey all,

I have two ideas: an object property targetable
and a function target_list that returns an array.

object some_object
{
    targetable
    ...
    state "main" {
        $enemylist = target_list();
        //iterate over the list
        ...
    }
}

An ideal convenience function would be nearest_target.

Would the engine even allow that?

It might, however you must consider this could have unfortunate implications for bugs.  For example, let's say you have a field where there is an enemy moving through the brick below the player and one in front of him on a hill.  If it locked onto and hit the enemy inside the brick you have effectively created a bug by letting the player get into the middle of a brick.  I'm not sure how the engine handles that, but it could potentially result in some very broken gameplay.  Also, angles have caused odd bugs in the past for me as well.  I am not certain how they would handle having the player hit them at a really high speed from an unexpected angle.  Not to mention the kind of slowdown that could be introduced if that array was not handled entirely correctly.
Overall I say it would be a hard task to write and an even harder one to bugfix.  The Boost shouldn't be too terribly difficult, just have it set player's x speed to a certain negative amount if the player is facing left or a certain positive amount if the player is facing right.  Then, put in a variable to track how much boost power they have left and another variable that disables it altogether so that you can put in cliffs and stuff that they aren't just going to keep going right or left on.  In fact, you could set a whole ton of variables that allow for different x,y speed combinations, the more complex you get though the more objects it will require to set and manage various boost types.
Good luck :-).

61

(3 replies, posted in General)

You can use the base NPC system that was underway for SD for the basis of your mob system if you so choose, it is available for you to download along with all our old codebase.

Just running a quick search against the current API it is currently impossible to read mouse input inside the level.  I know for a fact it can be done in the editor, but in the main level it cannot.  Anyway, perhaps your petition for mouse input should include the following:

  • What is it that having mouse input in levels would accomplish that would make things easier for you, and where in Open Surge would this be used? 

  • Can you name some places where this would greatly enhance the gameplay of both hacks and the main engine game?

  • Can you say how you wish for this to be implemented?  Do you want it to work similar to the way keyboard input currently works, namely that we have a listener that sends out signals when a key is pressed?  Do we need to be able to sense clicks, and would the ability to sense clicks make the object more viable for all involved?

If you include the above your idea to allow for mouse input is more likely to be accepted if the reasoning is good.  Remember, Alexandre has a game he is making and I am currently toying around with Java game design because the Ouya is coming out soon, so it may be a while before your idea sees the light of day.

What is it you're intending to do with this cursor, exactly?  Also, why did you separate your animation from your object when it is really a simple matter of getting rid of the hide in the original object and moving your zindex into main of the actual object to have the same effect?

64

(3 replies, posted in Off-topic)

It was an AMD card using the AMD blob, and my simple game ran at a framerate literally 1/100th of what I could achieve in Windows, literally to the point of causing noticeable lag and choppy movement.  The problem, I think, relates to Slick2d or lwjgl, the upper level librarys I'm using to make the game, perhaps it is simply not optimized for Linux or perhaps Java game development is just hard on Linux.  Perhaps it could also be the Java implementation in Linux.  Either way, the AMD blob doesn't seem to handle it very well, nor does it seem to handle Cinnamon very well which is a shame because Cinnamon is a very pretty desktop environment.

Alexandre wrote:

Games using OpenGL run just fine on my Linux box. Do you have the correct drivers?

lunarrush wrote:

I finally understand why you don't want to use hardware acceleration on Opensurge

Who said that?.

I was under the impression that the game was to come first, then new features for the engine itself, such as the port to Allegro 5, the point I was attempting to make is that you do not want to worry about such things now and that you simply want to get Open Surge underway.

Also, most games using OpenGL seem to work with the AMD blob, but there are certain instances where they simply do not want to cooperate and I end up with graphical glitches and other problems.  A prime example of this (though not a game) is the way Cinnamon acts when it has the AMD blob vs. when it doesn't have the blob.  When it has the blob, graphical errors abound and it becomes nearly unusable.  Without the blob it runs well until there is some sort of taxing thing happening to the graphics card, then it slows down horribly and becomes unusable.  While most games work, that set that simply works better without the correct driver is what confuses me so.

So, I suppose the focus of this topic has shifted, why does the AMD blob seem to cause glitches where the open source drivers cause their own problems, such as chugging frame rate when something graphically taxing is happening and seemingly making the card run hotter (based on my experience and the experience I've found of people who have cards overheat using the open source driver).  Also, feel free to give any suggestions as to what could be done to help the problems of either side.  A small note though: it seems the AMD blob offers better performance at the cost of some applications and desktop environments not working properly.

65

(3 replies, posted in Off-topic)

I have been toying around with Java+Slick2d+lwjgl and I think I finally understand why you don't want to use hardware acceleration on Opensurge...the Linux support for it is awful.  Here I am, developing a game, when I go to execute it on Linux; the FPS is atrocious.  Then, I execute the exact same code on the exact same machine on the Windows Partition and surely enough it runs smoothly...The moral of the story here is that support for the technologies that could bring the gaming market to Linux simply isn't there, in this thread let's discuss why Linux has such horrible proprietary drivers which do not even begin to support the kind of things their windows couterparts can do, and what we can do to help change that so that Linux becomes a more viable market for game developers, because as it stands now I can really only think to offer experimental Linux support and I have no clue how people who can make bigger, better, prettier engines than I can produce in any realistic timeframe would be able to viablly port anything to Linux.

66

(3 replies, posted in Game assets)

You can do splashes by making an object which generates them when the condition is met that the player is running on water.

67

(6 replies, posted in General)

The open surge cutscene is really a huge undertaking when you consider the amount of work that went into it.  I would suggest you start with studying the code in the .obj file and then studying the thread on the forum that was all about its creation.  It is really quite a complex object, so if you don't have roughly the object building experience of SilverstepP I would suggest avoiding it until you've gotten you 'fangs' on more friendly undertakings.

68

(9 replies, posted in General)

When he says:

c:\path\to\opensurge\

He means to type in your own 'path' to get to where you store opensurge.exe.  A path is, quite simply, the list of folders from the top of the drive all the way down to the one you store the program you want to run in.
If you want to be able to test this, you could run command line code such as this, keeping in mind that this code is for a Windows 7 computer that has opensurge in a folder on the Desktop named opensurge:

cd Desktop
cd opensurge
opensurge.exe --quest quests/default.qst

Also, keep in mind that you can change the quest that is launched, and if you use the --help syntax rather than the --help syntax it will show you new commands you can give it.

Hope that helps, but if it doesn't I suggest you learn to use the command line.

69

(4 replies, posted in General)

I have found out through a few months of Java programming that movie playback is hard to even begin to know how to code, however if you want movies then you could always make one very very large spritesheet with all the frames of your movie in it and then just play them at the fps you want it to play at.  This is a lossless format, though you will have to make the audio work with your images.  Anyway, good luck if you attempt to do it this way for a very large cutscene...I imagine the image required would be huge.

70

(4 replies, posted in Game assets)

Here's an interesting take on this object that I just wrote.  It uses fast loops only for determining when a sound effect should be played, other than that it keeps normal object execution, it also has several settable parameters as seen at the top of main:

//    ring3d
//    provides a ring with a neat appear/disappear effect
//    original object: MatheusRRR
//    This version: Lunarrush
object "ring3d"
{
    requires 0.2.0
    
    state "main" {
        set_animation "SD_RING" 0
    
        let "$timer = 0"                    // Timer initial value
        let "$delta = 0.2"                     // Time between scales
        let "$i = 0.1"                         // Starting point of scaling
        let "$sit_at = 1"                    // Where to stop scaling for idle animation
        let "$max_size = 1.6"                 // The largest you ever want it to get.
        let "$increment_factor = 0.1"        // The value added to the scale at each increment
        let "$sfx_place = 1"                // Set to 1 for when ring is touched and 2 for when ring disappears
        let "$collectible_value = 1"        // How many rings it will give when it is touched.
        
        change_state "ring_setup"
    }
    
    state "ring_setup" {
        let "$timer += dt()"
        on_player_collision "collect"
        if "$timer >= $delta" "increment"
    }

    state "increment" {
        let "$i += $increment_factor"
        let "$timer = 0"
        set_scale "$i" "$i"
        if "$i<$sit_at" "ring_setup"
        if "$i==$sit_at" "wait_for_player"
        if "$i<$max_size" "ring_removal"
        change_state "destroy"
    }
    
    state "wait_for_player" {
        on_player_collision "collect"
    }
    
    state "collect" {
        add_collectibles $collectible_value
        execute "sound_effect" if "$sfx_place == 1"
        let "$i = $sit_at+$increment_factor"
        change_state "ring_removal"
    }
    
    state "ring_removal" {
        let "$timer += dt()"
        if "$timer >= $delta" "increment"
    }
    
    state "destroy" {
        set_animation "SD_RING" 1
        on_animation_finished "destroy_2"
    }
    
    state "destroy_2" {
        execute "sound_effect" if "$sfx_place == 2"
        destroy
    }
    
    state "sound_effect" {
        play_sample "samples/ring.wav"
    }
}

Also, a quick note, it looks better in notepad++ than it does in the object box here.

In response to the object in this thread I decided to make a fast loops version of it with slightly different behavior: http://opensnc.sourceforge.net/forum/vi … hp?id=1408
Unfortunately, it does not seem to work, it seems that either fast loops do not work as I think they do or they are broken.

Here's my code:

object "ring3d"
{
    requires 0.2.0
    
    state "main" {
        let "$delta = 10" // Time between scales
        let "$timer = 0"
        let "$i = 0.1"
    
        set_animation "SD_RING" 0 // only have to set this once
        execute "ring_setup" while "$i<=1"
        change_state "wait_for_player"
    }
    
    state "ring_setup" {
        set_scale "$i" "$i"
        let "$timer += dt()"
        on_player_collision "collect"
        execute "increment" if "$timer >= $delta"
    }

    state "increment" {
        let "$i += 0.1"
        let "$timer = 0"
        // play_sample "samples/1up.ogg" // This was here so I could hear each increment stage
    }
    
    state "wait_for_player" {
        on_player_collision "collect"
    }
    
    state "collect" {
        add_collectibles 1
        play_sample "samples/ring.wav"
        execute "ring_removal" while "$i<=2.5"
        change_state "destroy"
    }
    
    state "ring_removal" {
        set_scale "$i" "$i"
        let "$timer += dt()"
        execute "increment" if "$timer >= $delta"
    }
    
    state "destroy" {
        set_animation "SD_RING" 1
        on_animation_finished "destroy_2"
    }
    
    state "destroy_2" {
        destroy
    }
}

As you can see, I have set $delta to a ridiculously high number, yet still it seems that all my increments are executed at the exact same time.  I only want such a state to execute when it's condition is true, and because of logic within the if's execution it ceases to be true when running so that count up may begin again.

Am I doing something wrong?  If so, please post because I'm not seeing it immediately.

Edit: I am currently messing around with it some more, and it seems that $timer is reaching 10 at record pace when I don't reset it.  Has the way dt() works changed recently or something, because it seems to be reaching 10 in tenths of a second rather than seconds.  Perhaps fast loops change the model for how it works, or perhaps the internal engine code has changed for it, either way it hits 10 in what seems to be less than a tenth of a second.

Given the current development pace, the current level of completion, and the principal of attraction(game design) which states: The more you have completed on a project, the more attractive it is to potential contributors and players, it is nowhere near ready for something like that.  It might be if we got at least the first level done, as it stands right now it is certainly not ready.

73

(4 replies, posted in General)

Would be possible, just take the breaking animation set and reverse it, it would be a pain in the butt but it can be done.

74

(2 replies, posted in General)

Both are interesting ideas, and as far as I can see both are programmable via object script.

75

(13 replies, posted in General)

Hey you guys!!!
I'll just leave this here ;-)
http://www.youtube.com/watch?v=mhhknPnK2JM

Sorry for offtopic opening, I couldn't resist.

Also, a note, you should probably focus down the main game first so that you will have some assets for this one.  It will be a lot easier to build this one once you have many helper objects from the main game to go along with it.