Jump to content

[WIP] Nimian Legends Empires - Semi Procedural HTML5 RPG


Protopop
 Share

Recommended Posts

UPDATE: Nimian Legends Empires is live.

 

Play it here: http://nimianlegends.com/

 

 

Nimian Legends Empires is a semi-procedural HTML5 RPG, and the followup to the Original Nimian Legends. I'm releasing it Fall 2015 and wanted to share some of my motivations and process for creating it, and maybe get some community feedback:) I've also posted a some gameplay on You Tube here: https://www.youtube.com/watch?v=2Kz5NL7rrXY

 

Please excuse the bad audio - it was recorded using the built in mike:)

 

post-3902-0-57358500-1439176511.jpg

AdventureGen Engine™

After creating Nimian Legends I wanted a way to deliver more of the world faster. I realized how difficult it was to populate kingdoms, let alone continents with content. But I had a lot of legends and lore from the Nimian Legends universe. I ended up creating the AdventureGen Engine™. It creates locations, names, weapons quests procedurally, but allows me to add handcrafted ‘nodes’ for important cities and citizens from the world. The map itself remains the same, but changing the 'seed' number will produce a vastly different world within the landmass.

Procedural Quests

I’m currently finishing the quest generator and then will be ready to launch the new version. The quest generator (and the AdventureGen Engine in general) uses a fractal structure to make itself aware of world elements above (continental) and below (individual beasts) each node. Im taking care to develop the quest and dialogue engine to be lively and filled with character. I found that generic quests can fee cookie cutter, so a lot of effort has been so the engine takes into accounts the lives and motivations of various citizens and create interesting interactions between them. The AdventureGenEngine provides a helping hand to the handcrafted elements. I was able to populate about 6 times the world in a few hours with what took me weeks before.

 

post-3902-0-84412200-1439176564.jpg

 

post-3902-0-95819800-1439176540.jpg

3 Cards

One problem with the original was that i sued many different systems - beasts were presented as cards, but inventory was a standard drag and drop. My original version had been card based, so i went back to that, with the idea that everything was now a card and worked in sets of threes. Now shops offer 3 items (weapons, magic, armour, shields and more) procedurally generated and based on the areas level. Beasts are created procedurally and different kinds populate different areas (Frost daemons in snowy areas, Undead in swamps etc…).

Card Decks

You have three decks and each deck can hold 3 cards. You collect cards by travelling around the world and drawing them from locations, or purchasing them in cities and villages. Some cards are given to you as rewards for completing quests. Battle decks hold anything you can use in a fight - weapons, armour, spells. In general battle cards are permanent until you sell them. The Perk Deck hold special one-shot cards that modify your abilities or give you special powers. Finally the Rune Deck holds special permanent blessings that affect your hero’s abilities. Career cards give you a special permanent skill based on the career you chose. For example, Swipes can attempt to steal items from shops (and you can amass quite a fortune stealing then selling goods - just don’t get caught), and Rooks (powerful fighters) gain +1 attack damage fro each level they achieve. You also get runes from choosing your path - Speed, Strength and Spirit. Choose Spirit and your Karma, used to cast some cards, is doubled. Choose speed and you can dodge enemy attacks, reducing damage.

 

post-3902-0-50978900-1439176663.jpg

 

post-3902-0-86849900-1439176685.jpg

 

post-3902-0-17036800-1439176706.jpg

 

 

Your Hero

You’re character can choose a career, path, gender (male, androgyne or female) and species - with your character portrait updating depending o what you choose. You gain experience and gold by defeating beasts and completing quests, allowing you to level up, which increase your stats and skills.

 

post-3902-0-14202300-1439176626.jpg

Free and Inclusive

Nimian Legends Empires is free and is being released online in Fall 2015. i created it in HTML5 for a few reasons. Since my days as a flash developer I have always wanted my games to be as accessible as possible, and HTML5 achieves this. HTML5 is also very flexible and relatively simple to code. I like the open nature of it and there is always a lot of help nearby.

The world is also inclusive. Male, female and Androgyne choices are available for your gender, and your hero can engage in romances with any gender. The world of Nimian Legends itself may be filled with danger, intrigue and corruption, but the spirit i am making the game in is one of inclusivity.

As for me, I’m a solo game developer with a few games on the app store. And since my Dungeons & Dragons days (check out 5th edition - great art and inspiration!) I have enjoyed creating games and worlds. This world itself is the background setting for Nimian Legend BrightRidge, a 3D Open World wilderness game on the app store (it is getting an HD update this fall as well). I hope you’ll get inspired by Nimian Legends and keep an eye out for it this fall:)

Rob

post-3902-0-54242200-1439176609.jpg

Link to comment
Share on other sites

I'm working on the procedural quest part of Nimian Legends Empires. Because a large part of the world is generated procedurally, it already has a handy backbone to ride the quests on. I'm basically expanding inside the procedural algorithm and the world gets more detailed. in this case i am able to generate procedural citizens for all the cities. But i have  alot of hand made hero citizens from the Nimian lore, so ive made it possible to override the procedural stuff on a node by node basis.

 

For the quest generation i did a lot of thinking about how to generate quests that had impact. Decided that it is human values that drive good stories. Thankfully i already have an alignment system in place. I decided on 3 major world spheres of life: Economy, Religion, and Power&Politics. Citizens and areas have an interest in one of these spheres. And then their alignment combines with it to form their world outlook, And it's this outlook that is the basis for that particular characters quest. Because of the fractal nature of the data structure, there are already pathways to link nodes together at different levels. My aim for the story element is to use this along with generic granular sub actions (attack, fetch, raise money, bribe etc) to create a full and interesting quest that is aware of the world around it.


What's fun is seeing it working so far. I know the personalities and home cities of the major characters, so ive input them into the algorithm and overridden it in these places (the rest have procedurally create citizens). I input their alignment and sphere of interest, and their world outlook shows up in a realistic way. In one of the attached images the character of Jackdaw is honorable, tough and her sphere is the economy. So her interest is Taxes. How the particulars of her quest end up (beat up deadbeats? raise tax money?) will be up to the AdventureGen Engine:)

 By populating a city with similar citizens, we get a pretty consistent set of values for that city, giving it a unique flavor. For example, In the other image these citizens are from religious, political spheres and Imperial or honorable in nature. It generated 3 characters that have outlooks of Religious rule, Crusades and Military Might. Perfectly in flavor within the crumbling religious walls of the grad city of Vandgels.

 

 

post-3902-0-06214100-1439534915_thumb.jp

 

post-3902-0-48261400-1439534934_thumb.jp

Link to comment
Share on other sites

  • 5 weeks later...

Very excited with my AdventureGen engine, its almost complete. It creates adventures procedurally. every citizen in the world has a set of values, and the places they live in have a set of values as well. They look at each other and where they live to find their enemies and friends, and then generate quests based on that and their values. A coldblooded citizen might ask you to assassinate their competition or bribe an official. Honorable characters may ask you to hunt down chaotic beasts to restore law and order. Humane characters will never ask you to kill, but might ask you to donate charity to the poor or heal others.

The core engine is complete and now i am working o the Natural Language engine - the part that takes the base quest and turns it into descriptive English (Dungeon becomes the frigid depths of basinwood for example. Im still on track for a September launch, then I will focus on Nimian Legends BrightRidge HD - the updated version of my Open World Wilderness.

In these screenshots you you can see an example of the overiding goals for the nation you are in - in this case the Rebellious nation of Nuju. The game looks at the 3 spheres - Economy, Religion and Politics - and generates its overall goal. In this case a rebellion against economy is about abolishing the slave trade (rebel is a good value). The adventure part requires questing for citizens and gaining support for either side.

In the second image you can see quests in progress. Manis Manta in the middle believes in the slave trade and pure profit, and asked me to assassinate his tivals. Ive done so and now he hs made a vote that affects the world. All of this is handled procedurally by the computer leaving me free to "hand paint" details in he world without being overwhelmed. I just set the values of people and places (or generate them) and the cpu does the rest:)

 

tumblr_nukxbddhEW1tkj61lo2_1280.jpg

 

 

tumblr_nukxbddhEW1tkj61lo1_1280.jpg

Link to comment
Share on other sites

  • 1 month later...

Looks amazing!

Merci Neoprofessor. I'm sorry I took so long to thank you. I was swamped finishing version 1.0.

 

It's live now if you want to check it out:

 

http://nimianlegends.com/

 

It's semi procedural, so:

 

Things that dont change:

The map continent shapes and terrain

Causes (national goals like Abolish Slavery are preset)

Citizens that I overide the procedural ones (i have handcreated many citizens i have in my imagination and placed them in certain cities)

Nation and kingdom names

City Names

Beast names and images

 

 

Things that are procedurally generated:

Quests

Weapons, magic, perks and armor

Non pre-generated citizens

Landmark locations and names

City locations

Beast Stats

 

Every citizen has a set of values ( alignment) and a sphere of interest (Economy, politics or Religion). They serach for friends and enemies, and generate goals based on their disposistion.

 

The gameplay is based on getting votes to pass or oppose causes. Ive included 3 to start:

The Treaty of Zea: Abolish slavery?

The Empyre Crusades: Sanction a religious invasion

Path of the Assasina: Support a plot against Emperoro Mortelle

 

Anyways i hope you will take a look:)

 

tumblr_nx66zkPgLh1tkj61lo1_1280.png

Link to comment
Share on other sites

One of the biggest changes I made late in development ws the card decks.

 

For most of the time i was using a system with 3 decks, and you could hold 3 cards in each and switch between them. I think i was very obsessed with thepower of 3 developing this game:)

 

Earlier version with 3 seperate decks you switch between

 

tumblr_nsuixqSQNl1tkj61lo3_1280.jpg

 

A playthrough with 2 friends told me i needed to fix that. So i rewrote the subsystem in a long evening. Now you can collect up to 9 cards of any kind and they go in 1 deck (or really your hand) along the bottom. No more switching and it makes much more sense.

 

A good thing about how i approached this update is that the game is now a bunch of interrelated objects and a procedural algorithm. I built it this way so that i could add to the game without breaking other parts of it, and the procedural and object oriented deisgn means improvements just ripple through it.

 

I'm also working on a drag the cards mechanic for version 1.0.2 (i updated it to 1.0.1 yesterday with a few incremental changes

 

Update with up to 9 card single deck

 

tumblr_nx66zkPgLh1tkj61lo1_1280.png

Link to comment
Share on other sites

The artwork and UI is.. out of this world. Was there a library you used for those animations or is it all custom? Just curious

 

Thanks WombatTurkey:)

 

The animations are just CSS transitions - using jquery to add and remove classes (like adding a .pop class to cards when you click them so that they popup and removing the .pop class on close)

 

I also use setTimeout to apply the classes one after the other in some cases after a moment of delay.

 

I use Leaflet for the map itself. http://leafletjs.com/

Link to comment
Share on other sites

There's 2 things i did to make sure this procedural rpg version of Nimian Legends would be easier to update:

 

1. Procedurally Assisted Design

 

Aside from the terrain, all elements of the world are procedurally generated. I also override parts of it, so ive added custom citizens, cities and names where i feel it makes more of an impact. Wherever i don't override things the game generates the rest on its own, allowing me to populate large section of the world with relative ease. BTW as far as im concerned the future IS procedural. Its jut a question of creating algorithms that are as effective at storytelling etc as humans are. I'm not there yet, but whats nice is that when you inject the algorithm with an improvement, it cascades through the entire fantasy world.

 

2. Object Oriented structure

 

Each component of the game is, as much as i can make it, its own encapsulated section. This way i am ale to update portions of teh gae without breaking everything. it makes integration much easier.

 

So far its working as planned. A minor 1.0.1 update last night - i replaced the text only "next quest" map popups with pictures of the quest target and simplified quest action text. It's more engaging when its visual, and it works towards my philosophical goal to remove ALL text from the game eventually (although i think that might not be possible, but im trying:)

 

New visual quest popups replace text only version

 

tumblr_nx9hu4i2Fv1tkj61lo2_1280.png

 

tumblr_nx9hu4i2Fv1tkj61lo1_1280.png

Link to comment
Share on other sites

Have you thought of switching to a sprite based system for map pieces to minimize http requests?

 

https://i.gyazo.com/7c39c53f7524cdad7ff2ac662f652b6c.png

 

https://i.gyazo.com/3da053f32cb1d8920d9dddc5d93da54f.png

 

and

 

https://i.gyazo.com/7f33f423dcdfe91fc59e2c950c408ba9.png

 

You could save probably.. hundreds of requests.

 

Also, have you considered adding   a volume slider instead? HTML 5 audio is notorious for being too loud and it is in this case. Just trying to continue to get this game polished for you as I believe you've done an outstanding job.

Link to comment
Share on other sites

Have you thought of switching to a sprite based system for map pieces to minimize http requests?

 

https://i.gyazo.com/7c39c53f7524cdad7ff2ac662f652b6c.png

 

https://i.gyazo.com/3da053f32cb1d8920d9dddc5d93da54f.png

 

and

 

https://i.gyazo.com/7f33f423dcdfe91fc59e2c950c408ba9.png

 

You could save probably.. hundreds of requests.

 

Also, have you considered adding   a volume slider instead? HTML 5 audio is notorious for being too loud and it is in this case. Just trying to continue to get this game polished for you as I believe you've done an outstanding job.

 

Thanks for taking the time to upload those screenshots:) Its really helpful to see things from another viewpoint and the images help explain what you mean. The screenshots also showed me that there are some images from the old version being loaded. Ive made a note to go over the images and cull the ones i no longer need.

 

I like the volume slider idea a lot. Ive added it to my update list.

 

I don't know too much about sprite sheets but i can figure it out. Part of the reason i keep the images separate is so that i can update them easily (just drop in a new separate beast etc), and the leaflet based map tiles need to be in a specific format. But i think there are some things that i can combine, like location icons or things that wont change often.

 

I'm looking into updating the game loading and have made a note to check this out. Thanks for the good idea.

 

Advice on polish is great. Because of the ambition of the work sometimes polish takes a backseat. So pointing out parts of the game that you find important to fix gives me a good insight into what to approach next:)

Link to comment
Share on other sites

BTW ive also added a link on the homepage to the old version, in case people are nostalgic:) and also so i can keep a record close at hand. There's a few things from the old version that i like better than in the new one, so its a good way for me to contrast and compare, and also to see how much has changed in the new version. Its been more than a year since i created the original and sometimes its surprising to see how much things have changed:)

Link to comment
Share on other sites

Update 1.0.2

 

It includes a sidebar that contains Omnipedia information about the world. up until now i was preparing a separate omnipedia website, but i wanted a way to integrate the information inside the Nimian Legends website so that the player has faster, closer access to world lore. Now you can click the LORE button on the right of the page to access the information in site.

 

Its a version 1.0 sidebar. I would like to include more game pertinent information in the sidebar in the future, and connect it to the game so that you can se at a glance who you have helped, which citizens youve killed, which beasts youve defeated etc.

 

tumblr_nx9vc49gUM1tkj61lo1_1280.png

Link to comment
Share on other sites

Have you thought of switching to a sprite based system for map pieces to minimize http requests?

 

https://i.gyazo.com/7c39c53f7524cdad7ff2ac662f652b6c.png

 

https://i.gyazo.com/3da053f32cb1d8920d9dddc5d93da54f.png

 

and

 

https://i.gyazo.com/7f33f423dcdfe91fc59e2c950c408ba9.png

 

You could save probably.. hundreds of requests.

 

Also, have you considered adding   a volume slider instead? HTML 5 audio is notorious for being too loud and it is in this case. Just trying to continue to get this game polished for you as I believe you've done an outstanding job.

 

Hi WombatTurkey,

 

Thanks again for these suggestions. I wouldn't have thought about this and you pushed me to start removing some of the upfront preloading and get rid of loaded items that were not there. I hadn't used the HTTP request inspector until now but i figured out how to use it based on your screenshots:) I saved a few mb of useless downloading, and am learning to defer some of the asset loading to later in the game when they appear, so i can speed up the initial loading process.

Im working full time on updating my open world 3d game Nimian Legends BrightRidge, but im also updating Nimian Legeds incrementally, so these kinds of suggestions make a real difference.

 

Thanks again;)

Link to comment
Share on other sites

Hi WombatTurkey,

 

Thanks again for these suggestions. I wouldn't have thought about this and you pushed me to start removing some of the upfront preloading and get rid of loaded items that were not there. I hadn't used the HTTP request inspector until now but i figured out how to use it based on your screenshots:) I saved a few mb of useless downloading, and am learning to defer some of the asset loading to later in the game when they appear, so i can speed up the initial loading process.

Im working full time on updating my open world 3d game Nimian Legends BrightRidge, but im also updating Nimian Legeds incrementally, so these kinds of suggestions make a real difference.

 

Thanks again;)

 

 

I am a nut when I refresh when using the Chrome console.  It's like an OCD to have everything in sprites for performance. Not a bad OCD to have I guess, because it does help.  I grilled your game hard, but haven't found any other improvements and if I do, I'll let you know! Good developers are exactly like you. They take the criticism seriously and thank them no matter who they are.

Link to comment
Share on other sites

I am a nut when I refresh when using the Chrome console.  It's like an OCD to have everything in sprites for performance. Not a bad OCD to have I guess, because it does help.  I grilled your game hard, but haven't found any other improvements and if I do, I'll let you know! Good developers are exactly like you. They take the criticism seriously and thank them no matter who they are.

 

I get it:) Its like code is DNA and the more you clean it the tighter it feels. We're kind of connected to our computers through our eyes and fingers and ears - they are like extensions of our nervous system in a really primitive way. And when something has its code cleaned i can "feel" it when i run it. Your suggestions led to me also update last night to version 1.0.5 which includes a new loading screen and process and a BIG bug fix that was there for a while that sometimes froze your character - so im really happy about that, and i just downloaded 25ios smaller app to combine my css and js files so i can minimize http requests like you said. And ive been testing my site performance with a few services - i have like 35 js files and 5 css and i should be able to combine and minify these into just 2. In fact just looking over the code revealed js files i dont use anymore, so i can elimiate those too. Its fun to trim and clean like this - it feels organized. In general you have encouraged me to smooth out the technical/delivery experience which is as important as the art stuff:)

 

What I like also is that once something is imporved, its behind me. So i feel like i am just making something better and better without moving backwards. A fresh pair of eyes is invaluable because we dont think of eveything ourselves. Like someone just suggested that in my other Open World 3d game BrightRidge that i add pinch to zoom (im using buttons for it) and i was like "that make sooo much sense:)"

 

Overall you have encouracged me and taught me some good directions when it comes to performance so there is a bit of your DNA in the website going forward:) (i put a small thank you note to you in the site credits)

 

The New loading screen in update 1.0.5 eliminates images for faster response, and adds in rotating site tips (like a skyrim loading screen) to keep the user occupied during the first load which is longer. It also changes the term from "Loading" to "generating world" which phycologically seems like a more interesting process is going on and increases user interest for people who have come hear looking for a 'world' to explore. Finally a minimal and aligned visual overhaul makes it more professional looking and more inviting to casual onlookers.

tumblr_nxpxu8vBMK1tkj61lo1_1280.png

Link to comment
Share on other sites

I get it:) Its like code is DNA and the more you clean it the tighter it feels. We're kind of connected to our computers through our eyes and fingers and ears - they are like extensions of our nervous system in a really primitive way. And when something has its code cleaned i can "feel" it when i run it. Your suggestions led to me also update last night to version 1.0.5 which includes a new loading screen and process and a BIG bug fix that was there for a while that sometimes froze your character - so im really happy about that, and i just downloaded 25ios smaller app to combine my css and js files so i can minimize http requests like you said. And ive been testing my site performance with a few services - i have like 35 js files and 5 css and i should be able to combine and minify these into just 2. In fact just looking over the code revealed js files i dont use anymore, so i can elimiate those too. Its fun to trim and clean like this - it feels organized. In general you have encouraged me to smooth out the technical/delivery experience which is as important as the art stuff:)

 

What I like also is that once something is imporved, its behind me. So i feel like i am just making something better and better without moving backwards. A fresh pair of eyes is invaluable because we dont think of eveything ourselves. Like someone just suggested that in my other Open World 3d game BrightRidge that i add pinch to zoom (im using buttons for it) and i was like "that make sooo much sense:)"

 

Overall you have encouracged me and taught me some good directions when it comes to performance so there is a bit of your DNA in the website going forward:) (i put a small thank you note to you in the site credits)

 

The New loading screen in update 1.0.5 eliminates images for faster response, and adds in rotating site tips (like a skyrim loading screen) to keep the user occupied during the first load which is longer. It also changes the term from "Loading" to "generating world" which phycologically seems like a more interesting process is going on and increases user interest for people who have come hear looking for a 'world' to explore. Finally a minimal and aligned visual overhaul makes it more professional looking and more inviting to casual onlookers.

tumblr_nxpxu8vBMK1tkj61lo1_1280.png

 

I think you'll really like this place: http://codegolf.stackexchange.com/ (Specifically: http://codegolf.stackexchange.com/questions/2682/tips-for-golfing-in-javascript)

 

Ofcourse compressing the JS files with uglify or whatever does most of the work, but golfing some JavaScript code fulfills my OCD :).

 

 

I love your loading screen UI and I can tell a definite faster loading time when I did a hard cache re-load as compared to few weeks ago. Great work!

Link to comment
Share on other sites

I think you'll really like this place: http://codegolf.stackexchange.com/ (Specifically: http://codegolf.stackexchange.com/questions/2682/tips-for-golfing-in-javascript)

 

Ofcourse compressing the JS files with uglify or whatever does most of the work, but golfing some JavaScript code fulfills my OCD :).

 

 

I love your loading screen UI and I can tell a definite faster loading time when I did a hard cache re-load as compared to few weeks ago. Great work!

 

Cool - thank you! I find recommendations from people is one of the best ways to learn about new things:)

Link to comment
Share on other sites

  • 4 weeks later...

Amazing game!

 

Congratulations. 

Thanks Curdula:) I'm glad you enjoyed it and took the time to write.

 

When I was a kid a made a fantasy world map, plasticized it and everything, and threw it out later which I regret. I'm kind of doing the same thing now as when i was a kid - creating worlds is fun and it's the Dungeon Master in  me.

 

I'm working on some interesting updates for 2016 also. I hope you'll check back in.

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.
Note: Your post will require moderator approval before it will be visible.

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.

Loading...
 Share

  • Recently Browsing   0 members

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