You can now install it through Blish HUD and all future updates for SPARK will automatically update for you.
This version also comes with a new 'import from another character' feature to let you import existing profiles you've made from one character onto another one!
Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
β Live Streamingβ Interactive Chatβ Private Showsβ HD Qualityβ Free Actions
Free to watch β’ No registration required β’ HD streaming
I'll be doing an update for SPARK likely on Sunday (seeing how my first update on Blish HUD will go, haha).
Update will include a few various fixes and enhancements, such as:
Better Tooltips (nicer look, more crisp, better sizing/spacing)
Character counters on text fields (now you can see the max limits and know when you're getting close to them!)
Custom Races (You can be a Tengu, Kodan, etc. if you want now!)
Moved the 'Mature' designation on the profiles to a different row (if enabled on your profile). It's now on the same row as Themes, Styles, etc.
Lists (online list, saved/bookmarked, nearby players) now use "..." at the end of your field(s) if they cut off. So if you have a long name, race, account name, etc. It might cut off with ... at the end, but will always fully show in the tooltip or profile itself.
Added some extra profile validation/syncing internally on the server
Menu button for quick access to SPARK windows at the top of GW2 (can be turned off too if you don't want more icons up there!)
There might be more than just this, depending on what else I can get done, we'll see!
Thanks again for everyone who has tried out SPARK and given feedback! Happy to give back to this lovely community. β€οΈ
I just wanted to tell you - thank you for making an add-on that can be used right inside of BlishHUD. This is going to be so much more accessible for players since a lot of them already use Blish.
What does your current timeline look for the project? When do you think it might be submitted as a module on BlishHUD itself?
Thank you, that means a lot to hear!
I wanted something that was lighter on memory and used existing solutions, so making it in Blish HUD made sense since I'm already familiar with C# and use it daily. I dunno if it'll come to other addon managers, as I'm less familiar with them, and this sort of relies on the CDN that Blish provides to get game textures (at a glance search primarily). The memory usage for the addon is 30mb roughly, maybe 35mb after a long session, so it's fairly light!
For submitting it to Blish HUD, I need to reach out to get set up for submitting it and see what the full process is like still. I want the addon stable enough that I don't have any problems with it for a major release to the public. The webserver seems pretty solid so far and should in theory be able to handle a huge amount of users at once.
I think it's about ready for a full on release in Blish, assuming there's no issues with it being added.
I've just released a new version of SPARK which will allow you to see nearby players who are on the same map as you (the ones on the same map IP address show first, then it shows others on different instances!). This will also show how far away they are from you.
Nearby Players is an opt-in thing, so you need to check a box to publish your location to others who use the SPARK addon to be able to see you nearby.
Hopefully, with more testers, I can get some screenshots to show this off!
You can get SPARK here: https://getspark.fyi/
or download the .bhm file for Blish HUD and add it manually here:
I made a little website for SPARK to showcase it's features, provide more info on how it works, and instructions on installing it (until it gets added to Blish HUD later when it's out of beta)
If you want to try it out or want someone else to give it a shot, it's here:
Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
β Live Streamingβ Interactive Chatβ Private Showsβ HD Qualityβ Free Actions
Free to watch β’ No registration required β’ HD streaming
I got the text wrapping working and it seems stable enough with the addon for a release, so this is out now!
Hopefully, this makes writing profiles a lot easier by being able to write without things cutting off to the side or if you write too much vertically!
There's a few small quirks with the way the selection works, but I didn't want to put a lot of effort trying to fix some small visual issues with this since this already took me a while to get working.
Want to try out SPARK? You can download it and add it easily to Blish HUD here:
SPARK RP Module for Blish HUD. Contribute to at-bat/Blish-HUD-SPARK development by creating an account on GitHub.
Newest releases are always at the top!
Once this is out of beta testing, it'll be added to Blish HUD itself for easy installation and updates.
All profile data you make is saved to your PC, so when this is fully released you'll have all your stuff safe and sound!
So far, the beta seems to be going well with the users who have tried out SPARK! I'm still working on some adjustments based on some feedback I've received.
I've done some work to improve some crashing/stability issues with SPARK that I found (mostly due to tabbing in and out of the game a bunch or playing with things in weird ways).
Apparently it also runs on Linux, which is great to hear!
Word Wrapping Support
Currently, some fields in the addon cut off when the text is too long, making it annoying to work with. This is because of how Blish HUD currently handles multi-line text boxes.
There's a pull request on Blish HUD's GitHub to fix this but it hasn't had much movement in a year. So I'm sort of making my own fix for it using the same ideas that this PR does until it's an officially supported part of Blish HUD and I can then swap over to that.
I tried building this in the past before I moved my code to GitHub, so I'm pulling my old branch of this (which had crashing and stability issues) and will try to get a stable fix for this in a few days if it seems good.
So far, I've gotten something that seems stable with a few quirks. Scrolling for some reason has a bit of stickiness to it, which I'm looking into, since I want this to feel nice to use.
Feature Suggestions
I'm always happy to hear ideas on what people would like to potentially see in SPARK! Right now, I feel like it already has quite a nice amount of features for the launch, but I'm always happy to hear what could make the addon work better or help people with RP somehow!
Admittedly, I have only RPed like twice in-game on GW2 because I am incredibly shy and introverted (*puts on my True Introvert title*). So I'm not entirely sure what common frustrations people run into that I can potentially help solve with this addon.
Keep in mind, Guild Wars 2 is very, very limited on what we can do with addons since their API is not the best to work with, nor does it offer as much as other online games do, like what World of Warcraft offers for addon developers. Wildstar was also quite robust and nice (I miss Wildstar).
SPARK Website
Once I get closer to finishing SPARK for the full release (which would be adding it directly onto Blish HUD), I will likely make a small website for SPARK to showcase it better, provide information on its features and how it works, etc.
I might pick up a domain for it, but I already pay for a lot of domains for projects already, so I might just keep this as a subdomain to keep costs low.
I'll probably keep the website design something simple like Material for MKDocs since it's a breeze to work with and you can effectively build a nice, small, static site with it in a few hours.
I think SPARK is finally at a point where I am okay with the public trying it out, finding bugs, and seeing if it runs well enough.
I've also migrated the server structure to postgres and redis so this should handle a larger amount of players using SPARK than my private beta tests did. Hoping it won't kill the server if a lot of people suddenly start using it, but that's what a beta is for, after all!
How do I access SPARK?
You will need:
1. Blish HUD with your API key added to it (these are safe to add, GW2 API keys only read data)
2. The SPARK module file (see here)
Because this is NOT submitted to Blish HUD yet until I've beta tested it thoroughly, you have to manually install this addon. Instructions are provided in the release, as well as in the Discord.
How do I submit bugs/feedback/questions?
I have a SPARK Discord server for people who want to discuss development and report things so I can fix them and work on it.
Keep in mind, some quirks are things I can't fix (like text cutting off in the profile editor and such, waiting on Blish HUD to fix this).
How long is my data retained?
24 hours at most. After that, if you haven't been online then your profile information gets wiped from the server entirely. I do not keep your data, nor do I want to store it indefinitely.
The exception to this is user reports. If you report a profile, it snapshots a copy of the profile on the server, plus your message, and saves that into a permanent database for review and moderation.
Can I contribute to SPARK?
You can!
A while ago, I migrated SPARK's codebase off of my own self-hosted repo and onto GitHub purposely so it was publicly accessible.
You can find the source code here.
It's licensed under the GNU General Public License v3.0.
The server portion of the addon is not public, but if I ever discontinue this project, all server code and setup instructions will be available for others to self-host and continue without me.
I'm tearing up the whole icon search index for SPARK and redoing it. But I'm also simplifying the entire system significantly. I was up super late last night working on this and finishing it up this morning.
Currently it checks for a new version and downloads off the SPARK server with several checks for security but I'm realizing this is just not worth the hassle. I'll periodically generate a new index file and bundle it into the addon and do that instead. Most of the code that does this was from an old project of mine and reworked for SPARK and it just feels unwieldy.
That cuts out like 2/3 of the code for this search system already and simplifies it.
But my biggest issue is that SPARK uses 23mb of RAM, but doubles due to the in memory search. So I'm swapping it to a stream search instead. This means it only uses like 3mb of extra RAM and then clears up when the garbage collection fires.
While 50mb total is small, I know that some people are on low end devices and I don't wanna poorly optimize this because I bought my RAM before prices exploded.
I might have this done in an hour, right before Tyria Pride π
Some quick updates on SPARK and some features I've been working on:
"When is SPARK available?"
Hopefully soon! My goal was to release it this month. Still working on many enhancements before I feel like it's ready.
Later this week I might post a link where people can download the module and manually install it (until it's released publicly on Blish itself).
I might also make a Discord server for it for bug reporting and discussion sometime soon.
Keep in mind, this is a hobby project, so development is kind of slow. I primarily spend my time coding or writing for my own game most days. The last thing I wanna do is make this feel like a second job.
Keep reading for some new features already added, upcoming ones, and more.
Pagination
I just added pagination to several things. This means it displays up to 50 results per page in places where you might have more than that.
Profile Cache Cleanup
I added a cache cleanup system the other day. SPARK now saves up to 250 profiles (around 8mb total I'd estimate) to your machine. Bookmarked profiles don't count towards this limit and are saved permanently.
This one was probably the easiest addition since I already use a similar cache cleanup for my own game so I just sorta reused a bunch of that and tweaked it.
Mature Profile Filters
This one's still in the works. I might have it finished today though!
Because I know people are gonna probably add NSFW details into profiles inevitably (be horny, I don't care), I want a way to filter these for people who don't wanna see it. You can set each individual profile of yours as mature or not. So you can have a tame profile, in addition to one when you wanna get your freak on and make the human gods weep.
This means you have to opt-in to mature profiles to see them or they simply don't display. There's a warning about it in the addon when enabling it.
Server Enforcement
Because some users may not set their profiles to mature and ignore this policy, I have also set up forced mature filtering on the server. If a profile is reported for having lewd details without marked as 18+, I can make all of your profiles 18+ permanently on the server, tied to your GW2 account itself.
Reports work by letting users specify a reason for the report, then submit to the server. If the profile is still on the server, it snapshots the server uploaded profile and marks it for review with the report included. Multiple reports stack on a profile. If the profile changes, new reports will instead make a new reported file for review.
I also have the ability to restrict accounts from using SPARK entirely, for extreme circumstances. Mostly if someone is using it to spread hate or do something malicious with the service. I hope this won't be necessary, but I wanna be prepared.
Other Enhancements
Some other things I'd like to add eventually:
1. Import profiles from your other characters. Right now, there's no easy way to do this. I've got a few ideas on how I could, however.
2. Localization support for translations of SPARK. This one will be much later and I would need help from people to translate it. I've worked with localization before at my previous job for various media (games, shows, movies) so I already have ideas on converting SPARK for this. Something I only want to do once I feel most features are complete.
3. Server enhancements. Right now, this is a very lightweight setup. If this add-on grows, I may need to consider changing the server architecture. I won't know until we stress test it with real people, however. I also may eventually move this to a stronger VPS if it starts using a lot of resources.
Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
β Live Streamingβ Interactive Chatβ Private Showsβ HD Qualityβ Free Actions
Free to watch β’ No registration required β’ HD streaming
I love making late night builds and then a few days later finding out I did things catastrophically bad and have to rip it all out cause it introduced a bunch of bugs lol
Gotta stop trying to code when it's late and I'm racing against the clock to get something done before I fall asleep
re: SPARK, have you considered having a taxi feature between shards for RPers to request so that they could network easier and hop between instances? Because one of the biggest issues plaguing the community since forever has been the fact that you have to know someone to get into an active RP scene
Unfortunately, I don't think there's a way I can really fix that specific issue.
As far as I know, joining a specific map IP has to go through the join function while in a party or in a squad with the person. I don't know if there's a way to do it outside of that. So you'd need to find someone who can party you and bring you in.
With my addon, it does allow you to copy the person's name to whisper them, which I suppose is the next best thing.
I'm hoping eventually GW2 expands their API to enable better addon support. What we have to work with is limited compared to some other games.
Keep in mind, everything is a heavy work in progress still. There's much work to be done. I'd estimate I have about 80% of what I want in the first release ready. It's been... 6 or 7 weeks of development so far, I forget exactly when I started on it initially.
This first page is the in-progress revamp to make things a single page without scrolling. More options to come as I work on new features.
One new feature is auto-hide UI. This closes most SPARK windows when you open a map, load zones, or view a vista.
Blocks also now have their own manage window!
Profile Editor Window
Profile Selection
The profile editor has a few tabs, the first being where you set your profiles on each character.
Here you can make a profile, duplicate it, save it, set it to be active, or delete. The UI on this is a bit rough and needs work, but it works well for the most part.
Later on, I may allow you to copy profiles from your other characters in case you have duplicates on different classes.
Profile Editor
The profile editor (god I'm good with names, the profile editor profile editor) is where you set the bread and butter for your profile.
You can add in a custom name to override your character name, set a custom profession similarly, your pronouns, an RP hook for what your character is known for it recognized for, a description, and at a glance.
Unfortunately, multi-line input boxes don't have word wrap, so that's why the text here is cut off. Blish HUD has a pull request in review for this though so maybe eventually it'll be fixed.
Profile Editor - At A Glance
You can set up to 5 'At a Glance' icons on your profile, utilizing existing icons in Guild Wars 2. This search returns up to 50 results, is almost instantaneous, caches via Blish HUD, and disposes when closes to free memory.
SPARK is bundled with an asset icon file for the search so it works locally, then goes through Blish HUD's gw2dat server to retrieve the icon files.
Here you can set a custom tooltip for them, which looks like so in use:
They're pretty neat!
Preferences
Here is where you can set your experience level for roleplay, some preferences, themes, and styles. I might expand on this later on based on feedback.
Current Info
This tab is basically "what is your character up to" and out of character info about yourself.
This information gets added to your presence on the online list when people are viewing profiles, like so:
It's a good way to get a quick glimpse at someone before opening their profile!
Profile Viewer
View Profile
A full profile can have a lot of info.
Some things, like the info from preferences, I might remake and try and make it look nicer somehow. It works for now, but I might make it some kind of dropdown or something to see that info.
On this page, you can hit 'Copy Name' to copy their account name to whisper the player easily (I tried to make a whisper function and it failed spectacularly so I gave up on that). You can bookmark a player, block them, or report them.
The report box pops up on the profile viewer itself and lets you type a short message on why you are reporting the person.
Some notes:
You can only report someone who is stored in SPARK's database. This is because that information is authenticated to be truly from that account, not falsified in some manner, and a source of truth. If they have no logged in for 24 hours, reporting that profile won't go through.
Multiple people can report a profile. All reports get saved into a single report file for that user, with report reasons appended at the top of the file.
I have the ability to entirely ban someone's GW2 account from accessing SPARK in case someone is using it to post hateful things or something.
Private Notes
Profiles also have a private notes tab!
This is saved locally to your PC and never transmitted on SPARK and is a little personal notepad where you can keep some information in about players you interact with. Like if someone gave you a cupcake you could put in their profile "They gave me a cupcake. It smelled like poison. I told them I ate it but I gave it to someone else."
Online List Viewer
The online list automatically filters for you based on if you choose NA or EU in the Spark Module (see the first screenshot to see that option!)
You can search profiles here and search all fields, specify which field, and sort by various fields.
The renown heart next to a profile means it's someone you have bookmarked as well!
The online list refreshes automatically, but you are able to manually refresh it. Keep in mind, the server temporarily caches the online list, so it might be around 5 to 10 seconds out of date at times to keep the server resources lower.
Saved Profile Viewer
Recently Viewed
When you view a profile, it downloads to your disk as a small 1kb to 10kb file. This gives you a local copy of it in case SPARK is down or the user hasn't been online in 24h and SPARK doesn't retain the data anymore.
Any time you open a profile here, it first checks with SPARK to see if there's a new copy or not available, then downloads it.
Keep in mind, if someone blocks you, you cannot retrieve new copies of their profile and will never see them online again. This is for privacy reasons.
Bookmarks
The next tab is your bookmarked users who you want to specifically save and easily keep track of.
There's currently no limit on this, so uh, let me know if this becomes an issue with a lot of them later.
Block Manager
Here's where you can put blocks on SPARK if someone has a profile you don't like or you don't want them to see your profiles at all.
I want people to be able to curate their experience using SPARK which is why this exists.
Blocks are local first to remove any lingering remnants of someone you blocked, and then synced with the server to ensure someone blocked can't see you online, your location (if not hidden), or any profile updates or profiles from you. Before you connect to SPARK, it always syncs your blocklist first before your data is transmitted to ensure complete privacy.
That's all I have to share for now! Let me know your thoughts and I hope to have more to show soon!
I'm doing a big clean up for SPARK in terms of how it looks in the settings/module page. I want it to fit without any scrolling.
This means making sizing more consistent and utilizing the new important message field (tells you why SPARK isn't working so you can fix it, like no API key, etc).
I did remove status messages though. You previously could set one up to 140 characters but I realize this over complicates the way I sync data on the server, and it's redundant since your "currently" (for in character status) and OOC info fields work for that just as well.
I did move blocks to their own window for management however!
Once I finish up with the blocklist updates, I have some other rewrites to do still.
I might also add a toggle to mark profiles as 18+ and make that an opt-in function to see profiles marked that way. I know people are gonna be explicit in them. It's one of the reasons I have a block feature so people can curate their experience as they see fit.
There is also a report function. This is primarily for hate speech and such, however. I don't want to moderate profiles because someone's RPing as Trahearne and they're going into detail about their Caladbolg. I don't care what two consenting adults get up to, but I also cannot tell if whoever uses the tool is an adult so I'm trying to figure out the best way to handle this.
Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
β Live Streamingβ Interactive Chatβ Private Showsβ HD Qualityβ Free Actions
Free to watch β’ No registration required β’ HD streaming
Hello, it's me again! I was wondering if you know about the GW2 Roleplaying Discord or its denizens; I've got a buddy on there who I've told about your project and they would like to advertise said project, no strings attached (to my knowledge).
Hiya!
I've admittedly not looked at any RP Discords for GW2 and probably should seek that out at some point!
I think I was in a few RP Discords like.. uhh... 8 or 9 years back? It's been a long, long time. @_@
People are welcome to advertise SPARK! It's getting close to a release candidate. Right now I'm doing some testing with friends and fixing bugs they help me find!
I did the first test of SPARK with others and it worked pretty much perfectly!
I need a few updates to the UI to explain a few things, like adding API keys to Blish to use it, and some other things like blocking, but it seems to run really well on the first test run!