Utinni - A client plugin and injection Framework

Timbab

Administrator
Staff member
Administrator
Moderator
Joined
Oct 6, 2010
Messages
1,058
Location
Magna Germania
Utinni is a client plugin and injection framework which aims to provide an easier access to client and content development for Pre-CU Star Wars Galaxies and more specifically SWGEmu.

The source code for Utinni can be found here.
The source code for The Jawa Toolbox plugin can be found here.




Features
  • Gizmo implementation via ImGuizmo
  • C# Plugin Framework
  • C++ Plugin Framework
  • Undo/Redo Framework in C#
  • Hotkey Framework with rebindable hotkeys and a hotkey editor
  • Settings handled via .ini
  • Editor mode built in C# with Winforms, that natively hosts the Star Wars Galaxy client inside of a WinForms panel
  • Custom WinForms form and control library
  • Offline scene mode
  • Game config override .cfg file
  • Cmd passthrough for the launcher, enabling game settings being set via Windows shortcut
  • FreeCam, including the ability to hide the player model (Only works in freecam)
Key planned features
  • WinForm color themes (Almost done)
  • Settings editor
  • Game CUI Framework which allows the modification of existing UI elements and the creation of new
  • Expanded FreeCam controls
  • Setting to automatically attach Visual Studio on injection (Partly working)
Known list of current bugs/issues
  • Particle and sound objects aren't targetable
  • Placing a building object with a Terrain Layer (.LAY) attached, causes the terrain shader to glitch out. Reloading the scene solves it.
  • Crash on adding Snapshot objects on terrain where no snapshot is loaded (terrain/simple.trn, etc)
  • Potential bug where freecam controls stop working (Unable to replicate)
  • Cursor is visually stuck in a smaller top left rectangle area when the window is maximized on game load
Third party libraries used:
Credits
  • James Webb (Sytner) -- Pushing me to release and being a helping hand when I get absolutely stuck
  • Borrie BoBaka -- Being there and supporting me from the very start of the development, invaluable testing, bug hunting and quality of life suggestions helped forge Utinni into what it now is
  • mezzanine -- Being there and supporting me from the very start of the development, testing and experimenting with plugin development

Utinni can be downloaded here.
The Jawa Toolbox plugin can be downloaded here.

In case plugins don't load, try to unblock plugin .dll files via the Properties window in Windows. A guide can be found here.


If you want to donate and buy me a coffee, or, since we're in corona times, toilet paper from the black market, I won't say no! You can do so by clicking here.
 
Last edited:

Timbab

Administrator
Staff member
Administrator
Moderator
Joined
Oct 6, 2010
Messages
1,058
Location
Magna Germania
Great job stealing all/most? of my RE work and not even crediting it ;)

PD: https://github.com/TheAnswer/GalaxyExtender/tree/local/SWGCommandExtension
You can't actually be serious, right?

Or do I need to remind you again that my first video of a client injector predates your fork (In 2017) of someone else's injector that was merely about graphical overrides, by a couple of months? Or the chatlogs of multiple people from SWGEmu, including you and myself, discussing client injection and things that I've figured out already, back in 2016, including a google sheets doc containing a list of features which you then ended up implementing yourself into your fork (Which is fair game, as I hadn't released by that point yet, as TJT only first released in 2018)? :p

My first public demo back in September 2016

Second Toolbar back in October 2016

FreeCam back in 2015

Unless you mean command parsers in particular? To which I'd say, our code isn't alike at all and you didn't invent them, SOE did. :D You're manually patching vtables for example, I'm not, I'm 'naturally' extending the SWG's class with properly set up classes that use inheritance.

Or do you mean SOE's 4.5.3 STLport wstring implementation? To which I'd say. 1. there are only so many ways you can reimplement reverse engineered classes, 2. you didn't create the original STL wstring, 3. our implementation are both different.

I hope your post was in jest. :)
 
Last edited:

TheAnswer

SWGEmu Staff
Joined
Oct 30, 2020
Messages
2
I hope your post was in jest. :)
Kind of... But you do seem to be intimately aware of my work.
Anyhow... to be honest I am past caring about emu things, and I am kind of glad someone is actually trying to hack the client properly instead of just using cheat engine and memcpies.

Another fun project that I should upload somewhere is the complete decompile of the gfx api and the ability to switch to NGE ones which have some nicer features.

PD: 90% of what you see in that github repo was done by me in ~2007-2008 privately to be able to implement SWGEmu...
 

Phoenix

Moderator
Staff member
Moderator
Joined
Sep 25, 2010
Messages
230
Kind of... But you do seem to be intimately aware of my work.
Anyhow... to be honest I am past caring about emu things, and I am kind of glad someone is actually trying to hack the client properly instead of just using cheat engine and memcpies.

Another fun project that I should upload somewhere is the complete decompile of the gfx api and the ability to switch to NGE ones which have some nicer features.

PD: 90% of what you see in that github repo was done by me in ~2007-2008 privately to be able to implement SWGEmu...
That would be a nifty upload TA (If you do decide to upload it). Always appreciate the hard work you have done for us!
 

Timbab

Administrator
Staff member
Administrator
Moderator
Joined
Oct 6, 2010
Messages
1,058
Location
Magna Germania
Kind of... But you do seem to be intimately aware of my work.
Anyhow... to be honest I am past caring about emu things, and I am kind of glad someone is actually trying to hack the client properly instead of just using cheat engine and memcpies.

Another fun project that I should upload somewhere is the complete decompile of the gfx api and the ability to switch to NGE ones which have some nicer features.

PD: 90% of what you see in that github repo was done by me in ~2007-2008 privately to be able to implement SWGEmu...
I'm mostly aware of the command parsing, because that was the stand out feature that differentiated it to my work back then, back when you guys first published, so that was the only thing I double checked today to ensure there wasn't any weird unintentional overlap. I like your implementation of the stl stuff 100x more than mine. :D It seems a lot more proper and scalable as it'd solve a lot of other STL issues that I've ran into, like std::map erase, where I needed to track down and hackily mirror soe via IDA.

I've always been more than fair with crediting people that helped me, I think that is what created the meme that I steal everything years ago, as I'd make it overtly clear that people like Uli or Sytner helped me out when things got rough as I was just learning to code in general. You're a way more experienced and competent dev than I am, if I had taken, copied or was inspired by anything you made, I'd have credited you without a second thought. I really hope you don't actually think I've stolen from you in the past, as that idea has been floated around for years now.

That graphics API work seems super interesting, to echo Phoenix, if you uploaded that, that'd be really valuable.

I mean I'm past the point of caring about SWG too these days. Utinni had been a pipedream of me for years now and I just wanted to finally realize it which turned into an invaluable learning project. So, I know where you're coming from when you say you're past the point of caring, but it'd be really neat if you not just uploaded the API work you've made, but also incorporated into this project, either properly or via a plugin.

I hope there isn't a rift between us anymore. I know we've both long reached the end of caring for SWG, but I'd find it personally really neat if you and I could noodle more SWG reverse engineering related stuff together in the future.
 

dsrules

New Member
Joined
Oct 25, 2011
Messages
25
90%, 10%, 1%. aslong as someone is breaking the client out im good. all tools are good tools.
 

Timbab

Administrator
Staff member
Administrator
Moderator
Joined
Oct 6, 2010
Messages
1,058
Location
Magna Germania
Just to let you guys know in case anyone runs into the same issue, there was a report of plugins not loading, this can be remedied by unblocking the plugin .dll files.

A guide can be found here.
 

Viaron

Member
Joined
Jul 13, 2012
Messages
189
ugh love this Star Wars online drama

keep up the great work cuties xoxo

ready to suck some dick for Swoobie
 

Pyvek

New Member
Joined
Nov 10, 2022
Messages
2
Hey all. New to the hosting side of the game. Love everything y'all do to keep this game alive!

I've downloaded, extracted, and pointed the app to my SwgClient_r.exe location.
I've unblocked the DLLs, tried to run as administrator and without, and also in capability mode for windows 8, 7, and without compatibility in my windows 10 desktop.

When I open the Launcher.exe the SWG login appears but then closes almost immediately.

I can open the SwgClient_r.exe outside of Utinni without any issues. (I have also tried open as administrator (all users) and various compatibility modes (all users) for SwgClient_r.exe as well.)

If this is not the place to post this, I'll move it, but does anyone know what I'm missing?
 

Borrie BoBaka

Local Bothan
Staff member
Super Moderator
Joined
Mar 16, 2014
Messages
91
Location
Dark Rebellion RP
Based on the name of the EXE you're mentioning, I suspect you might be using a version of SWG that is not supported by MTG, or Utinni. Utinni will only function for 14.1 SWG Clients for SWGEmu.

Any other versions will crash and there won't ever be support for other versions due to lack of interest and the significant amount of work required to do so. Sorry to bear unfortunate news.
 

Pyvek

New Member
Joined
Nov 10, 2022
Messages
2
Gotcha. Thanks Borrie. I am using the version from a default? virtual machine. I was hoping it worked there.
 
Top Bottom