News:

The forum has been updated to SMF (2.1.3)!
Please be patient as we work to polish up the place and update features as we can.

Main Menu

Open Golden Sun: Open source recreation of the Golden Sun engine

Started by OpenGoldenSun, 15, December, 2014, 11:46:04 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Rolina

Yeah - casting a fireball effect into, say, a waterfall would probably require a check to trigger its own animation variant or something.  Didn't we create a patch to allow for 8-directional utility casting?  I imagine working that into the game would be a pretty good idea as well.

I want to see if this is coming straight from a program, or if he's developing a UI kind of like what atrius did.  Plus, knowing what programs he's using would be a good thing for when we go in to have fun with it.

Misery

This is looking very good, and I hope you'll keep the project going (@OpenGoldenSun). It appears to be a very faithful replica of the game engine, to the point that I believe you have a pretty good grasp of how the game works. So with that in mind, I don't feel the need to point anything out - just keep up the good work!
However, I have to respectfully disagree about the graphics filter you used in the video... nothing wrong with it in itself, but I don't think it makes the GBA pixel graphics look better.

Oh, and like others here I'm interested in a few more details about how you're making this. Saying you're building it "from the ground up" isn't particularly telling. What programming language and other resources are you using?

@Rolina: Open source generally just means the source code is available and unprotected, but I guess we should be able to expect some kind of editor, as otherwise there wouldn't be much of any point to doing this. In response to "can we do X", anything can be done, just as nearly anything can be done on the GBA, except now with fewer restrictions and the advantage of a conventional programming language.

Daddy Poi's Oily Gorillas

QuoteWhat programming language and other resources are you using?
Not sure, but did you read this? (Link in first post.)
https://www.reddit.com/r/GoldenSun/comments/2mvhva/open_golden_sun_an_opensource_golden_sun_engine/

More specifically:
QuoteWhen will this be open-sourced?

    So, right now it's coded on DirectX9 with C# using XNA. The plan is to get it over to MonoGame and SharpDX. Before this happens I still have a few iterations of game code architecture that I need to figure out. Game architecture is always tricky, it's pretty easy for it to turn into hack on top of hack. I don't want to open-source it that way. I will attempt to get it to a respectable stage of development with a clean architecture and then open-source it.

You are welcome. :)

(I believe I was going to ask that same question earlier...(probably near the time the topic was made?), but then I wanted to make sure it wasn't answered... So it was good I checked. :) )
Golden Sun Docs: Broken Seal - The Lost Age - Dark Dawn | Mario Sports Docs: Mario Golf & Mario Tennis | Misc. Docs
Refer to Yoshi's Lighthouse for any M&L hacking needs...

Sometimes I like to compare apples to oranges. (Figuratively) ... They are both fruits, but which one would you eat more? (If taken literally, I'd probably choose apples.)
Maybe it is over-analyzing, but it doesn't mean the information is useless.


The only GS Discord servers with significance are:
Golden Sun Hacking Community
GS Speedrunning
/r/Golden Sun
GS United Nations
Temple of Kraden

Can you believe how small the Golden Sun Community is?

2+2=5 Don't believe me? Those are rounded decimal numbers. Take that, flat earth theorists! :)

Misery

Hrk, sorry about that. Yes, I did read the stuff in the link, but I skimmed the FAQ since that wasn't the question I was looking for. Thanks for clearing that up.

OpenGoldenSun

#24
Everything is still in early stages. There is no UI for this engine because the project is nowhere near that stage. Right now configuration of maps and stuff is done through a separate code project (GoldenSun.Game.Definitions).

Currently it uses an event engine with conditions and actions. I.e. if all condition requirements are met then the actions are run. This is something that I've designed to be quite configurable. For example you could basically configure events on a map such as:


If controlled player intersects a bounding rectangle with the specified absolute bounds then...
Suspend control of player character
Show dialog window
Wait for dialog window close
Resume control of player character


You can see that structure in the class hierarchy I posted.

I do sort-of store tile based data for the maps, but probably not how you're thinking. All the maps are .png files with transparency.

There are utilities that I've created to better help me translate accurately and efficiently things from the actual game to the engine. That is where something like the TileAndHexUtilityForm comes in. An example of how that form is used is: I want to replicate the exact water effects that Vale has. Meaning, the exact animations at the exact same spots. Obviously doing this manually is tedious. So I can do a memory dump from VBA and then it will read all the relevant tiles that I want (I click on the tiles to tell it which ones I want) and then it will generate the code based on whether the tile is flipped vertically or horizontally etc...

The field psynergy effects are all written manually. The positioning of the Move hand etc... is all calculated with vectors and such. So in theory you could (if you allowed) cast move from really far and the hand would animate to the pillar (I could maybe post a video of this for fun).

I also tweaked the smoothing algorithm because I know some people weren't a fan. I think the main thing was what it did to Felix's face (mostly the eyes). Here is what the new version looks like, as you can see the eyes are much better.


Rolina

As I mentioned in the comments of the vid you showcased that in, it might be better if you have a staggered blending.  For example:

Layer 1 affects the background assets
Layer 2 affects the sprites
Layer 3 affects the menus and text boxes

For me, I'd probably turn layers 1 and 2 on, but would prefer to have layer 3 off.  This would allow people to toggle bits and pieces to get a look they see as being ideal for their tastes.  Consider the different layers for a future update. ^-^

MaxiPower

Id prefer it with no smoothing whatsoever tho I can see why people may like it. So the option to toggle it all off would be sweet.

How much work is there in adding each separate psyngery? Must be a pain with soooo many of them yet rewarding when they finally work.

Misery

Quote from: MaxiPower on 07, January, 2015, 09:24:28 AM
Id prefer it with no smoothing whatsoever tho I can see why people may like it. So the option to toggle it all off would be sweet.
No smoothing is default.

What looks good and what doesn't is highly subjective, and considering this is just a recreation of the engine I don't think you should concern yourself too much with it. Maybe support higher resolution graphics, for those who would be willing to create those graphics. Personally I think visual improvements go beyond the scope of this project, but it's not my project so...

Rolina

Quote from: MaxiPower on 07, January, 2015, 09:24:28 AM
Id prefer it with no smoothing whatsoever tho I can see why people may like it. So the option to toggle it all off would be sweet.

How much work is there in adding each separate psyngery? Must be a pain with soooo many of them yet rewarding when they finally work.
It already has a toggle - right now it's all or nothing.  I was hoping for a tiered toggle, so that we can pick and choose what we want smoothed and not smoothed.

I also second support for higher res graphics.  Say what you want about Dark Dawn, it's icons were gorgeous.  I think right now, however, it may be a better idea to focus on getting the core of the game done, and then working on graphical addons like smoothing and high-res graphics for later.

OpenGoldenSun

Guys, it's important to realize that this is a GBA engine clone. There will be no higher resolution graphics support. Everything is being drawn to a 240x160 (native GBA resolution) buffer and then scaled either according to two variations of the xBR filter (square vs rounded) or no interpolation (nearest neighbor). The menuing icons and screens will be copied from the GBA games with some minor changes.

Performing smoothing on separate layers is not ideal for a few reasons:


  • FPS (You're looking at approximately 4-5 different stages where a shader effect will need to be rendered per frame)
  • Complexity (Layers would need to be able to render over top of other layers with different shader settings)
  • Don't agree on it's usefulness
  • Doesn't seem worth the time and effort
Rhetorical: When you play Golden Sun with VBA what settings do you use? The most common ones will be implemented. Consider that even VBA doesn't smooth layers separately.

Rolina

Well, I certainly don't use smoothing.  The most I used on VBA was the speed increase function.

Daddy Poi's Oily Gorillas

Quoteit's important to realize that this is a GBA engine clone. There will be no higher resolution graphics support
So does this mean no Dark Dawn icons? Or would they just have to be graphically downgraded?

---
Smoothing? Not even sure where that setting is on VBA... (Render Method?)  So it's likely I use their default setting.
Golden Sun Docs: Broken Seal - The Lost Age - Dark Dawn | Mario Sports Docs: Mario Golf & Mario Tennis | Misc. Docs
Refer to Yoshi's Lighthouse for any M&L hacking needs...

Sometimes I like to compare apples to oranges. (Figuratively) ... They are both fruits, but which one would you eat more? (If taken literally, I'd probably choose apples.)
Maybe it is over-analyzing, but it doesn't mean the information is useless.


The only GS Discord servers with significance are:
Golden Sun Hacking Community
GS Speedrunning
/r/Golden Sun
GS United Nations
Temple of Kraden

Can you believe how small the Golden Sun Community is?

2+2=5 Don't believe me? Those are rounded decimal numbers. Take that, flat earth theorists! :)

Atrius (He/Him)

Quote from: OpenGoldenSun on 10, January, 2015, 02:12:46 AMRhetorical: When you play Golden Sun with VBA what settings do you use? The most common ones will be implemented. Consider that even VBA doesn't smooth layers separately.

Me personally, Nearest Neighbor.  I've never been a fan of filters that try to create detail where it didn't exist before, more often than not it just ruins all the work the graphics designers did on the game.  For example that screenshot you posted with the filter applied makes Golden Sun look cartoony, which I don't remember it looking like at all on the GBA.  The shading wouldn't have originally had dithering otherwise bringing me to my next point.  If you look at the grass in your screenshot some of it almost looks like it was meant to be scaled and filtered the way it looks in your image, but other sections still have an obvious checkerboard pattern ruining the effect.  In my opinion it looks like the filter is failing pretty hard on the grass in particular, showing why it shouldn't be applied in the first place.
[sprite=220,4,0]I'm shaking my head in general disapproval of everything[/sprite]

Daddy Poi's Oily Gorillas

Yeah, maybe Nearest Neighbor is the way to go. I still wonder about minor smoothing though. Basically to the point where you *barely* notice a difference, but you do if you look carefully/zoom in some more. Although, doing it at that point might render it pointless... so yeah.
Golden Sun Docs: Broken Seal - The Lost Age - Dark Dawn | Mario Sports Docs: Mario Golf & Mario Tennis | Misc. Docs
Refer to Yoshi's Lighthouse for any M&L hacking needs...

Sometimes I like to compare apples to oranges. (Figuratively) ... They are both fruits, but which one would you eat more? (If taken literally, I'd probably choose apples.)
Maybe it is over-analyzing, but it doesn't mean the information is useless.


The only GS Discord servers with significance are:
Golden Sun Hacking Community
GS Speedrunning
/r/Golden Sun
GS United Nations
Temple of Kraden

Can you believe how small the Golden Sun Community is?

2+2=5 Don't believe me? Those are rounded decimal numbers. Take that, flat earth theorists! :)

Misery

Quote from: OpenGoldenSun on 10, January, 2015, 02:12:46 AM
Guys, it's important to realize that this is a GBA engine clone. There will be no higher resolution graphics support. Everything is being drawn to a 240x160 (native GBA resolution) buffer and then scaled either according to two variations of the xBR filter (square vs rounded) or no interpolation (nearest neighbor). The menuing icons and screens will be copied from the GBA games with some minor changes.
I find it odd that you point this out after deciding to include a function exclusive to emulators, but oh well. If someone wanted higher resolution, they could modify the engine to support it after you release it to the public. I guess that's the beauty of open source.

My stance on smoothing is much the same as what Atrius wrote, those pixels won't look better no matter what you do with them - the graphical information just isn't there. But it doesn't hurt to have the option, since you added it already.

Daddy Poi's Oily Gorillas

QuoteI find it odd that you point this out after deciding to include a function exclusive to emulators, but oh well.
And the GBA didn't allow you to have a bigger screen, did it? (Assuming that the emulators added those functions due to full screen looking a bit blocky.)

Aside from that, GBA does support Rotation and Scaling without the filters.... I know GS has a zoom-out with the L button on the world map, but I haven't checked how that was done. (Were there some cutscenes that involve being zoomed in? Haven't checked those either...) My bet is that neither one use filters?
Golden Sun Docs: Broken Seal - The Lost Age - Dark Dawn | Mario Sports Docs: Mario Golf & Mario Tennis | Misc. Docs
Refer to Yoshi's Lighthouse for any M&L hacking needs...

Sometimes I like to compare apples to oranges. (Figuratively) ... They are both fruits, but which one would you eat more? (If taken literally, I'd probably choose apples.)
Maybe it is over-analyzing, but it doesn't mean the information is useless.


The only GS Discord servers with significance are:
Golden Sun Hacking Community
GS Speedrunning
/r/Golden Sun
GS United Nations
Temple of Kraden

Can you believe how small the Golden Sun Community is?

2+2=5 Don't believe me? Those are rounded decimal numbers. Take that, flat earth theorists! :)

OpenGoldenSun

I'm not trying to argue that smoothing is better, nor am I trying to convince you. It's all personal preference. Personally, if I'm playing at 5X or 4X normal resolution, I like the filter. If you don't like it that's perfectly fine.

This conversation has just become arguing over personal opinions and is not constructive. Everyone should already be aware that the filter is not forced, it is easy to turn off.

Let's shift our focus away from discussing smoothing and more towards constructive dialog.

So on that note, I'm currently working on getting the battle system skeleton up and running. I'm trying to get that pseudo-3D effect that happens while the characters move across the screen (as if the camera is rotating around them). It seems like there is some acceleration variable being taken into account as the character approaches the right side of the screen and then moves left (notice how the character will almost pause in one spot before coming back to the left).

Atrius (He/Him)

It's probably just a Sine/Cosine equation to calculate their position on screen, like an oval.  It makes perfect sense for rotation like that, and naturally causes the acceleration you're talking about.


I've long since lost the source code I used to create this demonstration, but it was based on Sine/Cosine equations.
[sprite=220,4,0]I'm shaking my head in general disapproval of everything[/sprite]

Rolina

Oh, that pic reminds me.  Will we be able to have more enemy sprites on screen?  You said it's going to emulate what the VBA can do... but I don't see why we should limit ourselves to the video memory of the GBA.  For example, if you want to fight four enemy adepts, you can't - a graphical glitch will occur on the fourth.  Try creating a fight against all four of the proxians to see what I mean.  I'm pretty sure that just about everyone's gonna want to see a full team vs full team match, and would definitely try it if they could.  The best thing about making something for PC, by far, is going to be the fact that you can do more than what the original hardware could pull off.

OpenGoldenSun

@Atrius, thanks for that. That should be enough for me to figure it out.

@Rolina, yeah it will for sure handle full party vs. full party. For the enemies I think it will basically just come down to what screen space is available, I don't see any issue with allowing more enemies than normal so long as they fit properly.