Author Topic: Project Paradigm  (Read 14480 times)

v6v

  • Clever
  • Fanatic
  • ***
  • Posts: 500
  • Has renamed his project to Galaxy!
    • View Profile
    • My Developer Page!
    • Email
Project Paradigm
« on: 2012-08-07, 05:38:03 PM »
Alright. This thread concerns my game, and it's basically me throwing ideas around and eventually posting my builds here.

Tigsource is way too crowded and I don't want THAT attention for my game until the halfway to completion point (Which is why my only devlog will be on these forums, mainly because I also feel as if I can get more trustworthy, personal opinions to my work here, not on a website geared towards thousands of developers without a unified toolset, or even platform goal.)

For now, I'd like to start this thread with questions.

Most of my concepts are from the greatest platforming non-linear 2D sidescroller of all time (To not be close minded if you know of anything better, I'd love to try it) Castlevania Symphony of the Night (If you haven't played it, it's a fairly long game, so unless you have the time, don't plan on beating it in an afternoon, but if you don't have enough time, I'd say the closest thing to it was Vincent's amazing Legacy of Kain SGDK2 game, which not only plays like it, but shares graphics with it.) I believe that SotN was a great game, but the concepts that it was developed on (Non-Linearity) but I think it it didn't go far enough. It's a great concept, but it can be taken even further with the addition of RPG elements from popular MMORPG games, such as a tasks/quest system, a clan system, and a system that incorporates vivid NPC interactions. )

Alright. So for the game I allow there to be 2 options. Host and Join. Each boasts 2 gameplay modes. Story Mode, and Custom Mode.

Story Mode has advantages:

More Bosses
Longer Storyline
Different abilities and weapons able to be found.
More tasks.
More Map Accessibility
At the current moment the protagonist of Story Mode has voice sound effects, which can be heard when jumping, taking damage, etc.

Story Mode also has Disadvantages
No leveling (Meaning you only gain strength from equipping strong weapons, and defeating bosses. This removes the need of grinding. http://en.wikipedia.org/wiki/Grinding_(video_gaming))
Inability to posses clothing items
Certain abilities aren't obtainable.
Static character- meaning that the clothes and appearance of the character is constant.
No replay value (I'm planning on making the file "lock" itself so that the player can't continue to play after the game has completed itself)



Custom Mode has advantages:
Leveling System: Basic RPG EXP leveling system.
Creating your own character to your tastes.
Specialized skills.
Ability to wear clothing and armor items.
Replay Value (Ability to continue gameplay after the game has finished)

Custom Mode has disadvantages:
Less tasks
Less Map Accessibility.
Certain abilities aren't available.
Silent Character: No sound effects for your character. You posses a silent character.


There's reasoning for all of this. I wanted Story Mode to focus on the story- NOT RPG elements such as defeating hundreds of the same enemies to become stronger. This is contrary to any metroidvania- but the best way to describe it would be Richter Mode of Castlevania Symphony of the Night. You gain strength boosts from defeating bosses, or equipping stronger weapons, but not minor enemies.

I don't have the time to record sound effects for all possible custom character creations, as I'm still wondering how I'll do effects just for the storyline.

Some portions of the game and items drive the main story along, which is why I only allow them to be accessible in story mode.




Another idea I'm thinking about is for quests in the game that require you to reach a certain location.

I want to add one of the "GO GO" arrows that points in the direction that you have to travel to complete a job. It's retro, but I figure that it should work out nice in a metroidvania. I want them to be AS ANNOYING as POSSIBLE. GoGo arrows have always been a favorite of mine in beatem ups. I hope they become just as useful in a metroidvania.

http://www.giantbomb.com/go-arrow/92-3391/


Yet another question I had.

I'm positioning the camera so that the player sees the majority of what's ahead of them. Similar to real life, (Where you only see what's ahead of you) I figure that this might add to the suspense of certain areas (I have it now so there's an area where you enter and hear a loud sound behind you)

I want to add a feature that lets the player see behind them as they run, (For example, pressing left while running right would allow them to run in the right direction but the camera should slow down to show what was behind them.) I think I could just record what input was being pressed first, and then go from there.

This wouldn't be annoying, would it?



Does this seem logical? Are there any other ideas you see for each?

(By the way I composed 2 tracks, I'm learning how to compose tracks on the side and I'm progressing away from MIDI tracks, they're pretty decent quality OGG files.)

EDIT

Need to add- say, the AudioVideo plugin that played videos in the DirectX SGDK2, would that work in this version? I was thinking of doing something like AVI to OpenGL Texture, but it's terribly challenging to do (Remember I'm not great with OpenGL :D and I'm sure there's a better way)
« Last Edit: 2012-08-07, 08:06:24 PM by #Sharp »

Vincent

  • SGDK2 Addict
  • Expert
  • Fanatic
  • *****
  • Posts: 610
  • Legacy of Kain: Revival is completed!!!
    • View Profile
    • Chivalrous Games
    • Email
Re: Project Paradigm
« Reply #1 on: 2012-08-08, 06:42:57 AM »
By the way, thanks for the compliements on my game! :)

I'm wondering about the "Go arrow".  Metroidvania are usually open worlds where you have different areas to discover and tasks to accomplish but most of the time you can ignore some or undertake more than one task at once.  The "Go arrow" would point toward a single objective I think.  Wouldn't it reveal areas too easily?  And if the player wants to ignore an objective or wishes to do another objective before the one pointed out by the "Go arrow" wouldn't the arrow be confusing / annoying?

Why remove the ability to customize the appearance of your character in single player mode?

No replay value?  Are you sure this is what you mean?  Ending the single player game sometime seems fine (after the story is finished), but it doesn't mean it should remove replay value.  Especially in metroidvanias when you can speed run, get a higher % of items and map discovered, get a different ending based on your performance, etc.  Once the game is completed (or almost) adding replay value by adding extra endings based on performance doesn't cost too much.  But, for speed runs and performance evaluation, you have to design your game with multiple paths and optional upgrades, etc.

I wonder, since ou can customize your character appearance, why not allow to set a "voice track" based on a couple of choices.  So your character wouldn't always be a mute. It could be as simple as "mute", "male" or "female".  If there is not many sound effects, it's not too big to accomplish.  By the way, the voice shouldn't be long texts, only sound effects in game like "ouch", "die", "aaaah", "oups"... Things like that.

I'm not sure of the usefulness of looking behind a running character, except for a cut-scene.
Legacy of Kain: Revival completed!
http://lokrevival.webs.com

See also my company website:
http://chivalrousgames.com

bluemonkmn

  • SGDK Author
  • Administrator
  • Fanatic
  • *****
  • Posts: 2744
    • ICQ Messenger - 2678251
    • MSN Messenger - BlueMonkMN@gmail.com
    • View Profile
    • http://sgdk2.sf.net/
    • Email
Re: Project Paradigm
« Reply #2 on: 2012-08-08, 07:34:45 AM »
On the topic of the GoGo arrow, have you seen how Skyrim handles objectives? You can turn each one on or off depending on whether you want the system to be showing you toward it.

Would it improve replay-ability if, after finishing story mode once, you allowed the player to use all the custom mode features in story mode?

v6v

  • Clever
  • Fanatic
  • ***
  • Posts: 500
  • Has renamed his project to Galaxy!
    • View Profile
    • My Developer Page!
    • Email
Re: Project Paradigm
« Reply #3 on: 2012-08-08, 10:40:20 AM »
By the way, thanks for the compliements on my game! :)

I'm wondering about the "Go arrow".  Metroidvania are usually open worlds where you have different areas to discover and tasks to accomplish but most of the time you can ignore some or undertake more than one task at once.  The "Go arrow" would point toward a single objective I think.  Wouldn't it reveal areas too easily?  And if the player wants to ignore an objective or wishes to do another objective before the one pointed out by the "Go arrow" wouldn't the arrow be confusing / annoying?

Why remove the ability to customize the appearance of your character in single player mode?

No replay value?  Are you sure this is what you mean?  Ending the single player game sometime seems fine (after the story is finished), but it doesn't mean it should remove replay value.  Especially in metroidvanias when you can speed run, get a higher % of items and map discovered, get a different ending based on your performance, etc.  Once the game is completed (or almost) adding replay value by adding extra endings based on performance doesn't cost too much.  But, for speed runs and performance evaluation, you have to design your game with multiple paths and optional upgrades, etc.

I wonder, since ou can customize your character appearance, why not allow to set a "voice track" based on a couple of choices.  So your character wouldn't always be a mute. It could be as simple as "mute", "male" or "female".  If there is not many sound effects, it's not too big to accomplish.  By the way, the voice shouldn't be long texts, only sound effects in game like "ouch", "die", "aaaah", "oups"... Things like that.

I'm not sure of the usefulness of looking behind a running character, except for a cut-scene.

I see what you mean. I was thinking that it would add to the replay value if story mode had multiple endings, but once you completed it, you weren't able to continue the game on that file in story mode. It would make the player try again and again to get the better or worse endings (Like ClockTower for the SNES)

In story mode, the character's appearance (A very eccentric character) deals a lot to the story itself, so I really can't allow the player to change who they are entirely. I've remedied this with a custom mode, a mode in which the player is entirely free to change any aspect of themselves.

If I can find someone who can do a spectrum of voices for me, it would be great. the voice tracks would have to include 6 voices each.

It's hard to explain the necessity of looking behind you while running, until the game is released. It's one of those things I'm going to ask after the soon released Beta.

The GoGo arrows only show in Quests/Tasks :D where you're forced to reach a destination to complete the task.

Quote
By the way, thanks for the compliements on my game!

No problem, it's the best SGDK2 game.

On the topic of the GoGo arrow, have you seen how Skyrim handles objectives? You can turn each one on or off depending on whether you want the system to be showing you toward it.

Would it improve replay-ability if, after finishing story mode once, you allowed the player to use all the custom mode features in story mode?

It makes sense, I could have three options, a GoGo arrow, a compass, or simply nothing.

Reaping. It's definitely something that I was considering. After completing storymode, the savefile would lock, but it would allow you to start a new custom mode on the beaten file. Said custom mode would allow you to pick up a set number (Half of the total items you have)  of items from the story mode game at a certain checkpoint. Maple Story does this- it's where I've taken the concept from. I could also add this feature to custom mode, although custom mode has infinite replay-ability value you can choose to terminate your file and transfer a set number of items from that file to a new game.

These are brilliant ideas you guys are giving me. Thanks. I'm going to have hands full implementing them.

Keep them coming if you have more. :D

v6v

  • Clever
  • Fanatic
  • ***
  • Posts: 500
  • Has renamed his project to Galaxy!
    • View Profile
    • My Developer Page!
    • Email
Re: Project Paradigm
« Reply #4 on: 2012-08-08, 04:15:35 PM »
Ah, so there still isn't a way to play videos in the current version of SGDK2?

v6v

  • Clever
  • Fanatic
  • ***
  • Posts: 500
  • Has renamed his project to Galaxy!
    • View Profile
    • My Developer Page!
    • Email
Re: Project Paradigm
« Reply #5 on: 2012-08-08, 08:24:04 PM »
GOOD NEWS, I got it working. Turns out that once I actually opened the code editor and tried to make it work myself I was able to get it working in less than 20 seconds, but what prevented me from doing this earlier was the fear of not being able to mix OpenGL and DirectX contexts.

BAD NEWS, this prevents cross platform function-ability. To my knowledge this will limit video playback to Windows Only. Sooo...

Now I need to find out how to.... find an OpenGL Video Player that can run under the Mono Project.

Boo

EDIT adding, I had to change the app.config because for some reason or another, the Video Playback library only works in NET2.0.

EDIT I think I could easily solve this by finding some way to load AVI frames as bitmaps..

EDIT Not a skilled enough programmer to do that either. So if I get my project working under Linux, video playback won't be included.. Boo.

Depressing.
« Last Edit: 2012-08-08, 09:48:25 PM by #Sharp »

bluemonkmn

  • SGDK Author
  • Administrator
  • Fanatic
  • *****
  • Posts: 2744
    • ICQ Messenger - 2678251
    • MSN Messenger - BlueMonkMN@gmail.com
    • View Profile
    • http://sgdk2.sf.net/
    • Email
Re: Project Paradigm
« Reply #6 on: 2012-08-09, 05:05:20 AM »
You're quite resourceful. Sorry I didn't reply to that particular question, but glad you're making progress. Of course if you were making an HTML5 project, video would be a no-brainer ;D. Surely there must be some cross-platform solution short of converting to HTML5.

But I have another question - what exactly do you intend to make videos with (is it something that couldn't be rendered in real-time)? Are you going to film something or pre-render something or what?

v6v

  • Clever
  • Fanatic
  • ***
  • Posts: 500
  • Has renamed his project to Galaxy!
    • View Profile
    • My Developer Page!
    • Email
Re: Project Paradigm
« Reply #7 on: 2012-08-09, 08:24:45 AM »
You're quite resourceful. Sorry I didn't reply to that particular question, but glad you're making progress. Of course if you were making an HTML5 project, video would be a no-brainer ;D. Surely there must be some cross-platform solution short of converting to HTML5.

But I have another question - what exactly do you intend to make videos with (is it something that couldn't be rendered in real-time)? Are you going to film something or pre-render something or what?

I've always taken a side hobby in animation (Even when I just joined this site) so I want to have an animated intro for my game. If it was a recording of gameplay I could use the SpriteRecorder, but it's mainly a pre-rendered animation.

I was recommended by a user on another site to do just that- use "IExplorer controls" to play a video in HTML5.

If only there were some way to open a window of the default browser on the system and play a video in HTML5, fullscreen.

Resourceful? Thanks. :D

(To be honest blame it on the spare time I have. If it were either you or Vincent (or even durund) doing what I was trying to do, you all would have accomplished it with ease. I'm really not a programmer yet.)


You know what would be really nice? Since NeHe is telling me that I need to map an AVI to an OpenGL texture, if I could take an avi or wmv file, convert it to a series of bmp or png files, and go from there.


EDIT

Come to think of it, I'll probably be forced to use ffmpeg to convert an AVI to a series of png files to make this happen. For now I'll stick to the AudioVideo and focus on that later. I don't want to have all of the png files that form the video out in the open, and I certainly don't want to embed them (That's what causes the System.OutOfMemory exception) I wonder if I could just convert the .png files to .bin?
« Last Edit: 2012-08-09, 09:10:21 AM by #Sharp »

v6v

  • Clever
  • Fanatic
  • ***
  • Posts: 500
  • Has renamed his project to Galaxy!
    • View Profile
    • My Developer Page!
    • Email
Re: Project Paradigm
« Reply #8 on: 2012-08-24, 04:18:06 PM »
Update:

Finally implemented the code to give me OpenGL coordinates, now a parameter of sprite known as OpenGLX and OpenGLY.
(This means that advanced OpenGL functions, such as drawing hair for a sprite, or drawing a string above it's sprite that represents its name is now possible)

Savegames implemented

Game flow implemented - Title flows into settings, file select, character creation and then gameplay. No more having to manually select maps.

I'm in college now, and port forwarding isn't common (I'm not sure if I can do it here)

So I would really like it if someone would eventually volunteer to test Server/Client logic (Now that I'm linking the character creation screen to server/client logic). I had it working before I came to college, so it shouldn't be too buggy.

But if you guys are busy, it's understandable.   :(

really


Screenshots:





Now I have 2 skydomes. One draws the sky. The other, as a translucent overlay, draws clouds. They move opposite to each other.

I can also pinpoint the exact location of a sprite now relative to the layer, so I can draw player usernames above the sprites.

Gentlemen, I have to say, out of my 7 years on this website, this is probably been the one game that I've been the most driven to finish.

(Neuro is actually going to be my next project, I played it last night and enjoyed it's simple mechanics. I'm going to make it HTML5. Hopefully by the time I finish this, browser embedded web technologies without third party plugins will have developed further for me to use more advanced features, such as stable WebGL and HTML5 sockets. And I really like the Skydome effect in my current project- so I'd love to be able to cram that in too.)
« Last Edit: 2012-08-24, 10:45:08 PM by #Sharp »

bluemonkmn

  • SGDK Author
  • Administrator
  • Fanatic
  • *****
  • Posts: 2744
    • ICQ Messenger - 2678251
    • MSN Messenger - BlueMonkMN@gmail.com
    • View Profile
    • http://sgdk2.sf.net/
    • Email
Re: Project Paradigm
« Reply #9 on: 2012-08-30, 04:58:32 AM »
Maybe my wife and I can help with testing. Oddly, I can't run a Minecraft server on my mobile hotspot, but I have been able to map ports for other games with no problem. What do we need? Is the server-side code .NET or PHP or what? If the server code is something that can run on a Dreamhost server, I have that. Otherwise we'll have to use one of our desktops as a server.

v6v

  • Clever
  • Fanatic
  • ***
  • Posts: 500
  • Has renamed his project to Galaxy!
    • View Profile
    • My Developer Page!
    • Email
Re: Project Paradigm
« Reply #10 on: 2012-08-30, 07:45:40 PM »
Maybe my wife and I can help with testing. Oddly, I can't run a Minecraft server on my mobile hotspot, but I have been able to map ports for other games with no problem. What do we need? Is the server-side code .NET or PHP or what? If the server code is something that can run on a Dreamhost server, I have that. Otherwise we'll have to use one of our desktops as a server.

It is as simple as forwarding the port and starting the game  (I haven't decided on an actual port yet, the one I've been using I may change, I want to use a port that won't be an inconvenience and isn't already used.) Thanks for helping!

I'm not using a master server yet  :), so for now it will be Join by IP (Simple, right?)

I'm still frantically polishing my lousy programmer art and design flaws for release to this site.

The main thing I need to test is latency and responsiveness, as well as consistency between the players.

(I also forgot to mention. I have 2 people who've joined my team. One does voice work and the other does music, the composer has agreed to compose me an entire OST. He's extremely talented, and most of his songs are Orchestra-esque songs. And the other- I couldn't ask for a better voice actor. Not as important to mention, but it's nice to have my first team :D )

bluemonkmn

  • SGDK Author
  • Administrator
  • Fanatic
  • *****
  • Posts: 2744
    • ICQ Messenger - 2678251
    • MSN Messenger - BlueMonkMN@gmail.com
    • View Profile
    • http://sgdk2.sf.net/
    • Email
Re: Project Paradigm
« Reply #11 on: 2012-09-08, 11:19:42 AM »
How/when can we get started?

v6v

  • Clever
  • Fanatic
  • ***
  • Posts: 500
  • Has renamed his project to Galaxy!
    • View Profile
    • My Developer Page!
    • Email
Re: Project Paradigm
« Reply #12 on: 2012-09-08, 01:04:24 PM »
Very soon. (Finally, because I've procrastinated this for the longest of time now) I've added the function that flips the sprite across the Y axis and converts the animation data to a flipped version by changing the points of origin. (So now the character can face both directions!)

What I'm going to attempt is to have you run the game in Host Mode through a console command, and I'll attempt to join to see if it does the following:

The client successfully registers with a username and password
The client downloads the appropriate sav file from the server and loads from it.
The server and the client both have the same sprites at the same position
The latency is at a minimum for 2 players. If I'm lucky I can eventually get 3 players by having another client join (I'm going to be forced to do this later)

I'm just going to use an existing map that I already had and use that was planned on being a local (non internet) map.

(What I don't have done yet, because I haven't dealt with the fact that players are going to switch maps..)
I'm wondering if the host should save the sprite properties for each sprite to some form of external text file. Then after creating a new file, setting the properties from the file, and sending the client that data.

(The method below is the way I was going to go even before I started the game, surprisingly)
But I think a more efficient way is to create a separate map, have a sprite on that map that has the same properties as the players, and when a player does something significant it updates the sprite on the separate map with the parameters. When a client or server player switches map, it first downloads the appropriate sav file from the server, adds the sprite at the right location on the new map, then copies the appropriate parameters from the sprite on the map though a foreach loop to the newly created sprite on both the client and the server (The client downloads 2 sav files. The save file of the new map, and the save file of the map that stores information, the server just looks at the information map and doesn't download a thing.)

So I'd think that it's safe to say that this is going to need TCP and UDP.

EDIT: I'm debating on which port to use, can you decide on one?
« Last Edit: 2012-09-08, 01:28:22 PM by #Sharp »

bluemonkmn

  • SGDK Author
  • Administrator
  • Fanatic
  • *****
  • Posts: 2744
    • ICQ Messenger - 2678251
    • MSN Messenger - BlueMonkMN@gmail.com
    • View Profile
    • http://sgdk2.sf.net/
    • Email
Re: Project Paradigm
« Reply #13 on: 2012-09-08, 02:11:30 PM »
I don't have a *whole* lot of experience with networking, but my understanding is that TCP is built on UDP, so UDP is a simpler protocol. But I have never been able to figure out how TCP connections, at the UDP level, maintain bi-directional access through a router without NAT routings if it's true that TCP is built on UDP. I have heard that TCP is relatively inefficient compared to UDP. Not sure if that's enough information to base a decision on.

v6v

  • Clever
  • Fanatic
  • ***
  • Posts: 500
  • Has renamed his project to Galaxy!
    • View Profile
    • My Developer Page!
    • Email
Re: Project Paradigm
« Reply #14 on: 2012-09-08, 02:26:43 PM »
I don't have a *whole* lot of experience with networking, but my understanding is that TCP is built on UDP, so UDP is a simpler protocol. But I have never been able to figure out how TCP connections, at the UDP level, maintain bi-directional access through a router without NAT routings if it's true that TCP is built on UDP. I have heard that TCP is relatively inefficient compared to UDP. Not sure if that's enough information to base a decision on.

The reason I'm straying away from UDP is that I need to send .sav files from computers. UDP isn't reliable (From what I'm hearing) and Kaleta would have solved my problem had it not been built on an older version of Lidgren.Network. I don't want to use plain out of the box Lidgren.Network for this sort of thing (I don't think it was made to send entire files)

MSDN has a good article on downloading files from a location. I don't want to have another thread running for downloading files with TCP though, and I don't want to keep it on this thread (The old Net.cs object halted the game when it was waiting for information)

AFAIK, the Doom engine downloaded .sav files whenever joining a new server. I'm not sure how it did this exactly, but I know that Doom games were portforwarded only though UDP on port 5029. This means that UDP could potentially be used for this, but when playing Doom and using this, I find that it sometimes is buggy (It closes and throws the exception that "Recieved a file not Requested") or it simply freezes after downloading 1K of the file.

If there was a median line in this... I'm going to check Lidgren's documentation to see if I can find something else to help.