Jump to content

Home

KOTOR online?


room101

Recommended Posts

Hi all!

 

For a while now it's been possible to use GPU to render flash-based applications. Once this became possible, various platforms appeared on the market to take advantage of this. In particular, there is now a pretty robust flash-based framework that allows rendering of 3-D models directly into a browser. Very recently an extension of this platform allowed a light saber material to be properly rendered in real-time in a browser so for the first time it's possible to create an RPG browser-based/flash-based in the KOTOR universe, that is an online/browser game along with multiplayer capabilities, where 3-D models of Jedi and their respective light sabers are rendered in real-time in a browser and so on…

 

That's all I wanted to say, that is now possible to make such game. What's next? Any takers? Any interest to make it happen? Any interest to help out on such project? is anyone else already working on such project, either indie developers or big development houses, and I just don't know about it?

 

Thanks!

Link to comment
Share on other sites

for example, I'm talking about something like this

 

Starling_background_example.jpg

 

for a full screen version of this image click here

 

http://dhkgames.com/stuff/Starling_background_example_full.jpg

 

this example is something quickly put together to show how such game can look like, especially to show how a light saber looks like when rendered in real-time in a browser.

This light saber material is the innovation I was talking about, and to the best of my knowledge this was not done before

and that's it, I hope the above can prove the concept of a KOTOR online potential

Link to comment
Share on other sites

  • 4 weeks later...

hi all, I worked a little bit more on this proof of concept and here you can see an update

 

KO_small.JPG

 

you can play with a very early alpha version here

 

KOTOR Online

 

use the SPACE bar key to turn the light saber on/off. Use the COMMA key for a light saber slashing. Use the BACKSLASH key to change the light saber color. Use the left and right keys to rotate the character while standing idle. Clicking the mouse anywhere on the path will make the character move. If you click outside the path nothing happens. The path algorithm needs some extra finesse, but for this proof of concept should be enough as is.

 

this proof of concept is heavily inspired by King's Road from rumble games, and Dragon age journeys from EA, and of course it's using KOTOR 3-D models, in particular a Jedi consular body and Jolee head, and they should take all the credit, my intention is to prove that such game is possible and that perhaps the Star Wars/KOTOR copyright owners are willing to support such project, so we can start using custom-made new visual content

 

on a side note, I've been having some health-related issues lately, in particular my eyes and my arms, so it's unlikely that this project would move forward without help and participation from other community members

 

anyways, please let me know what you think

 

Thanks!

Link to comment
Share on other sites

Hi, thank you for the positive comments!

 

please allow me to clarify a bit about my health. I'm doing this not only for the sympathy, which I need given my condition, but also to point out that without help it's unlikely this project would complete.

 

Although my eyes problem is a new addition on top, I had problems with my arms for a long while now. I cannot use either of my arms, and I operate my computer through a microphone and voice recognition software. You can imagine how cumbersome programming or using 3-D software can be via a microphone

 

one of the main reasons I started this project is to keep my mind occupied, apparently I have a strong burning spirit, but my body doesn't seem to be able to keep up with the spirit, and it's breaking down piece by piece. An active mind always need something creative or constructive to do, otherwise it's like an engine in neutral with a floored acceleration, it's revving loudly but doesn't move the car forward.

 

So I had to do something to keep my mind occupied and away from the negative thoughts that are byproduct of chronic pain and being physically challenged

 

and that's all I want to say about this. No help, no game. :-)

Link to comment
Share on other sites

This looks very good! Nice work.

 

I'm not very skilled in programming outside of some scripting for KotOR (and I often end up banging my head on something over that), and my time's a bit limited, but if I can help in some way I'd love to.

 

hi, thanks for the offer! let me steer the conversation in a more technical direction and talk about what's behind this proof of concept.

 

But before anything else, I want to make sure that the following is clear: the visual components used in this proof of concept are not done by me, they are extracted/reverse engineered/ported from other games, and the copyright owners of these games deserve all the credit. The 2-D background is from Kings Road, and the Jedi with a light saber is from KOTOR. I had to use these resources as a temporary placeholder to make a point: that a game like KOTOR Online is doable.

 

now back to the technical conversation. This proof of concept uses Actionscript 3 as the backend programming language. currently this project is done in Flash Builder 4.6 from Adobe

 

It also uses Sea3D framework for the 3-D models. Sea 3-D framework is an extension of Away 3-D framework.

 

For the 2-D side of this concept I'm using the Starling framework. The background in this proof of concept is a 2-D layer made of a matrix of 16 images 4 x 4 grid, and the Starling framework is used for GPU rendering of these images.

 

Currently the 2 existing layers ( Starling 2-D and Sea3D) are sharing the same Flash Scene3D which is possible starting with flash player 11 and up.

 

As you can see, the 3-D layer is rendered on top of the 2-D layer, and this is how the Jedi 3-D moves on the path 2-D. I plan to add another 2-D Starling layer as the UI, where the talents, character customization, etc. will take place.

 

Sea3D framework is the one that allowed me to create the material for the 3-D model of the light saber to be rendered in a browser. The team behind this framework should get credit as well :-)

 

so I guess actionscript/Sea 3-D/away 3-D/Starling knowledge would be very helpful for anyone who wants to participate. Also artists who can create new custom visual 2-D or 3-D components are definitely welcome to join, this way we can stop using other people's copyrighted work

 

and, I guess a manager would also help to turn a group of people into an effective team :-). By manager I don't mean a power-hungry person who likes to push people around, but someone with decent interpersonal and organizational skills :-)

 

on my immediate to do list I plan to:

1. migrate all the animation sequences, about 230 of them, roughly 15,000 frames. The way I'm currently doing this it's a very manual slow process, but it has to be done. The source of these animation sequences is S_male02 model from obsidian KOTOR2, which includes navigation sequences and combat sequences for all the weapons except Saber staff

 

2. create some rudimentary UI, mainly for the powers bar in game, as icons I would most likely use SWTOR icons, I wrote the script to download them, I had no idea there are over 50,000 of them, it took about 15 hours to get them all, but now I have them, and I would probably try and identify the most interesting, beautiful and relevant ones and see if I can use them in my proof of concept. It is likely that I would use as inspiration a reversed engineered powers bar from Dragon age journeys, so I take this opportunity to give the team behind this game proactive credits

Link to comment
Share on other sites

  • 5 months later...

it's been a while, but here is an update, it's an example for a main menu and an intro crawl.

The intro is rendered in the browser in real-time. At least in the tests in my lab. :-)

 

(This BBCode requires its accompanying plugin to work properly.)

Link to comment
Share on other sites

  • 1 month later...
Whoa. For real?

 

Yes , I guess this project is real enough. :-)

 

Anyways, due to stubbornness issues, I kept on working on this Sisyphus job, and I came up with an example for Character Creation screen

 

ko_character_creation.jpg

 

it's actually interactive, so if you go to http://dhkgames.com/games/ko/ you can start clicking on those icons and the model changes based on the race or the class buttons you press

 

of course, this is just an example, and if I may be so bold to refresh everyone's memory, my arms and eyes are not working very well, so I'm not really using them, except the eyes every once in a while. so for healthy and talented person my work may be just average, but in my case, the lack of access to traditional resources, like healthy hands/eyes may possibly be an above average achievement.

 

I wouldn't mind if my tale would become inspirational for some, I mean, how often you get someone with dysfunctional eyes and arms to work with 3 DS Max, Photoshop, Flash Builder, and so on. I mean, I can see at the best of my abilities maximum of 10 lines of code at the time on the screen, and I'm using 3 DS Max with voice recognition software only

Link to comment
Share on other sites

  • 5 weeks later...

Another milestone report that I am particularly very, very proud of: a dialogue system.

For the way it looks I opted on the Mass Effect dialog wheel.

For the way it works, I opted in reverse engineering the one used in KOTOR1/2 games

by reverse engineering I mean that I'm using the GUI interface created by TK102 years ago for the original games, export the dialogue, convert it to XML, and I wrote my own XML parser.I'm using TK102 GUI interface because it's an awesome piece of software, and easy to use, and works perfect for my dialogues, as I don't have to edit XML in plaintext. The current dialogue example is actually a stripped version of an actual kotor2 dialogue, that I used as a placeholder for illustration purposes

 

one of the novelty that I'm proud of is actually opting for using voice over for the NPC replies. My design choice was to use online MP3 streaming directly from the online server, it may not work super perfect for everyone because it happens that my online server is hosted in Singapore, and of course it's faster on my local testing lab. also the XML for dialogue entries/replies and their associated strings are also located on the online server and downloaded and parsed in real-time, well, sort of. :-)

 

Regardless, I would very much appreciate if you guys give it a try, and see what I mean

http://dhkgames.com/games/ko

 

another thing that I implemented is parsing the conditions for the dialogue nodes. In the current example, if you press the comma key, it switches a condition ATTON_JOIN from false to true and vice a versa. If you click on Atton, by default, this condition is false, so the dialogue lines refer to the player as itself, i.e. "I'll be going now.".

But try this, after you exit the dialogue, press the comma key, the condition will turn to true, so now when initiated again the dialogue will show as "let's get moving.", Because now the dialogue parser sees the conditions and evaluates atton as being part of the party now.

 

still to do is how to handle enabling quests based on which dialogue node is selected

 

ko_dialog.jpg

Link to comment
Share on other sites

I've seen different fan projects from a variety of games in the past and unfortunately one thing a lot of them have in common is that they never seem to get finished and become playable. This on the other hand looks very well made and I can tell that no matter how long it takes to be complete it is still going to be worked on in the future. Can't wait to see what is added next and keep up the good work!

Link to comment
Share on other sites

Thank you all for the positive comments and feedback!. I still want to point out that making this a team project it would give it a better chance to succeed, because my current health condition allows me to move it forward at a snail speed. :-)

 

Below you can see an unedited example of how cumbersome is to me to perform trivial tasks in 3 DS Max, Photoshop, and adobe flash builder using voice recognition software, and in this example should be proof enough that I would be able to finish in the next 30 years or so, and then happily retire. :-)

 

(This BBCode requires its accompanying plugin to work properly.)

Link to comment
Share on other sites

  • 3 weeks later...

in the past few weeks I worked on a simple quick bar

 

ko_quick_bar.jpg

 

for the way it looks, I borrowed the already existing images from SWTOR, and I did some cropping

 

for the way it works, originally I was planning to use Dragon Age Journeys libraries,which I reverse engineered last summer, but I ended up writing my own libraries, mainly because I use starling and touch, and Dragon Age Journeys uses old-fashioned mouse events, so I decided to reverse engineer the way it works from SWTOR using trial and error, so to speak. :-)

as of now, the way it works is very very similar to SWTOR in terms of talents drag-and-drop on the quick bar, the way quick bar slots behave when they have already existing icon or when our empty, etc.

 

But I still used some libraries from Dragon Age Journeys related to the way talents are assigned to the character based on class/race/origin. This is FYI, and the team behind this game deserves the credits

 

for the next milestone, I'm considering working on a skill tree, And for the way it looks I'm considering Something related to Dragon age 2, rather than Dragon age journeys or SWTOR Or KOTOR…

Link to comment
Share on other sites

I don't know if Daz studio, XNA, Zbrush, or Blender can make stuff that will work in 3DSmax... There's a ton of little (and some big) things out there that just might work well if they do. I know Poser is kind of halfway between the freebies and 3DSmax and I hear big boy render artists talk about it all the time. And surely Gmax could understand much of the same. The question is compatability to conversion.

 

I like what you're doing though. If I wasn't such a big fail right now, I'd have a machine that could maybe do more and try to help in the 3D. :)

Link to comment
Share on other sites

  • 2 weeks later...

Another update: I worked on Skill Tree/Abilities interface

 

ko_abilities.jpg

 

for the way it looks, it ended up with a mixture in between SWTOR and Dragon Age: Inquisition

for the way it works, the current proof of concept is pretty limited in terms of content, uses several different branches( talent lines) per character base class( Jedi and Soldier),but all the branches of the same base class use the same icons in different order, which shouldn't be a problem, as the content can be easily expanded consolidating skills in branches along with their details, and for proof of concept should suffice the way it is

 

as of now, there is no button to click to open the Abilities window, but you can use K key as a shortcut to open the window. The window also can be dragged around and moved, also there is a close button.

 

There are the left and right arrows to switch between branches. Clicking on a skill will display information on the right panel, and double-clicking on a skill will unlock it, and if there is a slot available on the quick bar, it will populate with the unlocked skill (except for passive skills). As requirements to unlock a skill, at this point, while still in preproduction, the only current requirement is to unlock the skills in a branch in order, starting from the top, then going from left to right each level down. Of course, this is just a placeholder to prove a concept, can be refined later on production.you can play with it, at the beginning of the game you get 4 available points

 

in the current design, each skill has a colored frame, and the color shows the skill type: INSTANT/green, TOGGLED/red, PASSIVE/blue, TARGETED/yellow.

 

for the next milestone, I think I'll shift back to 3-D from 2-D, and maybe work a bit on bringing some weapons into the scene, and perhaps some basic combat interaction and animation

 

 

now, I would like this community to get involved and help expanding the content related to skills, skill names, skill details, talent lines, talent lines names, talent lines details, and so on

 

What is needed is a disciplined person and someone willing to take creative freedom if needed from Star Wars canon

 

1.for the disciplined side, at this point there are already 4 different classes, each with about 60 icons that need details, such as skill type, skill description, skill name, skill display name, skill upkeep, cooldown, range, range type, etc. and discipline, autonomy and attention to details should be very handy to complete such task

 

2.for the creative freedom side, someone to come up with creative talent lines names, and so on, should work fine

 

So don't be shy, and volunteer, and get involved, and hopefully that would also help me to give me a reason to stick around and keep trying to be zoon politikon…

Link to comment
Share on other sites

  • 3 weeks later...

Part of this would depend on how you're structuring it if you want more than general information. I'm knowledgeable in lore such as lightsaber/force forms, but I'd have to understand how it works--or do you need input on how to work it out BASED on lore?

 

i.e. Form IV Ataru: a style invented during a time when Jedi were increasingly being called upon to be peacekeepers in the galaxy. Called the aggression form, it was meant to give greater power and finesse to the wielder.

 

Being an acrobatic style, it relies upon the wielder's agility to maneuver and dodge using kinetically enhanced movements, with elaborate linked combos for the bladework.

 

Its downside is that this style is more geared towards dueling, is rather poor at blaster deflection, and mediocre force grounding to defend from force based attacks.

 

 

 

Just as an example.

Link to comment
Share on other sites

  • 3 weeks later...

the following message will be long, so I'll split it into sections:

1. progress update

2. skills topic related additional information/code

3. miscellaneous

 

1. progress update

 

Update: groundbreaking milestone. :-). In the past few weeks I worked on changing the background design from 2-D to 3-D. The main reason was that in the previous 2-D design I realized I have a depth issue, when the 3-D characters are intersecting the X and Y coordinates, there was no algorithm To handle which character is "in front". So I went back to the drawing board, put the pencil in my mouth ( literally, I can't use my arms remember), and doodle on some paper to understand how this magic 3-D/2-D projection works. Lucky me, I took some trigonometry classes in high school almost 25 years ago, And eventually I remembered how to use sine and cosine, And finally I came up with an equation

2-D (x,y) = 3-D(x,y*sin( camera_angle),y*cos( camera_angle))

that fixed my depth issue. Unlucky me, due to my eyes issue, I couldn't use the Internet very well, so I was forced to rediscover America, so to speak, by myself, and it took a while, my doodling on paper to figure out camera angles and plane rotation wasn't very easy to read, as you can imagine :-)

long story short, now the background is 3-D, the 3-D characters are happily moving in a 3-D world and I also have the equation to project 2-D screen coordinates into 3-D world, so now the characters have apparent depth with an orthographic camera projection.YAY!

 

. I also added a light saber on the Jedi related classes, currently the light saber randomly picks a blade color,Red, green or blue

 

ko_depth.jpg

 

2. skills topic related additional information/code

@Darth Avlectus

 

. The more technical information about the skills design is as follows:

a) there is a simple class I created as part of my project called Skills where I literally copy pasted the skills names I found In the original SWTOR, please note that the skills names are different than their equivalent display name, this is how it was in the original SWTOR game. Excerpt for illustration purposes below

 

package packages.skills
{
public class Skills extends Object
{
	public static const CONSUMABLE:int=10;
	public static const ABSORBTIONFIELD:int=1001;
	public static const ACCOMPLISHEDSAWBONES:int=1002;
	public static const AGONIZINGSABER:int=1003;
	public static const AIMBOOST:int=1004;
	----------------------Etc.-------------------------
	public static const WEAPONCHARGE:int=1219;
	public static const ZABRAKSWORDSMAN:int=1220;
	public static const ZABRAKTRACKER:int=1221;

	public function Skills()
	{
		super();
	}
}
}

 

Basically, I assigned integers to the skills names instead of a string, because it's faster to process integers in real-time, rather than strings, I learned this trick reverse engineering Dragon Age Journeys

 

b). I also created another class called Skill (. This time, singular instead of the previous class, which is Skills, plural, I know, not super creative :-))

in this class I take each static constant skill from the previous class and I add the extra information, such as

 

public var skillId:int = 0;
	public var skillName:String="Skill";
	public var skillDisplayName:String="Display Name";
	public var description:String;
	public var shortcutSlot:int=-1;
	public var talentLine:TalentLine;

	public var damage:int=0;
	public var penetration:int=0;

	//if positive value refers to stamina/force cost, if negative value refers to health cost
	public var cost:int=0;

	//if array length is 1, then range is a sphere with a radius and a cell starting point as center
	//otherwise, range is a cone with length and radius
	public var range:Array=[];

	//for toggled skills
	public var upkeep:int=0;
	public var toggledOn: Boolean = false;

	public var fatigue:Number=0;//in percent
	public var cooldown:int=0;//in seconds

	private var requiresStrength:int=0;
	private var requiresDexterity:int=0;
	private var requiresConstitution:int=0;
	private var requiresIntelligence:int=0;
	private var requiresWisdom:int=0;
	private var requiresCharisma:int=0;

	public var type:int=-1;
	public static const TYPE_TARGETED:int=1;
	public static const TYPE_TOGGLED:int=2;
	public static const TYPE_PASSIVE:int=3;
	public static const TYPE_INSTANT:int=4;

 

then, later in the code I initialize Each skill and add the actual details, something like this

 

private function initialize() : void
	{
		switch(skillId)
		{
			default:
			{
				break;
			}
			case Skills.CONSUMABLE:
			{
				skillName = "consumable";
				break;
			}
			case Skills.FORCEARMOR:
			{
				skillName = "forcearmor";//this string here Is the actual display name as seen by the player
				type = TYPE_PASSIVE;
fatigue = 10;
cooldown = 30;
------------- etc.--------------
				break;
			}	
	}

 

this class is the one that needs a discipline person to update according to the values from SWTOR, I couldn't find a way to port them automatically through code, so a person needs to go to a website with SWTOR Skill Calculator and manually take the values from that website for each class and copy/paste them into this class

 

c)Similar to the Skill class, there is also A Talented Line class, where the skills are grouped together, and assigned to a class

 

package packages.skills
{
public class TalentLine extends Object
{
	public var treeId:int=0;
	public var unlocked:int=0;
	public var skillIds:Array;
	public var type:int;
	public var description:String;

	public static const UNDEFINED:uint=0;
	public static const TYPE_BASE:uint=1;
	public static const TYPE_CLASS:uint=2;
	public static const TYPE_ADVANCEDCLASS:uint=3;
	public static const TYPE_SPECIALIZATION:uint=4;
	public static const TYPE_RACIAL:uint=5;
	public static const TYPE_ORIGIN:uint=6;
	public static const TYPE_WEAPON:uint=7;
	public static const TYPE_FORCE:uint=8;
	public static const TYPE_OTHER:uint=99;

	public static const JEDI:uint=101;
	public static const CONSULAR:uint=111;
	public static const GUARDIAN:uint=112;
	public static const SAGE:uint=121;
	public static const SHADOW:uint=122;
	public static const SENTINEL:uint=123;
	public static const PROTECTOR:uint=124;

	public static const SOLDIER:uint=201;
	public static const OFFICER:uint=211;
	public static const SCOUNDREL:uint=212;
	public static const COMMANDO:uint=221;
	public static const VANGUARD:uint=222;
	public static const GUNSLINGER:uint=223;
	public static const SMUGGLER:uint=224;

	public static const DUAL:uint=301;
	public static const TWO_HANDED:uint=302;
	public static const RANGE:uint=303;
	public static const ARMOR:uint=304;
	public static const IMPLANTS:uint=305;

	public static const CONTROL:uint=401;
	public static const SENSE:uint=402;
	public static const ALTER:uint=403;

 

And something like this to group the skills together

 

		
	public function TalentLine(id:int, index:int)
	{
		skillIds = new Array();
		treeId = id;
		switch(treeId)
		{
			case JEDI:
			{
				skillIds = [ Skills.FORCEARMOR, Skills.AURAOFCERTAINTY, Skills.AURAOFRESISTANCE, Skills.CHARGEDUPFORCE, Skills.COOLHEAD, Skills.DISTURBANCE, Skills.ENERGYREBOUNDER, Skills.FORCESPEED];
				type = TYPE_BASE;
				description = "Experts in this style can do fancy stuff or something, I'm not a writer.";
				break;
			}
			case SOLDIER:
			{
				skillIds = [ Skills.CRIPPLINGFIRE, Skills.FIRSTAID, Skills.MEDICALCRATE, Skills.MEDSHIELD, Skills.MIRILANTRADER, Skills.MIRILANYOUTHLEADER, Skills.OUTERRIMVETERAN, Skills.TERMINATE];
				type = TYPE_BASE;
				description = "Experts in this style can do fancy stuff or something, I'm not a writer.";
				break;
			}

 

the same discipline person is needed here to do the same with the Skill class, and manually group relevant skills into relevant talent lines, and by relevant I mean relevant To a character class, for example, a Jedi consular has Jedi talent line , But also force related talent lines, specialization talent line, advanced class talent line , and so on…

 

Getting one of you involved actively to help me out by implementing what is required Above would be super awesome :-)

 

, please contact me if you need the full classes, believe me, you don't need to know how to program in order to update this classes, you can do so in any text editor such as Notepad

 

. Also, please note that in the talent line I actually took the creative liberty to create a new Guardian related class called Protector, for some reason I didn't like the original SWTOR approach with creating a Jedi Knight class and split that into Guardian and Sentinel. I think I like it better having Guardian as the class and split into Protector and Sentinel. This is an example of creative liberty I mentioned Last month…

 

3. miscellaneous

a)@Sheldone, I see you joined this forum for this project, so please volunteer. :-)

 

b) On a personal note, couple weeks ago I had surgery on one of my arms, I don't feel any improvement yet, but it may take few months, so I'll see if I get somewhat better in the next few months or so, meanwhile, once again, please get involved

 

. Thanks for reading!

Link to comment
Share on other sites

  • 3 weeks later...

I created an account just to say how amazing this how thing is. The fact that you're doing this all without the use of your arms/hands makes it even more so.

 

Anyways, this is very cool. I laughed when I saw you were using Autodesk. Best I can do with Autodesk is make little blocks and really simple designs. Can't even do 3D objects, just the appearance that they're 3D.

 

Also saw some of your KotOR III videos. They looked really cool. Looked like a next gen KotOR.

 

By the way, I only get about halfway through the "Loading SEA3D scene".

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...