Blue

[WIP] KotOR JS - A Game Engine For K1 & K2 Written In JavaScript

Recommended Posts

Great work so far! The engine looks awesome! Many Kudos!

Are there any plans to port KotOR JS to Android or IOS in the forseeable future?

  • Like 1

Share this post


Link to post
Share on other sites

I've got another small update. This time it's on the KotOR Forge Modding Suite.

I took a break from coding over the holidays, so work has been a bit slow on the engine 😇. I had a bit of inspiration over the past couple of days and whipped up a visual lip sync editor. It's still early on, but It will be available for testing in the next release. As always I've thrown in a short video preview below of some of the things it can already do.

Key Features List

  • Timeline Editor for easy Keyframe scrubbing and editing
  • Preview heads for visual aid
  • Preview audio that tracks with the timeline
  • Auto loads in audio from the game assets if the lip filename matches

Let me know what you all think, and if something like this would be useful. 😃

I'm also thinking it should also be able to add .PHN support since someone seems to have uploaded a version to the site. I just can't get it to install properly on my windows 10 machine. Looks like i'm getting the same error as another person in the support thread for it. 😞

Edit: I was able to get CSLU Toolkit working after some help from @Ashton Scorpius. After referencing the conversion table in LipSyncEditor I was able to get PHN imports working yay!

 

Oh and a little housekeeping....

On 12/14/2018 at 5:14 AM, JediArchivist said:

Great work so far! The engine looks awesome! Many Kudos!

Are there any plans to port KotOR JS to Android or IOS in the forseeable future?

I don't currently have any plans to do that atm. Thanks for the feedback!

  • Like 4

Share this post


Link to post
Share on other sites

Damn, this just looks incredible so far. I consider myself lucky that something like this is in the works while I'm still new to KOTOR modding. 

Just one question: Will this engine allow you to reload textures or whatnot in real time? Having to restart the game dozens of times has become the bane of my existence.

Share this post


Link to post
Share on other sites

Hello!

Kudos for the nice small update there! The CSLU toolkit works only on older, unsupported OS so even if it is possible to run it in VirtualBox many would really welcome having a new lyp synching software that works natively on Windows 10. So a big yes to .phn support!

Cheers!

Share this post


Link to post
Share on other sites

I really look forward to using some of these tools hopefully during the development of my mod if they are released during the development of my mod.

Your overall work is amazing and have a few really interesting thoughts about things that could be done with this and wonder what your thoughts are on the idea for re-integrating online play and options for the game.

My thoughts were to add a single player not part of the story-line who could join another player in their main story and follow alongside them at any point during the game.

I already have this planned for my mod, but wonder what information you might have come across that could be useful for me in the process of this engines development.

Stunning work once again and I really look forward to seeing more!

Thor110

Share this post


Link to post
Share on other sites

I know it's been quite a while since I made any announcements on this project. 2019 was a very busy year for me. Even so, I was still able to work on the code a bit, and pushed code updates to the GitHub repo every so often. 2020 is still looking to be just as crazy if not more. I'm hoping to be able to post more updates on my progress. I've compiled an alpha build for anyone to test out. It can be downloaded from the release page of the GitHub project here: https://github.com/KobaltBlu/KotOR.js/releases/tag/v0.0.1 

Download and unzip the contents somewhere. KotOR-js.exe is the main executable. When you run either game or the toolset for the first time, it will ask you to locate the game directory for the original games first. After that you should be good to go.

It is an alpha so expect some things to be broken and or act weird.

Compatibility Note: This is a 64bit build. I also believe it only supports win7 and up.

I'm always eager to hear any and all feedback!

 

This project continues to be a lot of fun to work on, and it's always forcing me to push the boundaries of what I know about coding and game design. If I can say something of encouragement to the new modders or coders that may be out there browsing these forums. It would be to chase that crazy idea and push yourself to try. When you spend hours and hours writing code or creating a mod, that feeling of seeing your hard work finally bear fruit is amazing. I can't count how many times i've seen modders discouraged from attempting projects because other people think they are biting off more than they can chew. I know that if I would have announced this project when I was just beginning, I fear I would have received similar remarks from some. The thing is that you very well might be over your head, and thats ok! Failure doesn't have to be the end of the road, it can be a stepping stone to better things if you learn something along the way and apply it the next go around. At least that's how I see it 😅.

Anyways I apologize for rambling on, I'll sign off for now! 

  • Like 2
  • Light Side Points 2

Share this post


Link to post
Share on other sites
3 hours ago, Blue said:

I can't count how many times i've seen modders discouraged from attempting projects because other people think they are biting off more than they can chew. I know that if I would have announced this project when I was just beginning, I fear I would have received similar remarks from some.

That's all well and good, just don't actually announce your project until you actually have something tangible. The internet is a graveyard of big idea projects that ended up going nowhere (I've been involved in some myself).

Still, well done on progressing this far, although on my end I can't get past the initial player spawn-in in K1, or even past the initial class selection screen in TSL. Which is a shame, because I like that there appears to be the option to visualise triggers and so forth - that could be a very useful debug tool.

I haven't given it more than a cursory examination yet, but the Forge component looks like it might be useful to ease people into modding.

By the way, might I suggest an option in the settings to disable internet access? I'm not sure what you are trying to pull from Steam or DS, but I am not a fan of offlline applications that think they deserve unrestricted network access, especially without even asking first.

Share this post


Link to post
Share on other sites
6 hours ago, DarthParametric said:

Still, well done on progressing this far, although on my end I can't get past the initial player spawn-in in K1, or even past the initial class selection screen in TSL. Which is a shame, because I like that there appears to be the option to visualise triggers and so forth - that could be a very useful debug tool.

I haven't given it more than a cursory examination yet, but the Forge component looks like it might be useful to ease people into modding.

By the way, might I suggest an option in the settings to disable internet access? I'm not sure what you are trying to pull from Steam or DS, but I am not a fan of offlline applications that think they deserve unrestricted network access, especially without even asking first.

Looks like I left in some buggy code with GetNPCAIStyle that was causing an infinite loop. There are still a few pieces of NWScript that act oddly. The new download can be found here https://github.com/KobaltBlu/KotOR.js/releases/tag/V0.0.2

I never completed the TSL New Game quick start menus like I did in KotOR. It wouldn't take much for me to get them working. Honestly most of the time I use the Dev Console to warp to modules or use the Load Save menu.

The Dev Console can be opened by using CTRL + SHIFT + I and then using a code like

Game.LoadModule("danm14aa");
//or
Game.LoadModule('101PER');

Will open a module with a predefined character template i hardcoded.

The steam internet access is used to fetch the art assets for the games used in the launcher. The deadlystream access was being triggered by left over html code inside the launcher. Originally I had another tab called Deadlystream with an iframe view of DS. I took it out because i figured it would weird some people out, but I guess I forgot to remove the iframe code in the process. I disabled the code in question in this release.

 

6 hours ago, DarthParametric said:

That's all well and good, just don't actually announce your project until you actually have something tangible. The internet is a graveyard of big idea projects that ended up going nowhere (I've been involved in some myself).

I believe your heart is in the right place, but I have to disagree with you there. The major side effect of that kind of gate keeping forces people to work on their stuff in a vacuum outside of the modding bubble. If those projects die in that space and no one knows about them, then any work and or discoveries they made wont flow back into the community. A "graveyard of big ideas" as you put it, is the result of the creative process at work. Attempting to  "clean up" that process and or gate keep tends to stifle creativity IMHO.

Share this post


Link to post
Share on other sites
48 minutes ago, DarthParametric said:

I might check it out again when development is a tad further along.

No worries! Thanks for taking the time to check it out :thumbup:

Share this post


Link to post
Share on other sites

I will say that despite the spaghettification and other wonkiness, it does seem more functional than Xoreos, which is a notable achievement. I doubt I'd ever actually consider it for a playthrough before it was fully feature-complete, but if you manage to incorporate some debug-style features then I can see its utility for mod testing even in a semi-complete state.

Share this post


Link to post
Share on other sites
On 6/24/2020 at 10:41 AM, DarthParametric said:

I will say that despite the spaghettification and other wonkiness, it does seem more functional than Xoreos, which is a notable achievement. I doubt I'd ever actually consider it for a playthrough before it was fully feature-complete, but if you manage to incorporate some debug-style features then I can see its utility for mod testing even in a semi-complete state.

Yeah there are still too many scripting issues that keep areas like the endar spire from being 100% playable. Mileage varies from area to area. There is still quite a few menus that still need to be implemented.

What kind of debug features do you have in mind?

Share this post


Link to post
Share on other sites

Well for starters, just allowing the vanilla Bioware ones to work. Almost all vanilla scripts have debug outputs that are disabled by a simple check to see whether it is running on the retail/shipping build. If you can find out how to get that check to fail, that should allow for said scripts to pipe various debug info to the screen and also an external log file. Poking through the exe, you can see reference to "ProductVersion" and "PrivateBuild", which may be relevant.

Share this post


Link to post
Share on other sites

I've recently been able to do some work on combat animations. For a while now I've been trying to understand how the "fancy" melee on melee combat animations are triggered. This took me a while to figure out because I thought they were controlled by the combatanimations.2da. It appears that all other attacks are handled there except for this particular scenario. I believe this was hardcoded to act this way in the original game, and that is why they are not present in the combatanimations.2da.

If the attacking creature is using a basic melee attack, and the target creature is using a melee weapon, and they are both directly attacking each other. Then the attacker and target uses a variation of c*a*, c*d*, and c*p* depending on if they were hit or parried.

c*a1, c*a2, c*a3, c*a4, and c*a5 are for attacking (Attack Animation)

c*d1, c*d2, c*d3, c*d4, and c*d5 are for damaged (Target Response Animation)

c*p1, c*p2, c*p3, c*p4, and c*p5 are for parrying (Target Response Animation)

When the attack is queued up a random number is rolled returning 1,2,3,4, or 5 and then proper attack animation is then chosen. Once the attack result is calculated the appropriate response animation is chosen for the target.

Example Scenario:

So if the the attacker is using a single one handed weapon, and the basic attack random animation number is 4, then the attacker will use the animation c2a4. If the attack hits, the target will use c2d4. If the attack misses, the target will use c2p4.

Note: If you are confused by the naming convention for combat animation be sure to check out this post: (Analysis of the Combat Animations) by @JCarter426.

Here is a video demonstration of it in action.

 

  • Like 7
  • Light Side Points 2

Share this post


Link to post
Share on other sites

This is AMAZING.  @Blue, you have done a great thing.  I am hugely impressed by your dedication to this, and the fact that it is still in development.  I am going to GIT it ASAP and see if I can contribute somewhere.  And if not, you at least have my sincerest appreciation and admiration for taking it on.

I will take a look at the code, but one of the things that has always bothered me in the games (since I bought them at release a million years ago) is the timing.  Good example from your most recent update - in between the attack/parry animations there is a long pause.  I'm guessing that game ticks are tied to RT clock ticks in order to keep everything visible (and to give the player the ability to interact in a real combat situation,) or else the animations have dead time built in.  It would be neat to see if there was a simple way to make it more fluid - pull out idle frames or idle ticks, or decouple the clock from the animation.

Share this post


Link to post
Share on other sites
On 3/5/2024 at 12:17 PM, backagain said:

Is this project dead?

No. Look at the project website and repo to see its latest updates.

Share this post


Link to post
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.