The Mac build works fine, thanks for providing it. Despite all of the negative comments, although it wasn't entirely accurate I thought it still felt fine. Sure, there were a few annoying things, but I thought the camera rotating with gravity was a neat idea.
First off this is a GREAT idea. A 2D Sonic Engine done on Unity seems like a no brainier. While originally developed to make 3D games, Unity 2D has matured a lot since it was first implemented. Unity it's starting to become a standard for people with more programming backgrounds who want to work with a strong typed OOP language instead of script hacks or obfuscated code done by GUI but don't want to build an engine from scratch. But right of the bat I can tell that if anyone is looking at this for a replacement to Sonic Worlds then look elsewhere this aint it. If instead you are looking to the future where you can use this as a starting point to create something bigger on Unity then maybe there's some promise here. Anyway to the meats a potatoes of the engine itself. Sonic controls for the most part as he should. While this isn't a 1:1 with the classics I felt it was competent enough that it could do the job. While I do feel it's important to make sure the physics are as close as possible to the classics but this is a WIP and I'm sure it can be fixed. As for the test level, I agree with everyone that there needs to be a uniform tile system in place. From what I gathered it seems that you mixed and match assets from different stages. That is not professional and while this is not a professional project it's important to practice said things because one day you might want to do so. The tile set doesnt have to be pretty but it should be uniform so you can easily test all gameplay elements without different kinds of art work distract from the task at hand. Another thing I should add is that the project should have a more formal license going forward. From what I gathered in your first post it seems you want to make this an Open Source project that allows anyone to use it as they see fit as long as they give you credit. This sounds to me similar to an MIT/BSD style license so try later looking into that. And I agree that allowing the engine to be used for commercial ventures is not a bad Idea because personally if I want to get involved in any project I always looking for a way to monetize it and allowing people or yourself for that matter to make a commercial product is good thinking. But you need to replace all of SEGA IP if you wish to do that. I suggest replacing all of SEGA artwork with original artwork, which goes back to my uniform tile set suggestion. Anyway don't get disillusioned and keep working at this, even if this doesnt pan out you will learn a lot from this and trust me when I say this you will learn a lot working on this.
Neat project. I had thought about starting my own project in Unity, and then I found the video on Youtube. I have to admit, I actually really like the structure so far. Having things separated into individual Moves is an approach I don't think I would have come up with myself - gives a nice "plugin" like environment for adding things. I've forked the repo and have been toying around with adding Rush style move classes (boost, homing, etc). As far as physics, it seems to control almost exactly as I would expect. One thing I did encounter was with those big sliding blocks - for some reason, sometimes I cannot seem to jump while pushing against the block as long as the block is pushing Sonic backwards. I've tried to reproduce it in other situations but it thus far only seems to affect those blocks - I'm not sure if this has to do with the fact that the blocks move or what, I haven't looked at that code too closely yet. Now, as for the extensions I'm adding, I've hit a few sticking points. I'd like to keep all of my modifications completely separate, touching as little code as possible. I've gotten Boost mostly working - at the moment holding S causes Sonic to boost forward and roll (like a sustained spindash) and decrements a boost meter. Homing should also be pretty simple, looks like I can use the DoubleJump move for reference. On the one hand, I'd like to know what layer boost should be on - right now, I've put it on None but I wonder if it should be Roll instead (eventually I'll be removing the spin dash move from the character prefab once Boost works)? On the other hand, I'd like to increase the boost meter when a ring is collected, or when an enemy is destroyed. There doesn't appear to be any good way for an event to listen for these situations. The RingsController has an OnValueChange, but even then I don't see a way to know that the value has increased rather than decreased. I haven't checked enemies yet, I'll work on rings first. Another point is making HUD changes. I'd like to display boost on the HUD, but so far it seems like the level manager contains the score, lives, and rings counters and as far as I can tell I would have to modify that class in order to make it aware of boost - which is exactly what I would like to avoid (modifying core classes). This, I wholly disagree with. Keeping level art consistent is the *last* thing I would worry about, definitely after getting the physics and gameplay elements working. And certainly, a "professional" project would actually be no different. Have you seen some of the prototype footage of Borderlands? It sheds some interesting light on the dev process these games take - random models and sounds (if even that) cobbled together just so that the devs can get things prototyped out and working. I'll link an article which contains some footage here, and I'll also quote something from it which bears repeating: "Games look like complete ass for 90% of their production". So, in short, if I were the OP I would definitely NOT worry about the level's appearance or layout. Get the physics and gameplay working. THEN worry about the other stuff. EDIT: Giving the UI thing some thought. One thought I might give a try is to implement some sort of model/view separation. Player data model's job is to basically consolidate all data necessary for the UI into one component, and then UI view's job is to take that data and display it on the UI. It may make it easier to extend the UI that way (someone would first create a custom data model subclass which exposes any custom values, and then create a custom UI view class which displays that data, without having to change any of the core code).
It seems to work fine on Linux except for one thing: http://I.imgur.com/tIkPdIG.png Sonic is a white blob. Most probably it is the open source graphics driver choking at the sprite shader. If you want I could try to help you make this work here too. Overall, good job. The physics are not very accurate but serviceable. Didn't see any egregious bugs. I would play something using this. As has already been said, if I were you I'd take some notes from the SPG and give it some nice spit-shine. Couldn't agree more. You could, however, rearrange the test level's layout to be more representative of how a real Sonic level is fleshed out, and make it more organic. It would help you get a better feeling of how it is going to play and help you gauge how the physics fit into the gameplay flow.
Ah, I think I've discovered something about why jumping doesn't always work while being pushed. I moved a test block to the beginning of the level (copied from later) and did some testing - I tried logging whether or not the jump move had clearance. Turns out, while being pushed backwards, HasClearance appears to be returning false. Maybe one of the sensors is detecting the block? I'll do some more digging and see if I can't come up with a fix for this myself. EDIT: Were there any edge cases in particular that having the HasClearance check solved? Because I can't seem to make it work properly, but removing it altogether completely solves the issue, and makes that particular section with all of those big sliding blocks a lot easier to navigate (much less "sticky").
I do think a finished product would have stripped out SEGA's IP. A plain tile set wouldn't be difficult to make, though if it means replacing everything I have to wonder where to find new character sprites, sounds, music, etc. I'd say to leave it on None or put in another layer enum for your move, which unfortunately is the only way to add new layers. As for OnValueChange and UI stuff, I'll see what I can do. Hope you don't mind the API changing around! It's brought over from the physics guide and prevents Sonic from jumping in tight spaces, but causes problems as it checks after moving platforms push into Sonic but before Sonic pushes himself out of them. I have a fix in the feature/better-physics branch that fixes it and other bugs if you want to merge, but be careful as I lumped in changes to the test zone.
I see no reason to take the time to replace all Sega assets. Obviously if someone plans on selling their game, they can do it themselves. Sonic Worlds comes with all sorts of Sega artwork.
Even a free thing like this still has a small chance of receiving a DMCA as long as it contains copyrighted assets. There could also be backlash against a released game if any of those assets made it into the build even if unused. Plus, if the OP ever wants to polish things up and produce a kit for the Asset Store (free or paid, either way) he(/she?) would absolutely be required to remove any and all copyrighted assets.
In the case of the Asset Store, obviously stuff would need to be replaced, but otherwise? Totally unnecessary. Think of the HUNDREDS of hacks and mods that use Sonic artwork. The chances of a DCMA for something like this are next to nil. Copyrighted assets have ended up in stuff before (Think about the leftover Nintendo assets in the PC version of Lost World) without consequence. Plus, if someone uses this for a commercial game, its THEIR responsibility to remove stuff.
Just a suggestion, but maybe you could add a 2 Player mode because that's something I feel that a lot of fan games are missing.
hey KOHCTPYKTOP I was trying to use your engine and I ended up running into trouble of trying to replace the character sprites with my own. or rather, im looking in the wrong area for where the animations load up the sprites. mind telling me where I can replace the sonic 3k sprites so I can use something different instead? I really like this whole engine so I want to try to make things with it. please and thank you Edit: Never mind I remember
I may be a bit late but this software will still be pretty handy for my purposes. Thanks for the heads up TC.
Hello! I've been working on a project in your engine. Don't worry, I will give credit to you for creating the engine and all other help you give me. Right now, I need to know how to have Sonic be able to run on 90-degree walls from a jump. I tried changing the max climb angle, yet Sonic still can't attach to the wall. Yet when he jumps on an angled ceiling (not 180-degree ones), he runs on them. I also need these actions to count as grounded so that Sonic will be able to wall jump. What's more is that I plan on adding some more moves, however, that is proven to be a difficult task. I have added some more moves, of which are unfinished. I could really use a template for new moves. Then I can figure it out from here. I really hate bothering you like this, but I am basically a noob when it comes to coding. I can't complete this project without your help. For now, it will be secret, but in time, you will see a new game. Thank you very much for your time! I applaud you for this engine! It works miracles in my absence of money and experience. I know plenty, but not enough. Just a fellow gamer, Jordan "Jordy" Duncan Note: In the coming weeks, I shall update you on how the project is doing.
All those assets absolutely have to go if he plans on allowing people to use it commercially or else he's begging for trouble. The Sonic assets can stay if this is strictly for non-commercial fangames that can't be sold.
Goes without saying, but its a bad idea to keep the name 'Sonic Realms' as is on github, if its planned for commercial use. Would need a rename in such case.
I'm confused how a newbie found this topic and decided its the best one to start a project on. The author hasn't updated it since 2016 and it still has so many issues that weren't resolved. For all intents and purposes, it's dead. You'd be better of using Sonic Worlds.
well, it's not all that bad, it has potential to do a lot of things actually. I'm enjoying it. dunno if anyone's interested but i started working on a cheatsheet/documentation of sorts if anyone's really trying to use this engine.