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

---== Sonic Engine To End All Sonic Engines ==---


saxman

Recommended Posts

Today marks 3 months since I started working on my secret project. I have kept it a secret for a long time now, but I am reveiling details of what I've been doing.

http://dgrove.blogspot.com/ -- I have written an article about it there (March 15).

Basically, this engine will be programmable by programmers, and designable by non-programmers. It's an engine for EVERYONE. All written in C and will emulate the original engine 100% perfectly.

engn000.png

dump1.gif

dump2.gif

FURTHER PROOF

For the skeptics, here's a screenshot of the project being worked on, showing code and many files associated with the project -- http://www.comprosoftware.com/saxman/prosrc.png

IMPORTANT UPDATE

Links fixed. You can now view the FAQ and screenshots at these blog locations:

FAQ - http://dgrove.blogspot.com/2006/05/prosonic-faq-back-up.html

All screen shots - http://dgrove.blogspot.com/2006/05/prosonic-screen-shots-are-back.html

  • Like 2
Link to comment
Share on other sites

Hope nobody minds a double post in this particular case... I'd like to keep the last update in this remake of the topic:

Since the beginning, level data have been split into several files. Today I made an archive format that links all these files together. I call it PZF (ProSonic Zone Format). It allows 8 acts and 4 time zones to be stored. It allows you to give a level '2' different names.

You can choose which acts get which of the names, and you can specify what act number to give to each act (like I can call the real act 4, act "1" if I want.... or I can simply not give it an act number). I decided to support two names because of what has been done in some other Sonic games... Sonic 1 most notably comes to mind (Labyrinth act 4 is titled "Scrap Brain 3"). So for backwards compatibility, my zone format supports 2 different names.

It also allows you to specific which music to play for each individual act, starting locations for 8 different characters, and allows you to have multiple palette, art, mappings, and other files. You can select which files to use for which acts (allowing you to reuse data for multiple acts). It's so flexible that you could litterally make multiple zones out of a single zone. ProSonic will support up to 256 different PZF files to be associated with a game.

The challenge now is to make a program that can archive the data files and such, and configure all the parameters in a PZF file. It's not going to be easy >_<

Link to comment
Share on other sites

When it's not incredibly buggy and actually playable as you would expect a game to be played, then I'll consider 'possibly' releasing a demo (though I'd prefer to just finish it completely before releasing). Right now, you touch a wall and you immediately climb it. You can walk off to the left of the screen where you fall forever and ever and get the strange "hall-of-mirrors" effect. There's no end to the levels -- you can keep moving right to infinity. The player doesn't stick to the floor going downhill.

There are lots of issues. It isn't because I don't have it figured out, it's getting each algorithm to talk to all the other algorithms without conflicts. For example, I have code that makes Sonic correctly walk on floors, and I have code that correctly makes him collide with walls. I can have one working... when I try to combine them, it breaks part of it. I have constantly put the engine in a positive light because for the most part, a lot of good things are going on with it. But I'm trying to be realistic -- as much as it has to offer engine-wise, it's not ready for gaming yet. It's getting there, but it's too early. But when it gets finished or near finished, it'll definitely be ready for gaming I can promise you.

As for replicating the original Sonic engine 100% perfect, it'll happen. It already replicates many of the original functions perfectly down to the tiniest fragments. The speed and acceleration and brake speeds are all dead-on. When the jump code was working, he jumped at the perfect speed and height, and even had a 13-frame period where he would continue to go higher as long as the button was held. The speed-to-slope calculations are perfect without any flaws.

I realize people really want to see it working in action, but I simply don't want to let anyone down -- all of you are expecting it to be game-quality. With these kinds of things, you get one real strong chance to grab people's attention and make them believe... once you let them down, they're less-willing to come back for a second time. In other words, while I would boost my credibility of having a real engine that works in all the ways I've said it does, I know what people are 'really' looking for, and it's not there yet. It'll be released when it's good enough to be released.

Oh and a quick update -- I started programming the archiving tool. I'm doing it in Visual Basic because that makes it really easy to get a working model, especially with something as complex as the PZF format. I may write a C version later down the road that could be portable, but right now VB will do what I need it to do.

The only problem is... my VB skills are a little flakey since it's been a while since I last worked in it >_< I've run into a number of problems in it, and the latest one is enabling the form after disabling it. See, I have the main form where you can get to stuff. I have another form that pops up when you go to rename one of the files. When this pops up, the main form is disabled so that the user can't do something really stupid. On the closing event, the rename form is supposed to enable the main form so it can be used again... only it doesn't!! I have tried multiple ways, and I can't get it to enable it again. Unless anyone here might be able to help me solve this problem, it looks like I'm headed back to the VB forums to ask more questions.

Link to comment
Share on other sites

No, it will definitely be backwards compatible with the older games. It will 'not' be an emulator, it will simply be compatible with the resources found in the games (e.g. art, level, and other data). That was what I wanted to do with it since the day I started it. Who cares what games other people make? You don't have to make Sonic 3 Xtreme -- make a game that's original and your own from it. It's not like it'll "only" be able to do what the original games did. It'll be open source with tons of extensible features to give you flexibility the original games were never able to give you. It'll be more powerful than anything the Sega Genesis could handle.

You knew this when I first made my topic, everyone did. Nobody had a problem with it, so I don't expect complaints now. If anyone does, then it'll just be a disagreement, but it will never change my plans.

Link to comment
Share on other sites

All C++ does is add some object oriented stuff. Not everything in the world HAS to be object oriented, like Java wants you to believe =P

YES IT DOES!!!! *foaming at mouth*

Now, when you're done, do you consider making it open source?

Link to comment
Share on other sites

Rather to use C or C++ is really opinion that is different for anyone. What it all comes down to is "what do you like better?". I like C... I like C++ is pointless because I never use any of the extra stuff involved in it. Of course technically you could say I use C because I use the line-comments which weren't part of the original ANSI C standard and were first seen in C++... but that's as far as I go. I can do all the same stuff in C++ using the C way of doing things.

I relate this very much to playing saxophone... some people like to play a note using one fingering, but then someone else comes along and says "you should play it using the other fingering"... the way I see it is if I can play that note my way and it works and I sound just as good (or better) as the other method, then I should continue doing it the way I'm most comfortable doing it.

So I'm more comfortable in C and can program ProSonic just fine using it. There's no right or wrong way or right/wrong programming language to use for anything. It's all preference, and I prefer C. C++ doesn't make my programs any better or any easier to write.

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...