Jump to content

Online Character Build Browser


Cipher

Recommended Posts

On 2/22/2020 at 7:58 PM, Cipher said:

 

 

After this first stage I may continue developing it into a full build editor and planner, but in the meantime I’m looking forward to hearing what you all think and incorporating your ideas and feedback!

 

Would it be possible for to extract our character data into a CSV or Excel file? For no other reason that looking at my character information and to see interesting data, like which power I take most often(I actually know that one, it's Combat Jumping. I don't think such an export would need to be anything pretty or have any formulas in it already. 

Link to comment
Share on other sites

7 hours ago, Sif said:

Now that I finally stopped being lazy and implemented the last missing feature for being able to parse the powers.bin (100% coverage now!), I intend to write down what I've learned on how to parse the format. I'm not sure if anyone else would be interested in my parser's code, since I don't think anyone else is working with Rust.

A few weeks ago I was bored. I started messing around with Python trying to read/extract data from piggs. I was using this link and this link as references. I'm not a programmer. But I was/am interested in how the pigg/bin/geo files work. I have been reading what documentation I can find but as of yet haven't dug into any of the code for the existing parsers (sometimes I enjoy reinventing the wheel). I would find any documentation (or code) you were willing to share to be interesting. I've actually been bouncing between trying to parse piggs and doing the Rust tutorials in my free time. So even more interest from my end.


I appreciate those who are willing to share their CoH related knowledge and code.

 

7 hours ago, Sif said:

Neat.

 

 

Edited by FallenHero
Missing links
Link to comment
Share on other sites

3 hours ago, FallenHero said:

and this link as references

As a heads up, the bin format described there is for Parse6, which is used by the i24-based servers. HC uses Parse7, which is mostly similar, but primarily treats strings differently (I'm not sure all the differences, since what I know of parse6 is only from the time I spent accidentally working on pre-sunset pigg files instead of the HC files!)

Link to comment
Share on other sites

On 2/24/2020 at 11:20 AM, The Philotic Knight said:

To make a long story short (too late!), IMO there needs to be a White Paper (or white papers) for the CoH codebase

I think you are expecting a lot for a commercial game that had its code leaked. Maybe calm down a bit? And not be so upset at the Homecoming devs who are trying to do their best while legal negotiations are taking place? Besides, you (and everyone else) has access to the i25 server files. The only thing they have that we don't are our character data and the Homecoming server customizations. 

 

You've already referenced the Ouro wiki, which has a ton of resources. I don't have programming experience but I can see quite a few resources that could easily be reverse-engineered to figure out how to make things work. Someone interested enough just has to learn it. The information is out.

 

Specifically for the .bin files, I see there's already python code, something like "CoHTools" on GirHub: https://github.com/ovekaaven/cohtools

 

I found that reading through what's in Ouro wiki, which you already seem to be aware of, but not digging deep enough into.

  • Like 1
  • Confused 1
  • Sad 1
Link to comment
Share on other sites

@Olly a four year old parsing tool that references specific memory addresses for just one version of the bin files from before the leak does not a "white paper for the CoH codebase" make. And as for the OuroDev wiki? It's currently a largely disorganized set of ideas, which even Clowd, the head of OuroDev has admitted to me directly is sorely neglected for a lack of interest. It looks like I'm the only one that seems to care about documentation. So, I'll work on my little project. And, when it's done, I'll release it, along with documentation on everything that I learned along the way, as @RubyRed has stated that they are going to do, and as too few have done before.

  • Like 4
  • Thanks 1
I'm out.
Link to comment
Share on other sites

4 hours ago, Olly said:

Specifically for the .bin files

@The Philotic Knight, correcting your statement. ** Not ** equating that python code in github to a "white paper".

 

Also, what is wrong with that python code? The codebase had been stable since 2012-ish.  Wouldn't someone be able to reuse 90% of it? And couldn't you reverse engineer it to get to the powerset and IO data you wanted, or at least 90% of it instead of crawling through manually? I'd think updating the python code would be a far easier task than reworking everything from scratch. I'd ask you be open-minded about this rather than rejecting the idea outright. 

 

Or also, why not use Mid's dataset? It's already on Github as a db.

 

I'm curious.  

 

Link to comment
Share on other sites

Nothing is wrong with the code itself, from what I can see, it seems perfectly competent. I just disagree with the methodology. It's the same route that DragonSire took with his application - trying to duplicate and enumerate the structures ahead of time based on what's in the existing code. It's fine - if you just want to have something that parses based on what you already know. But, what about the things that you don't know about yet? If I was to make such a script or tool, it would try to "figure out" the structure in a generic way (which I already sort of am doing with my def tools that will release with my project), and then convert those structures into generic objects, which can then be interpreted by an intelligent programmer. I wouldn't bake the definitions into the tool - the definitions should be baked into the other code that USES the tool to decompile/compile the data. But then, I guess I might be a bit different from most coders - sure, I'll take the "path of least resistance" to get the initial result that I want, but then I'll go back after I get that result to try to "do it right".

 

Why not use Mids? Because Mids is a static dataset. As you'll see when I release my code, mine is setup with a static dataset to start, sure, but I've built in a "scanning" method that you could theoretically point to any data def directory, and it will spit out another new "database" of data to use. That way, the application can be used on HC, OuroDev, CoXG, or whatever you're using - as long as you have access to the source def files.

 

Why? Because I wanted my tool to be as "time-proof" as possible, and to work going forward with as little future coding work as possible. So, rather than have a pre-set set of data structures that were pre-defined at one point in time and have to keep getting updated, I have generic methods that attempt to extract the data into generic objects, and then if the objects start to change, I should just have to change how I'm processing those objects - rather than changing the parsing itself EVERY. TIME. someone decides to change a structure.

Edited by The Philotic Knight
  • Like 4
I'm out.
Link to comment
Share on other sites

Reading that back to myself, I come off as an ass who thinks he's the best coder in the world. Far from it. I'm human like anyone else. I make mistakes, in code as well as in life. I just try, in my coding, to work from a place where I build it so that I never have to touch it again, if possible, in the future. Mostly, because I'm lazy. I don't want to have to re-write something if I can help it, so I try to write my code in a way that I try to foresee the future and make it modularly so that when and if I DO have to rewrite anything, I don't have to rewrite much, if that makes any sense.

  • Like 6
  • Thanks 3
I'm out.
Link to comment
Share on other sites

4 hours ago, The Philotic Knight said:

If I was to make such a script or tool, it would try to "figure out" the structure in a generic way (which I already sort of am doing with my def tools that will release with my project), and then convert those structures into generic objects, which can then be interpreted by an intelligent programmer. I wouldn't bake the definitions into the tool - the definitions should be baked into the other code that USES the tool to decompile/compile the data.

I've kind of struggled myself with the 'do it right' mentality when approaching this. The problem in the instance of the .bin files though is that they're not self-describing... even if you figure out that the structures of data are a series of 32-bit floating point numbers and booleans (which accounts for most of it), there's so many of them that it's nearly impossible to know what you're looking at. And if someone goes in and adds a new bit of data, it's not immediately obvious where it is or what it is, and you have to decipher that. Even though I'm referencing the i25 code from early last year, I ran into several parts that have changed since then and that slowed me down quite a bit. I'm glad I have the code to reference because this effort would have taken ten times longer if I was reverse-engineering from scratch, and I don't really have the time for that. I'll live with the fact that my code is a bit messy (but probably easier to figure out what's going on) rather than the perfect, generic solution.

That said, now that I know a lot more, I think when I'm done I'll share some tips that could save other people time if they want to go down the same route and not have to look at the CoH code base (which is an adventure all on its own).

3 hours ago, The Philotic Knight said:

Reading that back to myself, I come off as an ass who thinks he's the best coder in the world.

Nah, not really. At least not to me, I understand the mindset as I tend to approach things the same way (at first... I change my mind a lot).

  • Like 1

"We're out of options, I'll have to use the jetpack," I said, strapping on the jetpack and ignoring the many non-jetpack options still left.

Having trouble deciding your next alt? Just need a cool name? Try out City Suggests

Looking for powers data? Try the Powers API

Link to comment
Share on other sites

10 hours ago, The Philotic Knight said:

I just try, in my coding, to work from a place where I build it so that I never have to touch it again, if possible, in the future. Mostly, because I'm lazy.

"If you want to find out how to do a job quickly, give it to a lazy man," as they say.

  • Like 1
  • Haha 1

 

Tim "Black Scorpion" Sweeney: Matt (Posi) used to say that players would find the shortest path to the rewards even if it was a completely terrible play experience that would push them away from the game...

╔═══════════════════════════════════════════════════════════════════════════════════╗

Clave's Sure-Fire Secrets to Enjoying City Of Heroes
Ignore those farming chores, skip your market homework, play any power sets that you want, and ignore anyone who says otherwise.
This game isn't hard work, it's easy!
Go have fun!
╚═══════════════════════════════════════════════════════════════════════════════════╝
Link to comment
Share on other sites

7 hours ago, Clave Dark 5 said:

"If you want to find out how to do a job quickly, give it to a lazy man," as they say.

Is it better efficiency through laziness ... or better laziness through efficiency ... I can never remember.

  • Like 1
  • Haha 1

IifneyR.gif

Verbogeny is one of many pleasurettes afforded a creatific thinkerizer.

Link to comment
Share on other sites

On 2/22/2020 at 7:58 PM, Cipher said:

My current plan with this project is to get it to the point where it can be used as a fully functioning online build browser and viewer (where you can search for and view public builds) and release it as such.

This would be awesome! It would be great to have a tool like this available for when we seek build advice on the forums. Especially if we're not in a place where we could pull up Mids to export those builds for posts. 

 

On 2/23/2020 at 3:59 AM, The Philotic Knight said:

That all being said... I'm of a torn mind about this. On the one hand this looks awesome and I hope it gives people what they need, on the other... I feel like I just wasted a shit ton of my time on nothing. Ugh. I think I'll stop working on mine now. 

I know the feeling. I finished creating hi-res versions of all the AT power sets and decided to take a little break. Now I'm back and there's a new power set being developed and now they have a new power icon border to do, and I still haven't gotten to EATs/VEATs or pool powers. Ugh!

  • Like 1
Link to comment
Share on other sites

As a build browser how would we know how successful the character is/was?

 

It might be great to see some additional information beyond slotting. (badge counts and maybe some stats)

"Homecoming is not perfect but it is still better than the alternative.. at least so far" - Unknown  (Wise words Unknown!)

Si vis pacem, para bellum

Link to comment
Share on other sites

  • City Council
21 minutes ago, Troo said:

As a build browser how would we know how successful the character is/was?

 

It might be great to see some additional information beyond slotting. (badge counts and maybe some stats)

The build browser is one component of the larger system that I am working on that will have a place to view that information for characters that opt in 🙂

  • Like 1

If you need help, please submit a support request here or use /petition in-game.

 

Got time to spare? Want to see Homecoming thrive? Consider volunteering as a Game Master!

Link to comment
Share on other sites

  • City Council

Small progress update as I wrap up for the night:

  • I've started calculating and rendering attributes (numbers!)
    • This does not include global boosts from enhancements such as Shield Wall, Steadfast Protection, etc yet
  • Enhancements now properly boost the attributes of the power they're slotted in (with ED)
  • Power tooltips now show some attributes, including their base and enhanced values
  • Self-affecting click and toggle powers can be toggled on or off
    • Auto powers are toggled on by default

 

(Small demo using Defense powers. Non-pool powers hidden to condense view. Note that the UI is still temporary! Green = toggled on)

nacuGK1.gif

 

In-game from the same build:

image.png.206401a25b41fc1357ad1af9ba065293.png

image.png.8331dfa0513a0f9f0635e5342a41284c.png

  • Like 8

If you need help, please submit a support request here or use /petition in-game.

 

Got time to spare? Want to see Homecoming thrive? Consider volunteering as a Game Master!

Link to comment
Share on other sites

On 2/28/2020 at 8:15 PM, Cipher said:

The build browser is one component of the larger system that I am working on that will have a place to view that information for characters that opt in 🙂

This and the entire system seems awesome. I had this as a suggestion a while ago - or something like it. Mid's has been awesome but there should be something more official that ties right into the game and updates. I never understood how a character builder wasn't included from the start with the original dev team. 

 

Oh, am I correct in thinking this will be like Mid's but always current and tied to the game directly?

Link to comment
Share on other sites

On 3/2/2020 at 7:06 PM, BurtHutt said:

Oh, am I correct in thinking this will be like Mid's but always current and tied to the game directly?

This is supposed to be a tool that will export your current build and enhancement setup from the game to a web page for people to consult existing builds.
From what I understand, at this stage it is not meant to be a builder but a viewer.

Link to comment
Share on other sites

9 hours ago, Seigmoraig said:

This is supposed to be a tool that will export your current build and enhancement setup from the game to a web page for people to consult existing builds.
From what I understand, at this stage it is not meant to be a builder but a viewer.

Oh that is too bad. When I started this game, I jumped right into it...not having any idea about builds, slots etc. I think most find a builder essential so maybe one day it can incorporate building as well 🙂

Link to comment
Share on other sites

On 3/1/2020 at 4:10 AM, Cipher said:

Small progress update as I wrap up for the night:

  • I've started calculating and rendering attributes (numbers!)
    • This does not include global boosts from enhancements such as Shield Wall, Steadfast Protection, etc yet
  • Enhancements now properly boost the attributes of the power they're slotted in (with ED)
  • Power tooltips now show some attributes, including their base and enhanced values
  • Self-affecting click and toggle powers can be toggled on or off
    • Auto powers are toggled on by default

 

(Small demo using Defense powers. Non-pool powers hidden to condense view. Note that the UI is still temporary! Green = toggled on)

nacuGK1.gif

 

In-game from the same build:

image.png.206401a25b41fc1357ad1af9ba065293.png

image.png.8331dfa0513a0f9f0635e5342a41284c.png

 

 

when can we test?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...