Jump to content
A 2021 backup has been restored. Forums are closed and work in progress. Join our Discord server for more updates! ×
SoaH City Message Board

Starting Project - Sonic Fan Game Development Kit


Recommended Posts

I decided to start a new fangame creation program, named Sonic Fan Game Development Kit (SFGDK for short).

The program will be made with C# using .NET Framework 4.0, and the engine maybe DirectX (which version??)

 

SFGDK will be game-maker-like environment with these features:

  • Sprite Editor - A sprite editor for your game graphics (with sub-animations, origin point, and collision mask).
  • Sound & Music Editor - Imports (and exports) .wav, .mp3 to your fangame. You can set looping points.
  • Font Editor - Create and modify sprite-based fonts. (with kerning, glyph size).
  • Tile Editor - Make your level tiles. (and collision masks of them). You can make animated ones!
  • Chunk Editor - Make large blocks from your tiles (like these of sonic hacking), and set their solidity and behavior.
  • Background Editor - Make backgrounds for your levels & screens, and set parallax scrolling settings.
  • Object Editor - Manage your game objects, and edit their behavior. You can add properties and variables.
  • Code Editor - Make functions, structures, macros and enumerations for the gameplay, using c#-like language.
  • Level Editor - Design your zones with your chunks and your objects.
  • Screen Editor - Manage the fangame's screen (e.g. SEGA Screen, Title Screen, Level Screen) and their codes.
  • Misc. Editor - This one will store other binary and text reources for your game.

And MANY more features...

 

I hope this project will be helpful. 

 

EDIT: This post is outdated. Read later posts.

EDIT: Screenshot prototype is available v

nfp2eq.jpg

Edited by Stardust Gear
  • Like 3
Link to comment
Share on other sites

Guest Mr Lange

What kind of features would this offer over just using something like Sonic Worlds in MMF2? Aside from being free I suppose, here's the main things I'm looking for:

  • The sprite editor being able to work very fast, importing sheets or frames easily and handling placements of pivot points with common sense (MMF2 has issues with this).
  • A quality level editor that doesn't have the petty limitations other game dev tools tend to have.
  • Quick placement of common objects like layer swaps and spin triggers.
  • The ability to create prefab objects (connected groups of objects that can be instantiated at once), such as a badnik with multiple collision sensors, bosses with multiple parts, or even copies of the entire player with all of it's needed objects. This would be a vast improvement over how many other game dev tools work, especially since any such softwares with Sonic engines do not have this.
  • Using DirectX? Have some 3d rendering power in there. That would be a huge advantage.
  • Level editing oriented for Sonic games for fast workflow:
  • Tools and widgets for unique properties of common objects, like the monitor type, spring power, size of triggers, drawing lines of rings, etc.
  • Visual guides that show various relevant details, like the launch path of a spring (the path would assume lack of input), or a set of guides that follow the mouse that shows Sonic's jump height and approx distances based on running speeds. Things like that would be tremendously helpful.

If you're planning to use a tile and chunk based level system, for the love of god don't make it a cumbersome workflow like rom hacking tools and such. Make sure the system also supports freely importing images of arbitrary sizes and placing them right into the level. Also, supporting direct use of the alpha map as collision, that is important for both level elements and interactive objects. This program would also have a huge advantage by supporting drag and drop of images from explorer right into the program for instant level graphics.

Edited by Mr Lange
  • Like 4
Link to comment
Share on other sites

@Mr. Lange, nice help!

 

The sprite editor will support different-sized subanimations, and will be able to get spritesheet frames using magnetic size (draw larger size and trim it immediately).

 

The level editor will use chunks, objects, and "trigger" (change boundaries, water height, path swapper). The object entries have subtypes and fixed parameters (Like SonED2 and SonLVL). It will be built of planes, for earthquake and floating level sections.

For drawing rings in lines, (and rectangles), there will be tools like Linear Object Array, Rectangular Object Array, Arc Object Array, ...

The triggers have size in pixels, not as parameter.

 

The tilesets are any size you like (8x8, 16x16), with back layer art and fore layer art, and specific collision mask (the program creates collision mask by alpha, by default).

 

The chunks are built of tiles (any number of tiles), with each entry has solidity (solid, none, platform, path 1, path 2, solid for beneath) and qualifies (e.g. harmful, fire, spin tube).

 

The objects have preview code (for the level editor that, for example, will show the swing platform according to number of chain rings).

For objects with multiple collision masks, they will use the class CollisionMask from sprite/rectangle, with the qualifies.

{

// For Example, Spikes of the Bubbles Badnik:

CollisionMask spikes = new CollisionMask(Sprites.BubblesSpikes);

spikes.Qualifies = enumQualifies.Harmful;

}

 

For the visual guides, the moving platforms will show the MinX and MaxX arrows, and the springs may show their jump height.

For Drag&Drop, I don't know how to implement it in C#  :confused: . (I will find in Stack Overflow...)

For 3D Graphics, you will need a seperate screen, that the code will use the 3D class library, and will use special 3D levels with 3D objects (and 3D player).

 

The SFGDK engine will use an important feature that no MMF2/GM engine can't support it: X-Axis and Y-Axis looping from the extreme side (without the limit of $800 level size!).

For underwater, use a semi-transparent cover OR make a copy of your tileset with a color change. Code in the screen drawing event (you can use the code for heatwave effect and ripple effect) to draw another tileset under the water level.

Edited by Stardust Gear
Link to comment
Share on other sites

Guest Mr Lange

For drawing rings in lines, (and rectangles), there will be tools like Linear Object Array, Rectangular Object Array, Arc Object Array, ...

The triggers have size in pixels, not as parameter.

Ah ha, array tools for any object, much better. Similar tools for placing tiles and level graphics would also be a massive advantage.

 

The objects have preview code (for the level editor that, for example, will show the swing platform according to number of chain rings).

For objects with multiple collision masks, they will use the class CollisionMask from sprite/rectangle, with the qualifies.

{

// For Example, Spikes of the Bubbles Badnik:

CollisionMask spikes = new CollisionMask(Sprites.BubblesSpikes);

spikes.Qualifies = enumQualifies.Harmful;

}

This is good, but it's still a far cry from prefabs. Object groups may need to be made out of more than just collision sensors.

 

For the visual guides, the moving platforms will show the MinX and MaxX arrows, and the springs may show their jump height.

For 3D Graphics, you will need a seperate screen, that the code will use the 3D class library, and will use special 3D levels with 3D objects (and 3D player).

That's good, consider all the kinds of visual guides that could be used. As mentioned, a simple line following the cursor showing Sonic's jump height would be a huge help.

Not sure what you mean. Are you saying 3d rendering will be possible then?

 

The SFGDK engine will use an important feature that no MMF2/GM engine can't support it: X-Axis and Y-Axis looping from the extreme side (without the limit of $800 level size!).

For underwater, use a semi-transparent cover OR make a copy of your tileset with a color change. Code in the screen drawing event (you can use the code for heatwave effect and ripple effect) to draw another tileset under the water level.

This is where I was getting concerned. It sounds like you're trying to make it work almost exactly as the original system did. Here's an example of where you could start taking liberties. Instead of just an infinite water plane, how about water tiles? I want to be able to place arbitrary areas of water throughout the level, like isolated pools. And regarding the "semi-transparent cover", this is where I highly recommend some kind of palette swap blend mode system, because semi-transparent overlays are a very poor means of making water. A tile set copy with palette changes doesn't work either, because what about things that move in and out of the water... like Sonic?

 

@SonicFan2010, if you wanna to be my partner, contact me in e-mail: [email protected].

He was talking about a partner system, as in another character following you. Tails AI.

 

 

This is sounding very good so far, although it seems you're limiting things to the Genesis system too much. I don't want to work purely in tiles, I need to be able to just use any image as level and collision graphics. That's part of the freedom of using a custom engine, you don't have to deal with the limitations and annoyances of rom hacking, so why would you impose similar limitations here when your engine is capable of virtually anything?

 

Regarding the "C# like" scripting language, please simplify the language as much as possible. I really can't stand C#, something closer to GML would be a lot more accessible to everyone.

 

I'm going to make some animated examples of how the widgets could work and post them later.

Edited by Mr Lange
Link to comment
Share on other sites

@Mr. Lange:

Good idea to make stamps of tiles and objects (e.g. shuttle loop with rings & path swappers).

For the multiple collision masks, I will add to the object Collision Mask Editor that will take sprites and change solidity and qualifies.

For Underwater, Add the Underwater qualify to the tile entries in your chunk.

Moreover, You can change the code of the water in specific zone (e.g. lose rings, die, float, sink slowly like in OOZ).

For Water Color: Duplicate your tileset, and use the Color Blend/Color Swap Tool.

Or, Create underwater-colored tiles, and their chunks with the qualify underwater.

 

For the visual guides I will add the Sonic/Knuckles/Super Sonic maximal jump height (it is easy...). You will be able to split routes for s/k easily.

Don't worry, there will be no limit, no pallete limit, no resource limit. You will fill free to make Sonic ?? HD!

 

For A.I. ... It will be included in templates and wizards.

To the New Game Menu, I will add fangame templates, and wizard that you will decide what will be in your fangame at start.

 

For C#-Like language, I will have tutorials, I will add description for each type, I will add these GML features: var, repeat, do..until.

In Addition, Use Cos rather than Math.Cos, and String2Int/String2Decimal instead of int.Parse. (No Casting, Use Floor() to convert decimal->int)

Variable types (as less as i can): var, int(64-bit), decimal, bool, string, <enum_name>, <class_name>, array(int[], string[], ..)

The arrays will have no dimension limit. You can use also Grids, Lists, Stacks, Queues and Dictionaries.

 

Animation examples: I didn't actually start the VS solution, I 'll post screenshots later. I will add tutorials for beginners (with small videos).

 

Note: My computer doesn't support Pixel Shader and the OS is Windows XP SP3.

Can you please give me a good DirectX version and C# library that will match my specs?

 

@Kessler12:

The Interface will be like GameMaker, with the treeview in the left side.

I don't know if use the MDI system or to use the tab system, like in Visual Studio.

 

Mr. Lange, your comments are very helpful! Keep commenting for any improvement.

Edited by Stardust Gear
Link to comment
Share on other sites

Another neat feature to go along with the jump height marker would be a jump length marker that would show how far sonic could jump at a given speed before hitting the ground. Not sure if you can do something like that but it'd be cool.

This is sounding rather sweet and I'll be watching the progress of this as it goes on. 

Link to comment
Share on other sites

Guest Mr Lange

Alright so far so good, but I do have more to talk about. I'll be back later with more, and probably those gif examples of widgets.

 

Another neat feature to go along with the jump height marker would be a jump length marker that would show how far sonic could jump at a given speed before hitting the ground. Not sure if you can do something like that but it'd be cool.

  • Visual guides that show various relevant details, like the launch path of a spring (the path would assume lack of input), or a set of guides that follow the mouse that shows Sonic's jump height and approx distances based on running speeds. Things like that would be tremendously helpful
Edited by Mr Lange
Link to comment
Share on other sites

@Highwire4, 

I probably can't implement your idea, but I can add a feature to add Bookmarks to the level, that you can jump to the bookmark point during level design, and you can test the level starting from the bookmark. (Select a character and AI-player first).

 

@Mr. Lange:

I don't know what to do about water... Maybe a color blending system (reduce saturation, blending modes like photoshop).

For different-sized ground pieces, use objects with the qualify Solid/Platform/Path 1/Path 2.

You can also make a chunkset with each chunk has different size, and you can overlay chunks.

 

For object group, You can add objects to the list, and add them as variables or array elements, using the instance creation method.

For ring chains on spikeballs, bosses and swing platforms, just draw their sprites using a code.

Link to comment
Share on other sites

Guest Mr Lange

Blend modes would work a lot better. It's not ideal, but good palette change effects can be achieved with smart uses of blend modes, so if you can't create a palette swap shader of some kind, blend modes are the next best thing.

Link to comment
Share on other sites

I have some ideas:

  • If you want a 16-bit game, you can create a game with palettes (no color limit...), and the node Palettes will join the treeview.
    If you want underwater, replace your palette during the redrawing process, under the water level.
    This idea is good for Lava Reef and Mushroom Hill, and also palette cycle is supported.
  • You can add names to your tiles and your chunks. You will also realize what the tiles do.
    You can also sort the tiles/chunks into Familie- for similar tile groups. Don't forget to name the families.
  • You can add description to objects, object properties, constants, enums, enum entries and functions.
  • I will create tutorial for beginners, to create their first fangame with the first zone.
    Later I'll add some additions, how to add new moves, new gimmick, and more zones.
  • You can add some test points in your level. You'll snap them to ground/wall/ceiling, and they will show jump height for specific character, and Tails' flying height.
  • You can arrange objects, for example making same spacing, align bottoms. You can also snap them to ground/ceiling/wall/grid.
  • I may add a feature that the level scrolling loops when the boundaries allow X-Looping/Y-Looping.
    I believe this feature is not existing in any level editor.
  • You can preview the boundaries and the water level during the level design.
  • You can draw rectangle and line of chunks.
  • The audio player will have slider, time and volume. It is not existing in GM/MMF2.
    You can change effects (e.g. reverb, chorus), and change the music pitch/speed (good 4 speed shoes).
Link to comment
Share on other sites

I decided to start a new fangame creation program, named Sonic Fan Game Development Kit (SFGDK for short).

The program will be made with C# using .NET Framework 4.0, and the engine maybe DirectX (which version??)

 

SFGDK will be game-maker-like environment with these features:

  • Sprite Editor - A sprite editor for your game graphics (with sub-animations, origin point, and collision mask).
  • Sound & Music Editor - Imports (and exports) .wav, .mp3 to your fangame. You can set looping points.
  • Font Editor - Create and modify sprite-based fonts. (with kerning, glyph size).
  • Tile Editor - Make your level tiles. (and collision masks of them). You can make animated ones!
  • Chunk Editor - Make large blocks from your tiles (like these of sonic hacking), and set their solidity and behavior.
  • Background Editor - Make backgrounds for your levels & screens, and set parallax scrolling settings.
  • Object Editor - Manage your game objects, and edit their behavior. You can add properties and variables.
  • Code Editor - Make functions, structures, macros and enumerations for the gameplay, using c#-like language.
  • Level Editor - Design your zones with your chunks and your objects.
  • Screen Editor - Manage the fangame's screen (e.g. SEGA Screen, Title Screen, Level Screen) and their codes.
  • Misc. Editor - This one will store other binary and text reources for your game.

And MANY more features...

 

I hope this project will be helpful. 

 

PLEASE do not use DirectX.

Either use either XNA/MonoGame (specially the SDL2 fork), or use OpenGL directly.

Using DirectX will only narrow your platforms to Windows and Xbox One (if you're using DX11);

If you use OpenGL/MonoGame, you'll be able to deliver to Windows, Linux (SteamOS included) (Wine is NOT an option), Mac OS X, Playstation 4 and perharps iOS and Android. Think about that.

DX sucks ass, don't make me declare variables like LPVERTEXBUFFERFUCKINGCALLBACKDX9 vb;

 

C# is a good language. I like to think of it as Java's efficient second degree cousin. Good choice.

 

I suggest you guys start a GitHub repo and start coding your way into the stars right now. I'd also be eager to help with general programming, cuz right now that's what I do. There's also this little repo I started a few days ago, which is supposed to be the foundation to Sonic Worlds' port to C++11 shhh it's a secret. I talked a bit to DimensionWarped but it only has minimal things right now. This is not the right place to talk about it, since I'll probably be making a thread @ SW forum, but that's just to reinforce that projects like this one you guys are starting should ALWAYS be reinforced to keep up, and not die out. Start creating milestones and issues on GitHub.

Link to comment
Share on other sites

Guest Mr Lange

Audio effects like reverb would be a big plus. Volume and pitch control are essential, so good to know it's got that. Make sure wav and ogg are supported formats as well.

As long as there's some method to modify palettes at runtime (and to do so via masks/overlays) then all is good. Try to include blend modes as well.

Everything else you listed there would be great.

 

Alright, I've made a couple animated examples of how object widgets could work. This would reduce redundant objects, such as the various monitors into just one monitor object where it's "type" property determines which one it is. By collapsing objects of the same species, so to speak, into single objects with properties, you can greatly reduce the amount of objects the user has to sift through in menus, and make their creation and management more intuitive with widgets. A right click menu for objects to skip straight to each option for type properties would be a valuable addition as well.

 

The monitor would be one object, with a widget for it's "type" property that determines which powerup it is.

Owv2E5R.gif

 

The variety of spring objects can be collapsed into a single object, and this would have three properties, all manageable with widgets, that determines the type, direction, and strength.

RXrtv8l.gif

Edited by Mr Lange
  • Like 2
Link to comment
Share on other sites

Mr. Lange, I must hide the text below:

COOL WIDGET!

But instead of the monitor type red icon, just have a combo box near it.

You can rotate the spring using curved arrows... and double klix 2 change spring's color. The color will give default power.

Good idea to make the parameter power to the spring.

Moving platforms... Change their arrow range & initial direction.

I'll add flip & mirror & visibility icons.

 

Of course, objects 'll have parameters, collapsed into single type. (like rom hacks).

 

Sound: I may use DirectSound and NAudio system (supports wav, mp3), of course i will find ogg decompression libraries,

and also WMA support.

I would like to enable inserting movies into your fangames. (like Sonic 3D Blast and Sonic CD).

 

Meanwhile, the reply to @luksamuk will not be in any spoiler.

Luksamuk, I will use Open GL. It supports 3D rendering.

Fortunately, my video card supports OpenGL (I think also 2.0)!

DX11 is only for Windows 8, if you know.

 

@Mr. Lange, you will enter the credits due to your large help to me.

Edited by Stardust Gear
Link to comment
Share on other sites

@Stardust Gear Well technically speaking, and this is getting to the nitty-gritty, you're wrong, DX 11 is compatible with Windows 7. DX 11.1 is compatible with both Windows 7 SP1, Windows 8, and Windows RT, while DX 11.2 is only compatible with Windows 8.1 and Windows RT. OpenGL would be the ideal API to go with as luksamuk said, it's cross platform. Hell, if you wanted you, could end up creating this in both APIs if you were so inclined to.

I do like the idea of this project. c: And gosh, I wish I could help, but I don't know a thing about C#...yet...

C# is one of the languages I would love to learn...along with C, C+, C++, Assembly, etc...I do know a moderate amount of the some basic Java code, and a little bit of Python but it's a bit rust, although I can still speak it if it's necessary to get the point across.

Link to comment
Share on other sites

I recently started working on the SFGDK.

Let's see the workspace prototype (in spoiler, due to the giant resolution):

nfp2eq.jpg

 

@LiBiKWIM, I have ancient computer with Windows XP SP3 with old, integrated VIA/S3G graphics card.

(Although, the performance is very high).

C# is much easier than c++.

Go to this link: 

http://www.c-sharpcorner.com/UploadFile/anandnarayanswamy/CSTutorial1AN11282005015140AM/CSTutorial1AN.aspx

(I hope the link is not broken in you computer)

I will use OpenGL and not DX. I believe it is supported in many devices and graphics cards.

 

Note: Does anyone has a catchy username, like Mr. Lange, SuperBliz, Felik, Stardust Gear?

Edited by Stardust Gear
  • Like 1
Link to comment
Share on other sites

Some things I need for SFGDK:

  • I need a logo to my program. The best logo will be in the program, and its artist will enter the credits.
  • I need also a good icon to the program.
  • I need a good OpenGL game engine, not necessary sonic. (optional)
  • I need suggestions for the application structure (the prototype with the treeview is not official).
Link to comment
Share on other sites

@Stardust Gear, That's all gravey, being in the IT field I'm used to seeing older computers. (I've had to resurrect on a '98 machine a few months back) If you're curious about my specs; look at the spoiler.

I got a stock Gateway DX Desktop for 18th birthday coming up on a year and a half ago, stock it had

-Windows 8 x64

-Intel i7-3770 CPU @3.40GHZ

-onboard Intel HD Graphics

-6GB of DDR3 RAM

-1x 1TB HDD

and then I upgraded it:

-Windows 8.1 x64

-same processor

-NVIDIA Geforce GT 630 w/ 4GB of DDR3 RAM

-22 GB of DDR3 RAM

-1x 1TB HDD & 1x 500GB HDD

Also that link is not broken, I'll look into it c: Thanks!

Edited by LiBi (JoeyD)
Link to comment
Share on other sites

My Full Specs:

-Windows XP SP3 32-bit

- Intel Pentium 4, 2.66 Green Hill zone (GHz ;) )

- VIA/S3G Unichrome Pro IGP (64MB video memory)

- 1GB Ram

- Motherboard: VIA P4M800 Pro

- DirectX 9.0c without pixel shader.

- Hard Disk Drives: C: 149GB IDE + D: 74GB IDE

 

I found my specs in Everest Home Edition.

Should I buy a new computer?

Link to comment
Share on other sites

×
×
  • Create New...