Jump to content
MaterialBlade

Seven Star Saga

Recommended Posts

Note: Will edit this very soon, 2:30 am here.

Y7cAmgZ.png?1

Seven Star Saga : Prototype

[spoiler=Introduction]

[table]

vAI33ch.pngHello friends. Seven Star Saga is a WIP mod for rAthena that intends to turn the game into the SNES title Super Mario RPG: Legend of the Seven Stars (SMRPG). The thought of doing a SMRPG mod for Ragnarok was an idea I had going back to around 2008. I didn’t (and probably still don’t) have the time to create the mod, but it always seemed like it would be a fun project to work on. I work on it very sporadically but I feel that I have enough content now to warrant showing a little bit. [/table]

Synopsis

The evil Smithy’s ship, Exor, rips through the Star Road on it’s way to invading Mario’s world. The Higher Authority have decided to send Star Warriors to fight Smithy and his evil gang. But before the Star Warriors leave, they must choose a form Mario's world to use in their travels.

What is Seven Star Saga?

As mentioned in the introduction, Seven Star Saga (SSS) is my attempt to make an mmorpg version of Super Mario RPG. This means porting all the maps, enemies, spells, items, story elements, etc etc to the rAthena emulator. It also means changing the way certain game mechanics and other gameplay elements function, within certain limits. SSS is a 'for fun' side project so it will really only be as close to SMRPG as I'm willing to put in the effort for.

Core Changes

  • No base experience. This means no leveling up base, and no stat point allocation.
  • Max base level 1, max job level 30.
  • New attributes replace stats: hp, atk, matk, def, mdef, evasion.
  • Attributes grow with job levels by selected class. Growth is preset based on SMRPG tables.
  • Bonus skills chosen when job leveling provide customization for attributes.
  • Revised combat mechanics.

Pretty Pictures

[table]

Mushroom Kingdom WIP

qwUEKDzt.png

Mushroom Way Pt2 (ingame)

6IxKIyGt.png

Mushroom Way Pt2

Vk06alqt.png

Star Road

NatmllUt.png

Mushroom Way Pt3

6zwRq6Vt.png

Work In Progress Enemies

SocTWFMt.png

Enemy and Player Class Variants

MY54vh2t.png

Kero Sewers Comparison

(Big: RO, Small: SMRPG)

MaxDCzmt.png

[/table]

Combat Mechanics

Super Mario RPG is a turn-based RPG but still has a lot of interactivity during battles because of its 'timed hits' mechanic. This is also called Action Commands or something similar to Quick Time Events.

By pressing a button at a precise time during an attack, you can multiply your damage by 1.5x for good timing, and 2.0x for perfect timing. The same goes for defending: good timing can half damage, while

perfect timing can reduce it to 0! My goal in combat is to recreate this in rAthena.

Right now I have the defence part working. Players have a 'Defend' skill that they can use right before an enemy attacks. If your timing is good enough you can reduce or even negate damage (assuming it is possible).

Example:

Uxql63h.gif

In this gif the Hammer Bros. boss is attacking me. By using the 'Defend' skill 0.15 seconds before the attack hits, I can negate the damage which displays the 'MISS' effect. After that I try defending again and my timing is less than perfect resulting in 2 damage being received (instead of the regular 4).

As for timed hits when attacking, I haven't quite figured out how I'm going to approach that yet.

Story

The mod will go through the entire game of SMRPG. Instead of playing as Mario as in the SNES version, players will take on the role of a Star Warrior sent down to the world to defeat Smithy and repair the Star Road.

The original Star Warrior took the form of the doll Geno to assist Mario in his adventure. Players will team up and go through all the familiar set pieces from the original game.

Classes

Instead of taking the form of dolls, player classes will use the forms of the world's enemies. The prototype classes will be Spikey and Greaper. I have plans for at least 6 different classes. More could be added depending

on how the project progresses.

Prototype Goals

  • 1/2 Classes (Spiker, Greaper)
  • Max job level 5
  • Story: Game Start to Hammer Bros. battle
  • 4 Enemies: Goomba, Spikey, Sky Trooper, Hammer Bros.
  • Attribute Implementation
  • Equipment Implementation: Armor, Weapon, Accessory
  • Maps: Star Road, Mushroom Way, Mushroom Kingdom (outside)
Challenges (No Jumping?!)

Jumping and to a smaller extent platforming, are a big part of SMRPG. So how does one address then when adapting it to an engine that doesn’t let people jump? Maps will need to be changed, and clever use of RO’s mechanics will need to be applied. I experimented with a map that used High Jump to do platforming, could this idea be incorporated in the game?

Art Direction

Players, NPCs, and enemies will be pre-rendered in 3D then converted to sprites. Maps will be modelled and textured from scratch based on approximate in-game references. The game sprites are hard to distinguish at times so official game renders will be used as much as possible.

Maps will be re-designed as necessary to work in the rAthena environment as well as for teamplay. Basically just adapting the maps to work in Ragnarok Online.

Progress Video (Old)

Progress

Currently I have the basic attributes implemented, as well as the changes to the battle formula to work like SMPRG, at least for basic attacks. Spikey and Greaper classes are in game but Greaper has no sprite or attributes yet. Weapon implementation is done but haven't put any actual weapons in the item_db yet.

Currently working on finishing up the Mushroom Kingdom.

Final Words

Thank you for reading this topic. I'm sure in the initial posting this is going to be a damn mess. I hope to edit it later on, but I really wanted to get this post out there. Cheers.

Edited by MaterialBlade
  • Upvote 3
Link to comment
Share on other sites

Hello there. Currently I'm working on this by myself so 99% of what you can see is from me.

 

Will hope to update the topic with more coherent information once I get my laptop fixed.

Link to comment
Share on other sites

Updates on levelup mechanics:
 
As mentioned in my first post there is no base leveling, only job leveling.
 
In Super Mario RPG every time you level up you get certain bonuses (below).
3847bc9440.png
 
 
For Seven Stars these values are saved in a custom table for each new class and will apply on joblevel. Notice the changes to HP, ATK, DEF, MATK, and MDEF below.
90c3f8486c.pngf90bba8bc7.png
(left, job level 1. right, job level 2)
 
After leveling up in SMRPG, you get the option to choose an additional bonus. The options to get more are, from left to right, ATK/DEF, HP, or MATK/MDEF.
010761515d.png
 
My current implementation of this system is giving the player an item when the level up (shown below). The item corresponds to the job level they have just achieved, ie lvl 2 item for getting to lvl 2. Science!
d03e5bb805.png
 
Due to the fact that in SMRPG you are in no danger of dying while choosing your level bonus, and in Seven Stars you are very much so in danger of dying while choosing your level bonus, the item can be 'used' any time to open the Select Bonus dialogue.
497f393358.png
 
 
This dialogue can be canceled and will only consume the bonus item once a bonus has actually been selected. After selecting a bonus it is saved into a new character stat (ala int,str,agi) and saved. The item then disappears.
ee83274183.png

 

Currently MATK is not being affected by the job level bonus or the additional bonus so I'll have to figure out why that is. Progress!

  • Upvote 2
Link to comment
Share on other sites

Now that's the type of collaboration I'd love to see. *-* And really cool stuff here Material, this is definitely the farthest I've seen a true re-working of the game go. Can't wait to see the finished product.

  • Upvote 1
Link to comment
Share on other sites

Thank you for the kind words everyone.

 

Today I've finished up the outside of the Mushroom Kingdom:

687df77c60.png

 

Close-up of the castle's entrance:

21c3aadfa5.png

 

Next I hope to work on some NPC, player, and enemy sprites. Currently all my sprites are using the targa format, and while its much easier to make new actors this way it significantly bloats the file size. The Hammer Bros sprites is already 14mb with only 1/4 of it's needed frames.

 

I will hopefully be posting some gifs of the new Reaper player class as well as some Mushroom Kingdom inhabitants. Cheers!

  • Upvote 1
Link to comment
Share on other sites

Why using ragnarok client/rathena for this project?

Have you got graphist skills only? It'd be cleaner to code a new game, don't it?

Link to comment
Share on other sites

This is still being worked on!
 

UKsKRvS.gif
 

Why using ragnarok client/rathena for this project?


Because I want to. That's entirely what the project is about, recreating the game for rAthena.
 

Have you got graphist skills only? It'd be cleaner to code a new game, don't it?


I'm mainly an artist but am fairly competent with the source as well.
 

Moving on...
 
Today I have worked on:
 
Creating weapons:
I don't have a picture for this, but just trust me it's done.
Damage is calculated as [PA + WP + rand(-HP,HP) - PD)] where PA is your character's Atk, WP is your weapon's Atk, PD is the enemy's DEF, and HP is the weapon's hidden power. A weapon with 90 atk and 0HP will always add 90 dmg to your basic attack. A weapon with 90 atk and 40HP will add anywhere from 50~130 dmg to your attack.

Fixing the way matk is calculated to use my preset tables:
DqQLjZK.png

// jobid,joblvl,hp,atk, def, matk, mdef
4230,2,25,23,2,12,4

 

 
Making some test NPCs:
TIlrLSI.png
Just some basic NPCs to populate the Mushroom Kingdom with.
 
And Making Player Class Colour Variations:
hyQ5AV6.png
Left is the monster colours, right is the player version.

 

Some very early effects tests:

giphy.gif

Mallow's Thunderbolt spell.
 
I am still working on this VERY infrequently as I have a handful of projects going all the time.

Edited by MaterialBlade
  • Upvote 1
Link to comment
Share on other sites

Two updates in less than 8 months???

Shenanigans...

 

Today I have worked on:

 

A lot of sprite work. All 4 prototype enemies are finished (animations and all), as well as some Star people for Star Road.

Take a look at their idle and attack animations...

 

Goomba

chM37WQ.gifgsRnvAj.gif

 

Sky Troopa

f3E6YDh.gifPT2BrGY.gif

Spikey

BBpDuNg.gifIrpKghf.gif

 

Hammer Bros.

ftpa5SN.gifqCz1coy.gif

 

When I started this project I was using Actor and Actor2 to edit the .spr and .act files. Part of the reason I left the project for so long was because of how tedious it was to work with the editing software. Big ups to @Tokeiburu / @Tokei for their amazing Act Editor software. I only discovered it existed about a week ago, but it drastically helped me breeze through making all these.

 

Adding NPCs and starting quest to Star Road

yQfkGRl.jpg

 

The blue mustachio-d Star is the Boss. Talking to him starts the introduction to the game.

 

 

Lots of other Additions

- Added 'coin' option to mobdb. Enemies will drop a coin and play a little effect when they die

- Finished implementing level-up bonus

- Finished animating player Spikey class

- Made a whole bunch of things unstable (getting lots of dc's, memory leakage @[email protected])

- Populated Mushroom Kingdom with basic NPCs

- Some other stuff I can't remember

 

 

What's Next?

We're coming up to the point where I've finished all my prototype goals. First thing is to replace the novice sprite with some kind of Star. Headless novices look pretty silly walking around in the clouds. After that is armor and accessory implementation which shouldn't be super hard. I still haven't figured out how I want to approach timed hits when attacking an enemy yet so that will probably be the very last thing to be finished before I consider the prototype 'complete'.

 

I will be posting a video of my progress very soon, so stay tuned for that.

 

That's all for now!

Edited by MaterialBlade
Link to comment
Share on other sites

Looking great, @MaterialBlade.

 

If the client starts getting unstable, keep in mind that clients made before the new Prontera update have a hard limit of 3000 vertices per RSM node. More than that and things go haywire pretty fast. Also RGBA sprites are really bad for the client in comparison to indexed sprites, although I don't think there are any memory leaks. Props for sticking with this. I wanted to make a little Paper Mario demo (I even built OBJ to RSM and spritesheet to SPR converters), but working with BrowEdit made me want to throw my computer out the window pretty fast.

  • Upvote 1
Link to comment
Share on other sites

Looking great, @MaterialBlade.

 

If the client starts getting unstable, keep in mind that clients made before the new Prontera update have a hard limit of 3000 vertices per RSM node. More than that and things go haywire pretty fast. Also RGBA sprites are really bad for the client in comparison to indexed sprites, although I don't think there are any memory leaks. Props for sticking with this. I wanted to make a little Paper Mario demo (I even built OBJ to RSM and spritesheet to SPR converters), but working with BrowEdit made me want to throw my computer out the window pretty fast.

but working with BrowEdit made me want to throw my computer out the window pretty fast. < RT for this one

How are going the progress of your client?

@Topic

Oh, very cool! I love mods like this one. I will follow.

Link to comment
Share on other sites

Progress Video!

I recount a lot of information that is already in this topic but it's in video form so watch it.

 

On 2016-11-07 at 10:34 AM, curiosity said:

If the client starts getting unstable, keep in mind that clients made before the new Prontera update have a hard limit of 3000 vertices per RSM node. More than that and things go haywire pretty fast.

Client is fine as far as stability goes, I haven't started messing with a hex editor since I patch it every once in a while. The stability I'm referring to is the server since at the moment I'm adding, removing, and changing the source very willy-nilly.

On 2016-11-07 at 10:34 AM, curiosity said:

Also RGBA sprites are really bad for the client in comparison to indexed sprites, although I don't think there are any memory leaks.

All enemies and characters are fully indexed! My test .spr's were around 14mb each but are now all <1mb.

 

On 2016-11-07 at 10:34 AM, curiosity said:

Props for sticking with this. I wanted to make a little Paper Mario demo (I even built OBJ to RSM and spritesheet to SPR converters), but working with BrowEdit made me want to throw my computer out the window pretty fast.

Thank you for the encouragement, it's very nice to see and is a big boost of motivation. Passion projects are fun but can definitely be hard at times to want to come back to.

When I first got into map editing so many years ago you had to edit notepad files and generate the map with some batch file or something - very complicated stuff - ,so when Borf showed off BrowEdit I was extremely happy. Also if you think BrowEdit is bad try making some effects with ROSTRViewer because that is a nightmare to work with, haha.

 

  • Upvote 1
Link to comment
Share on other sites

Thanks for sharing the video. What I'm the most impressed with is how authentic you've managed to keep the graphics to the original game's artwork.

On 11/7/2016 at 4:57 PM, Zell said:

How are going the progress of your client?

Not bad, but let's not hijack this topic. :P

Link to comment
Share on other sites

Awesome project, great work, that's why we need plugin implementation like our sibling did, so that will many great developer will bring more unique and original creation

Link to comment
Share on other sites

Today I have...

I honestly didn't think I would ever get this far, but here we go, timed attacks are done.

The following video showcases how timed hits work for physical and magical attacks, as well as showing off some enemy spells.

 

At this point I feel that I've accomplished everything I wanted to do for a working prototype.

The next step is to actually get other people in to try out multiplayer, and at some point to clean up my existing code. I'll hopefully be posting a video of multiplayer adventures in the future. For now though I think I'm going to take a break from this and go back to my other projects.

Thanks to everyone who took the time to comment or leave some feedback, I really appreciate it.

Until next time!

 

Edited by MaterialBlade
  • Upvote 3
Link to comment
Share on other sites

I remember someone did like this, using eAthena  emulator and converting to different kind of RPG.

It's called "Mana Plus"

Watch

 

Link to comment
Share on other sites

On 2016-11-24 at 10:18 AM, x13th said:

I remember someone did like this, using eAthena  emulator and converting to different kind of RPG.

It's called "Mana Plus"

That's pretty neat actually. I thought about possibly making my own client, but couldn't be arsed to do it.

Link to comment
Share on other sites

On 12/5/2016 at 4:40 PM, MaterialBlade said:

That's pretty neat actually. I thought about possibly making my own client, but couldn't be arsed to do it.

Oh no, I've been arsed to do it.
 

Really though I've been working on this off-and-on for about 2 years, mostly with big breaks in between. My last break was actually 5 months. It's a point where it's somewhat presentable now so hey, time to share.

So far the features it has are:
    - public chatting (no party, whispers, guild yet)
    - regular attacks and spell casting
    - hotkeys with 'timed attack' support
    - map loading
    - audio system
    - effects system (hurt fx, spell fx, misc fx like cast circles, etc)
    - expandable animation system (server can tell client to play an unlimited number of animations)
    - GAT editing/exporting (to update the mapcache)
    

It's been an interesting learning experience, helping me get better at C# programming and understanding networking and stuff. Because I'm using Unity as the engine I don't have to use any of Gr*vity's formats which makes it sooooo much easier to create assets and get them in game. It only takes a few hours to start a character from scratch, model them, texture them, import them into Unity, and get them in game. Imagine not having to worry about which tool to use for which format.
Anything involving sprites is just a .png spritesheet. STR-like effects are billboards animations made with Unity's animation tools. Maps are prefabs composed of a 3D ground mesh and prop prefabs for details (things like beanstalks, mushrooms hills, houses). Making the map in 3D saves dev time and will (probably) be more flexible than doing it with tiles. The heightmap is another 3D mesh that actors snap their Y positions to.

Parts of the video will look incomplete compared to others, but that's mostly due to how I implement stuff. When I'm working on a new feature I'll usually just get it to a point where it works, then move on to something else. Example of that would be how some of the maps have art, and others are still greybox tiles. Once I got the map system working I moved on to a new feature instead of updating the art for all the existing maps. Actors don't have actual animations because once the system for playing the animations was done I moved on to a new feature. Only one prop so far uses vertex colours because... well, you get the idea. Once something actually works I can make it better later.

The way the timed attacks work now are pretty neat. When I was still using an RO client you would have to use the 'ALL_ATTACK' skill to trigger a timed attack (you can see this in older videos). This is true whether it was a normal attack, an aoe spell, a targeted spell, whatever. With the Unity client I can keep track of a timer after you've used a spell, so that if you hit that same hotkey again, it sends the 'ALL_ATTACK' skill instead. If you've ever played Super Mario RPG this is how the system works in that game. You hit Y to go into the Special menu, use the spell, then hit Y again during the animation to do the timed hit.

I've started adding custom packets for some things. Previously how I handled the process of a normal attack went like this:
- player starts attacking enemy, send 'damage' packet from src->target with 0 damage to play the attack anim
- if player did a timed hit, send the 'use Skill' packet so player does the 'jumping' animation
- send the 'damage' packet from target->target with actual damage so enemy plays their 'hurt' animation

Now it's more like:
- player starts attacking the enemy, send 'PlayAnimation' packet that tells src to face target and play animation 7 (this number could change based on their equipped weapon)
- if player did a timed hit, send 'PlayAnimation' packet that tells src to face target and play animation 13
- if attack didn't miss, send 'TakeDamage' packet where target faces src, plays animation 2 ("hurt" anim), and the damage numbers appear
With this I can tell the actors to play an infinite number of animations based on their equipment, player state, class, whatever.

Few of the next big things to implement will be inventory and equipment management, NPC dialogue, and a window for choosing level up stats. That last one will require some new UI and custom packets so that would be the next thing to add.

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use and Privacy Policy.