Jump to content
ElCodes

Introducing UR-RPG - And All-In-One asset for Unity

Recommended Posts

I moved over from RPG Maker to Unity a few years back, but, I've always missed the simplicity of RPG Maker and always wanted an all-in-one system that would turn Unity into something like RPG Maker. There are plenty of RPG makers for Unity, for sure, but none that would handle everything. 

I decided to use my time in lockdown productivity and worked on a prototype for a game idea I have. I wanted to make some custom Unity windows to help speed things up. I created a side project and experimented. Before long, I had a working database. I also needed a map editor, so I created that next and after I had those two tools, I realized I basically had the RPG Maker-like system I always wanted. I just needed something to handle Events. So... I created my own visual scripting tool. However, since going back to work I've had very little time to work on the project.

AllWindows.thumb.PNG.e47d5c3dff3669152f3f07f66de8d3f9.PNG

 

Details and Features:

Spoiler

 

As you can see from the screenshots, I've took RPG Maker and I'm using that as a starting point for functionality, but the finished project will probably end up looking a little different. I've had people question the legality of that, but all the code is 100% my own so as long as I don't use any of the official assets there's no problem with legality. Adobe doesn't sue GIMP because it's similar to Photoshop. Besides, I'm adding some of my own improvements to the workflow, and adding some quality of life improvements too to allow for better flexibility. I'm actually hoping to create a better tool...

Database

DatabaseExample-B.thumb.PNG.587414f85fe85687e483b29af039cbe3.PNG

Database is pretty straight forward. This is how you edit the data for the game same as RPG Maker. Similar to RPG Maker, it exports this data to JSON, then when needed, the game reads the JSON to create playable characters, items and so on. Initially, I wanted to make it compatible with RPG Maker JSON to make porting projects easier, however in all honesty, some systems have been easier to just create my own solutions for, rather than reverse engineer the RPG Maker JSON and figuring out what they're doing with it. Especially with events/visual scripting. This means, sadly, JSON isn't compatible with RPG Maker.

Only the playable character tab is complete and right now I'm just editing the JSON directly... but the core functionality is all there. It can save and load the data and you can edit but the only completed tab is the playable character tab. All that needs to be done to finish this off however is just designing the remaining tabs and any additional pop up windows for selecting graphics and stuff.

Map Editing

MapEditorExample.thumb.PNG.7236d2e4fe31f653b4123345b01d661e.PNG

Features already in place

  • Drawing tools (Single, square, circle, fill)
  • Layers
  • Autotiles
  • Zoom and move map

You can set a global setting for the size of the tilesets in a project. All tilesets need to be uniform, but if you set 32x32 to be the global setting you could use XP or VX tilesets and if you set it to 48x48 you could use MV and MZ tilesets. Or... if you want you can use a competently unique size such as 64x64, that's fine too.

I'm hoping, although I need to do testing on this, that I'll be able to add unlimited map sizes for people to create open world games. I'm not actually sure how it works in RPG Maker, but I know with other game makers they tend to load the entire map into memory. To negate this, UR-RPG uses a 2D form of occlusion culling. Thats a fancy way of saying it only draws what the camera can see, and redraws the map as you move around. I'm hoping this will help with the goal of unlimited map sizes.

Tilesets will also be handled differently. This needs to be coded, but the plan is to use 'Groups' for tilesets. Every individual tileset sheet the game needs will be set in the database, as well as collision. Then similar to how RPG has it's A, B, C, D sets, a group will just be a collection of different individual tileset sheets but what I want to do differently is how they are set. You create a 'group' of tile sets and then select from the individual sheets that the 'Group' will us. This means you can use multiple autotile sheets per group as well as mix and match building sheets, decoration sheets and terrain sheets. I'm also planning to have the map editor be able to draw from any 'group' that was set in the database... again to help create open worlds but still keep things organised.

 

Scripting

VisualEventEditor.thumb.PNG.16954323944fa3f98a176b7cc0973a38.PNG

Features already in place

  • Create Global or Local scripts
  • Create, save and load scripts for editing
  • Around 60-70% of nodes are done
  • Set conditions for scripts to be run
  • Set a trigger for script to be run

Scripting is where UR-RPG completely deviates from the RPG Maker formula. As you can see, this is done with visual scripts. With visual scripts you have a start node, then add nodes for common tasks such as show message, give money, move character and so on. If you think of the options you have while creating an 'Event' in RPG Maker, this is what you're doing with Visual Scripting and you'll have all the same kinds of options. This isn't based on the new Unity Bolt feature, I've built this from the ground up specifically for UR-RPG.

As for post-release community scripting, I've given this a lot of thought. Due to the nature of just C# in general, I shouldn't have to worry much about scripters who want to code in their own functionality. They should be able to just use polymorphism to override the default functionality. I'm planning on compiling the code for the database, map editor and script editor into a DLL file. This means the core functionality can be protected. However, I'm going to document as I go and will probably put a Wiki or something up on my website so experienced coders know how to customize and extend functionality. Exposed scripts for the battle system, title and stuff won't be compiled, so for things like a custom battle system, it should just be a matter of replacing the battle scene C# script.

 

Publishing

As it's a Unity asset... this includes an added benefit not found in RPG Maker. The ability to export to pretty much everything. PC, Linux, XBox, PlayStation, Nintendo Switch, Android, iOS... even a standard browser using HTML5 and OpenGL.

 

Still a lot of work needs to be done. I need to finish off the 3 core tools then need to code the runtime engine so it actually uses the data to create a game. I'm thinking of getting a basic runtime engine up and running so I can do a complete start-to-finish demo, or I may just finish off the tools and demo them one by one as development continues.

To help speed up development I've created a Kickstarter to help fund a year of full-time development, which should be all I need. However so far it's not gone very well and I'm not hopeful that it's going to get successfully funded so currently working on a Plan B roadmap. If anyone could help spread worth of mouth by posting about the project on any other forums, social media or Discords they're on that would be a mahoosive help. Personally, I'm kind of out of the loop with the RPG Maker community and so far have only posted here. I tried to join some Facebook groups and got in trouble for self promotion...

I've tried spending money on advertising, but that hasn't reaped the attention I wanted. I've had 250,000 people look at my website with no one going through to the Kickstarter page... The marketing plan I had has kind of failed so I need to target people that would specifically be interested in this project.

Regardless of whether or not I can get the Kickstarter funded, I do plan to continue development but it's just going to take much... much longer as I work it around my full time job. If I can gain enough interest, I will start a Discord server and will be adding a developer blog to the website at some point.

If anyone has any questions on UR-RPG or the project in general feel free to DM me here, or on Twitter.

Also, for more info check out my website: https://primepixelgames.com/ultimate-retro-rpg/

 

  • Like 3

Share this post


Link to post
Share on other sites
12 hours ago, ElCodes said:

Thank you :)

Dé rìen!
 

  • Like 1

Share this post


Link to post
Share on other sites

Quick Update

So, I booked the week off work to get some bits done....all of which I abandoned so I could spend the last 3 days working on UR-RPG. On Monday, only the Actor tab of the database was complete. Now all I have left to design are the Troop, Tileset and Animation tabs! I've also updated it to make sure it works with the latest Unity release.

This morning, I started work on the Troop tab with only a slight idea of how I was going to get it working, but not actually knowing if it was going to be possible to do in a custom Unity Editor Window....

9 hours later, it was basically fully functional! All that remains is adding the Visual Script Editor, which I already have the code for, just need to refactor a bit so I can nest it into other windows... but it's 11pm, I've been up since 9am working on this. I need some down time.

Here's the work so far. It's a little rough around the edges and needs optimization, but the priority was 'just get it to work'. It also played up a little because my computer is arse, and I had Adobe Audition, OBS, Unity, Visual Studio, RPG Maker MV and about 50+ Brave tabs open..... but here it is 😃

  • Like 1

Share this post


Link to post
Share on other sites

Good news update:

I want to keep this short so I'll save you the details. TLDR version: Started week off with a broken project (Unity's fault), and a broken spirit. The last back up I had was before I had recorded the previous video so that back up didn't have the Mob/Troop tab. On top of that, I only had Wednesday and Thursday off to focus on the project BUT... during those two days I've been able to:

  • Rebuild the entire project from a new, non-broken, Unity project.
  • Refactor the Visual Editor script so it no longer requires it's own separate window and created the Global Event tab.
  • Finish off the Mob/Troop window, including optimizing it so it no longer lags and added it's own Visual Script area for creating up to 20 battle events.
  • Created the Types tab (Which I forgot about...).
  • ALMOST finished the Tileset editing tab. Just need to code in the ability to set collision, counter, damage floor etc. Hoping to get that done this weekend at some point...

Please pray to whatever deity you choose that we have no more issues 😛

GlobalEventExample.PNG

MobWindow.PNG

TilesetExample.PNG

TypesExample.PNG

  • Like 2

Share this post


Link to post
Share on other sites

Been a while since I posted an update but I've not been slacking, trust me.

The Database is now fully functional! All tabs have been completed, including Animation. I then started a new Map Editor... and then rewrote the code... twice. However, with the exception of the Add Event window, the Map Editor is now complete. If anyone wants to see actual video of what I have so far in action, let me know.

This means, next week I'll be starting the runtime engine. This is the part that takes all the data made with the UR-RPG tools and actually builds a playable game from it when you hit the 'Play' button in Unity. I'll be starting with the basic Scene manager and creating some basic scenes. Mainly the Map scene as I will also be making the Map Manager and Player Controller. From there it will simply be a matter of creating all the different scenes (Map, Window, Menu, Shop, Title, Game Over etc) and creating the Event system. The Event system is pretty straight forward stuff....buuutttt... probably going to take the most time to implement. 

Now I really don't want to jinx things since development has gone so well so far, but, if things do continue to progress at this pace I could have this out within a couple of months. (Originally I thought it would take a year). So much so I've actually begun thinking about release.

Once I have everything functioning, I'm going to release a Beta version to Patron. This version is probably going to be buggy, but it'll be considered a pre-release release. Hopefully I will be able to get some user feedback and real world application feedback which I could perhaps work in while I clean up the code for an actual release.

I'm also just looking for testers in general so if you want to have an early go with Ultimate Retro RPG, send me a DM and we can talk :)

 

  • Like 3

Share this post


Link to post
Share on other sites

Just wanted to share a demo of the finished animated autotiles.

Just like RPG Maker, all you have to do is drop the sprite sheets into the right folder. UR-RPG will then do all the work to turn the sprite sheets into usable Unity RuleTiles. Setting these up by hand would take around 15 or even 30 minutes per tile, but UR-RPG can create over 200 within a second.

Setting up your tilesets is the exact same workflow as RPG Maker. Just create the tileset and set each tiles data in the database. I've created a quick 1 min video example of animated autotiles working, but it's too large for this forum, so I posted it to Twitter. (Also please let me know if it's blurry. It's HD when I upload it... I don't whats going on with that).

TileSetExampleNEW.thumb.PNG.d2dce8733807e894cb46e0a953633fb1.PNG

Edited by ElCodes
  • Like 2

Share this post


Link to post
Share on other sites
On 1/23/2022 at 9:27 PM, ElCodes said:

Just wanted to share a demo of the finished animated autotiles.

Just like RPG Maker, all you have to do is drop the sprite sheets into the right folder. UR-RPG will then do all the work to turn the sprite sheets into usable Unity RuleTiles. Setting these up by hand would take around 15 or even 30 minutes per tile, but UR-RPG can create over 200 within a second.

Setting up your tilesets is the exact same workflow as RPG Maker. Just create the tileset and set each tiles data in the database. I've created a quick 1 min video example of animated autotiles working, but it's too large for this forum, so I posted it to Twitter. (Also please let me know if it's blurry. It's HD when I upload it... I don't whats going on with that).

TileSetExampleNEW.thumb.PNG.d2dce8733807e894cb46e0a953633fb1.PNG

By the way, I just remembered the way how RPG Maker 2003 used to configure these tiles, it used a square, so you would be able to pass "under" the wall at the first tile, a 3D style like.
Is that possible on UR-RPG? If not, maybe you should consider it's an option that almost is not found in the newest RPGs and I think is really needed when creating tiles.

  • Like 1

Share this post


Link to post
Share on other sites
11 hours ago, Natsuki-9 said:

By the way, I just remembered the way how RPG Maker 2003 used to configure these tiles, it used a square, so you would be able to pass "under" the wall at the first tile, a 3D style like.
Is that possible on UR-RPG? If not, maybe you should consider it's an option that almost is not found in the newest RPGs and I think is really needed when creating tiles.

Your timing is actually impeccable. That is exactly what I'm starting work on tomorrow. The way UR-RPG works (Or will work very soon) is the cross is unpassable, the circle is pass over and star is pass under. I'm not sure if that's actually how RPG Maker does it... I've been using MV as my reference and I thought that's what the Star did... If I'm wrong on that, please let me know. I might need to have another play around with it to remind myself how it works.

  • Like 2

Share this post


Link to post
Share on other sites

RUNTIME UPDATE:

No screenshots to share this week, because honestly... there's isn't a real lot to show off. Everything I have done this week has been behind the scene stuff, which doesn't make for very interesting presentation material...

Because I'm now working on the Runtime code, I'm having to be a lot more careful with how I write my code. I want this code to be as Scripter Friendly as possible and offer as much customability as I can but still keep control over how the game logic is handled. I'll go into more detail on that in a bit, but right now my point is it's taking slightly longer to write this code, because I'm having to put a lot of consideration into, 'Could someone else easily use this?'. On top of that, as already mentioned, a lot of this stuff is background grunt work that's honestly... kinda boring.

I've rewritten this paragraph 3 times now, and I keep failing at making it sound interesting. So here's just a list of stuff I did since last update:

  • Today I finished how UR-RPG handles logic flow, planning out a system that someone could easily later plug their own functionality in to. It will also remember the last active scene, so say you want to place something over the Map Scene, you just stack them up and when closed, whatever is underneath becomes active again.
  • I've created a custom animation system, which if a scripter wants to use to play their own animation, all they have to do is set it's frames and say if it's looped or not.
  • I've created an Input Manager, that can be fully customized. The Input Manager monitors input, and will fire off different events depending on if a button was tapped or held, meaning scripters just have to subscribe to the button inputs they are interested in (i.e. just up and down, confirm and cancel). It will also soon detect double taps and Street-Fighter motions... just for funzies. Mainly because I'm pretty sure I could easily add a double tap and I would like to tackle the Street Fighter inputs...
  • I've created the audio manager to handle all audio. Nothing fancy here, give it a path to an audio file and it'll play it.
  • A simple Transition System. For scripters, you get a reference to the Transition GameObject, and then say what transition you want. I.E. transition.FadeFromBlack(). Scripters can  also add their own transitions.
  • A Character Controller. This one was a lot fun. Character Controllers will be used by Events to give the Event a sprite. They can be as simple as a single animation on loop, or a chest with it's open animation. If it's an NPC you pick a character and it automatically creates the walk animations. There's a lot more work to be done here, but right now it has the functionality to store 1-4 animations, turn in 4 directions and move in 4 directions. It can also take a array of numbers so 2,3,0,0,1. Each number corresponds to a direction 0 = down, 1 = left and so on. Obviously this is more for when you want to program a movement pattern for an NPC, but I do plan on also adding A* path finding and random roaming. For now, and I know it's stupid and not really impressive, but I got such a kick out of just having 2 NPCs on the screen doing my bidding and repeating the same steps again and again!
  • A Player Controller. This one wasn't fun. I took the Character Controller,  added a bool (true/false value) to state if it's playable, and said if it is playable, well then when you get this input, do this function. Not very exciting, but hey, easy PlayerController.
  • Also, this isn't a new feature, but I have spent a considerable amount of time this week fixing a bug where the map loads blank tiles when coming out of play mode... meaning the user had to restart the Map Editor to be able to use it again. On top of that... Because the map is blank, and the map editor saves the current map on close... so it always overrides whatever the first map is into all blank tiles... but whatever.. it's fixed now.

I don't know if this is good progress or not, but it sure felt like a lot of darn work... I just have nothing to show for it! lol! Hopefully though can see the thought and future planning I'm putting into this side of the project... so bare with me on the updates for a while.

 

Tomorrow I'm starting the MapManager. This will handle what map should currently be displayed while also handling collision detection and anything like that. A lot of this code I already have in the Editor side of things, I just need to add a few extra functions... so I'm hoping this will only take a day. Then at the weekend, I want to create the Camera Controller. Once I have these two final pieces in place, UR-RPG will be able to boot into a Boot Scene, which will take you to a Title Screen, then to a Map Scene. I'll be able to load up a map, and walk around with proper layering and collision! At this point I'll film a video so you guys can actually see all this in action.

It's kinda funny to think I've spent months working on this. Nearly half a year... I've wrote over 25k lines of code so far and I'm getting excited because I'm about to release a demo where... ALL YOU DO IS BLOODY WALK AROUND! lol. But hey, we're getting there slowly...

 

ROADMAP

OK, just in case I don't get a chance to post for a while because I'm eyeball deep in the IDE, once I've done the little demo, I'm then going to start coding out the individual scenes. UR-RPG uses a State Machine to control logic flow, so people can create thire own scenes and add that functionality to game. But all the standard scenes will also be exposed scripts that you can customize. The Window scene, the Battle Scene, The Menu Scene and so on. Keeping in mind, I want make this code easy for others to come in and further customize themselves. For this reason, it may take a few weeks to create all the helper functions I'm going to need create that will make scripting a scene easier. Such as displaying and layering images and text, adding selection lists and things like that.
Using these helper functions, I'll create the Scene scripts and start putting together the default menu, shops and battle systems.

By the end of the month, I want to be looking at starting to wire up the Visual Event Editor system. I'll start with the first option which is simply ShowMessage. Once that's working it'll be a matter just coding what to do at runtime for all the other nodes in the Event Editor. (Think of the options you have in RPG Maker when creating an event. I have to code every single one of those options...)
 

Still, if I can get to the end of this month with just the Show Message event working, all the others will be super easy to add once the functionality is there.. and once all that has been wired up... I'll be thinking about the Beta release :D

Finally, I'm going to be creating a Discord server soon, and focusing most of my updates there. I'll post an invite link here once I get round to it.

  • Like 1

Share this post


Link to post
Share on other sites
15 hours ago, Natsuki-9 said:

By the way, I just remembered the way how RPG Maker 2003 used to configure these tiles, it used a square, so you would be able to pass "under" the wall at the first tile, a 3D style like.
Is that possible on UR-RPG? If not, maybe you should consider it's an option that almost is not found in the newest RPGs and I think is really needed when creating tiles.

RM XP did this as well (the square for autotiles). The Star is for passing under, or as the editor calls it, 'above characters'. Pro Tip: One can set Star Passability and then set the four way passability to off and still have that tile as 'above characters' but otherwise impassable. Why do this? Well, any reason, depends on the tile graphic, or dev reasoning.

 

Share this post


Link to post
Share on other sites
13 hours ago, PhoenixSoul said:

Pro Tip: One can set Star Passability and then set the four way passability to off and still have that tile as 'above characters' but otherwise impassable. Why do this? Well, any reason, depends on the tile graphic, or dev reasoning.

I can understand that sometimes they are just, unable to add such a feature, for example, RPG Maker VX Ace doesn't have it, but also, I only can make this Pro tip with the B, C, D or E tiles. Wich actually I find kind of bothersome because I feel it like a waste of space; and having to create new non-autotiles and draw each Up, Left corner and Right corner tile everytime I want to use them (not to mention that if I'm going to make wall tiles like that, then the most of A tiles would be unecessary, A tiles would just be floor, water and holes tiles and no walls).
 

It was easier from my point of view how RPG Maker 2003 actually allowed you to create these autotiles without thinking too much about how to make an OVER tile that doesn't allow the player to move further because of a wall in front of them. That's why I find this kind of interisting thing to add if possible.

  • Like 2

Share this post


Link to post
Share on other sites

 

17 minutes ago, Natsuki-9 said:

I can understand that sometimes they are just, unable to add such a feature, for example, RPG Maker VX Ace doesn't have it, but also, I only can make this Pro tip with the B, C, D or E tiles. Wich actually I find kind of bothersome because I feel it like a waste of space; and having to create new non-autotiles and draw each Up, Left corner and Right corner tile everytime I want to use them (not to mention that if I'm going to make wall tiles like that, then the most of A tiles would be unecessary, A tiles would just be floor, water and holes tiles and no walls).
 

It was easier from my point of view how RPG Maker 2003 actually allowed you to create these autotiles without thinking too much about how to make an OVER tile that doesn't allow the player to move further because of a wall in front of them. That's why I find this kind of interisting thing to add if possible.

 

Sorry mate, think I misunderstood you on this. The first RPG Maker I used was XP and never used 2003... but I do remember the square... Just couldn't remember what it did. I've done a bit of research and I think you mean ceiling tiles? Currently, I haven't got anything in place for ceiling tiles. I might be able to add them though... I'd just need to see a video or something of them in action to figure out how they work.

  • Like 2

Share this post


Link to post
Share on other sites
On 2/3/2022 at 4:10 PM, ElCodes said:

The first RPG Maker I used was XP and never used 2003... but I do remember the square... Just couldn't remember what it did. I've done a bit of research and I think you mean ceiling tiles? Currently, I haven't got anything in place for ceiling tiles. I might be able to add them though... I'd just need to see a video or something of them in action to figure out how they work.

A lot of older JRPG's have walls where the sprites can be hidden by these tiles. Final Fantasy V even has hidden passageways embedded in them (and a job skill related to revealing them), so there's plenty of reference material showing ceiling/high wall/passage wall tiles in action. A DuckDuckGo search query should be sufficient. (the server is misbehaving and thus nothing is working properly so only one letter of that is a hyperlink)

Share this post


Link to post
Share on other sites

In preparation for next weeks Runtime demo, I created a rough edit for an into.

Check it out here:

 

  • Haha 2

Share this post


Link to post
Share on other sites

Two Thousand Twenty Two version of the Rick Roll. lmfao

  • Like 1

Share this post


Link to post
Share on other sites

I feel so identified with this, EveryTimeIOpenMyGameAndFindOutThatTheCoolThingIJustAddedCrashesMyGameOrDoesntWorkAsExpected...

Spoiler

Specially when I call my brother to show him the amaizing thig I just created.
image.png.63afb03043f7edca89dfa3b8800a30de.png

 

  • Haha 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×
Top ArrowTop Arrow Highlighted