Giter VIP home page Giter VIP logo

evevision's Introduction

Discord

Русские капсулиры · Versión en Español · 中文版本

Download latest release

Play EVE without leaving EVE.

If you live in New Eden, you are probably used to having to alt+tab to web-based tools nearly every time you play. These tools are part of what makes playing EVE Online unlike any other game. However, it also ruins the immersion of the beautiful world CCP built.

EveVision is a EULA-legal way to extend the UI of EVE Online, bringing the tools you love directly into the game client.

In the near future, there will be a system allowing you to pick and choose (or develop!) plugins much like apps on your phone, complete with Android-style permissions for accessing your ESI data and EULA-legal-to-read files. You will be able to install and run anyone's tools while feeling safe about your computer and character's data.

Need help using or developing EveVision? Have a suggestion or want to show off how you're using it? Join our Discord channel!

Screenshots

Tool Explorer

toolexplorer

EveEye and Thera Maps

eveeye-ss

EveMarketer

ev-ss-6

Google Translator

evevision-ss-1

Abyssal Markets

abyssal-ss

D-Scan and Dotlan

evevision-ss-2

Installation and Usage

There is no complex setup process. Simply download the latest EXE from the releases page, run it once and forget about it. If you would like to build it yourself instead, it is quite simple to do so.

ss1

Make sure you have DirectX 9 disabled in launcher settings. Log into EVE and play as you normally would - the rest will come naturally to you. If there is a new version available, it will let you know. There is a custom welcome screen for most major alliances!

custom

If you are ever on an official CCP website (i.e. for ESI authentication) the window will flash green all the way to the edge of the window as shown below

flashing window

To shut down EveVision, simply select Quit from the tray menu where you change your volume and network settings in Windows.

ss2

Want to build it yourself? It's really easy!

Assuming you've got node, python, yarn, and VS2019 build tools installed:

git clone [email protected]:/evevision/evevision.git
cd evevision
yarn ez:package # OR yarn ez:dev to run in development mode!

Read the rest of the README for more info.

Donations

You can donate ISK to the character EveVision ingame!

Patreon donators get their character name in the EveVision credits forever! I will put it towards paying for my development tools, the various services that EveVision utilizes, and probably PLEX because I'm a credit card warrior.

Conflicts

EveVision is very new and uses some techniques that easily conflict with other software. If you don't see the overlay ingame, you probably have some software installed that somehow interacts with the EVE client too.

Currently known conflicts:

  • RivaTuner Statistics Server
  • MSI Afterburner (if running RivaTuner)
  • FRAPS
  • On very rare occasion, Windows Defender

Confirmed to work:

  • EVE-O Preview (you can even see EveVision windows in the previews!)

We want to hear about conflicts so we can fix them! Please, if you can't seem to get EveVision to work, join our Discord channel and help us figure out what it might be.

EULA Compliance

EveVision Core is as EULA legal as your Mumble overlay. CCP commented on this type of tool years ago: https://www.eveonline.com/article/overlays-isk-buyer-amnesty-and-account-security

We may, in our discretion, tolerate the use of applications or other software that simply enhance player enjoyment in a way that maintains fair gameplay. AS LONG AS it’s fair to everybody - neither you nor anybody else gets any unfair advantage – we are fine with it.

For instance, the use of programs that provide in-game overlays (Mumble, Teamspeak) is not something we plan to actively police at this time. This is an example of something we do NOT consider unfair, for now. This also includes other in-game overlays which do NOT grant you any unfair advantage. We do not consider it an unfair advantage if you can see who is currently talking in your voice communication tool via the means of an in-game overlay.

Most importantly, showing that this is not limited to Mumble or Teamspeak:

We also do NOT consider it unfair if you use other comfort overlays which do not affect how the game is played. This includes overlays for chat and IM applications, the Steam overlay, and Web-Browser overlays for example.

This tool cannot do anything like read the screen or perform ingame actions automatically (unless via ESI). It solely draws over EVE and intercepts input for the purpose of interacting with the EveVision windows.

However, keep in mind that CCP always retains the final say. They could full well decide in the future that EveVision is too much and should not be allowed - but in its current form there is no risk of a ban. Additionally, unofficial plugins in the future do not fall under this - if they provide an unfair advantage, it is still against the EULA, no matter what.

For Nerds

Build Status GitHub commits since latest release GitHub commit activity Electron Version React Version

Want to tinker around and make your own ingame tools for EVE? It is extremely easy to build and run EveVision yourself! Once you're up and running, you'll be able to run a single command and watch your components update in real-time directly ingame as you save your changes, just like regular web development.

editing

Issues and pull requests are reviewed. If you have an idea, hop on Discord and I'll let you know if I would pull it in!

If you plan on building private alliance/corp tools, please be aware that the core of this software is not meant to be modified for separate distribution, and the license prevents you from doing so without releasing the full sourcecode. There will be a plugin system in the very near future that will allow you to securely distribute tools.

Tips

EveVision consists of the following components:

  • Electron app inside app, with a split codebase for the main and renderer processes.
  • Overlay DLL that is injected into the EVE Client's process space at overlay
  • Native node module for injecting and communicating with the overlay DLL at app/native.
  • FlatBuffer schemas that are used for communication between the DLL and native node module at flatbuffers/schema

If you have never worked with Electron before, the main thing to know is that there is a main process that uses NodeJS and then renderer processes for each window that are Chromium. They have two different sets of code, two different entry points and communicate via Electron's IPC module.

It is the renderer process where web developers will feel most at home, as you are doing nothing more than developing a React app that is loaded by Chromium. This is where the actual UI is, rather than all the window, input, and process management code.

In many ways, the main and renderer processes share the same relationship as the backend and frontend interface of a website.

Note that you can rule out most issues with production and development mode. The only time you need to test packaging the app is when new resource files will be introduced, which shouldn't be happening often.

Building

This application can only be built and run on Windows x64. However, it is extraordinarily easy to do so - no prior Windows development experience is required! I'm primarily a linux dev myself, and Windows repos scare me too. Every single thing is handled for you via yarn scripts.

You will need the following installed:

Download the repo by cloning it or getting the ZIP and extracting it to a local directory of your choice.

Generate Packaged Executable

Run yarn ez:package and a packaged executable will be output to release/EveVision.exe.

All components will be built to ensure the latest code is packaged. To quickly repackage the app without running any builds, use yarn package or yarn package:fast instead.

Development Mode

Simply run yarn ez:dev

All components will be built beforehand to ensure the latest code is running. To quickly start development mode without running any builds, run yarn start:dev instead. Hot-reloading will be enabled so you can see your changes inside EVE in real time.

Production Mode

To build and run EveVision but without packaging it into an EXE, simply run yarn ez:prod. To quickly run the app without running any builds, use yarn start:prod instead.

Making changes to C++

If you make any changes to the C++, you need to know a few things:

  • You don't necessarily have to shut down EVE before injecting a new version of the overlay. Old versions sit there doing nothing. However, it's usually a good idea.
  • After making your changes to the overlay DLL, run yarn build:cpp:overlay. You don't have to restart EveVision for it to inject the latest DLL.
  • After making changes to the node native module, run yarn build:cpp:native-node. You will have to restart EveVision.

All build commands are run beforehand with yarn ez:dev, yarn ez:prod, and yarn ez:package.

Thanks

This project uses portions of code from and was inspired by https://github.com/hiitiger/gelectron

evevision's People

Contributors

1mlightyears avatar aura-bot avatar d3vfreak avatar jaydoobs avatar mckernanin avatar mgoeppner avatar niedar avatar semantic-release-bot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

evevision's Issues

Open in-game links in EveVision

I know it may not be possible, but I think it'd be awesome to be able to click a link from a chat channel and have it open in the overlay. The only way I can think this would work would be setting EveVision as the default browser while it's running/the game is running, and hook into the native APIs to determine what to do with the data from clicking the link, though this is very hacky and could cause issues.

Add visual indicator to know if ChildWindow is showing a real CCP site

Right now, third party sites can send you to the ESI auth site to authenticate. The problem is, without an address bar, there's no way to know if it's real.

I don't want to show an address bar as it would ruin the illusion.

I propose making it so if the ChildWindow navigates to an official website run by CCP, it will have some sort of visual indicator on the window. Perhaps the window will glow, or have a CCP icon located somewhere.

Add DX9/10 support

Hey mate/s, appreciate the hard work,
Eve vision runs in the background, but nothing appears in my eve client, also no Rivatuner nor MSI afterburner running in the background.
Best regards

Add Linux support

I initially thought this wouldn't be possible, but I was proven wrong, at least for Linux.

Eris managed to get it to the point where it injects and the DLL even successfully connects to the main process IPC.
image

It freezes at this point, however. I believe it's either the shared memory space failing to allocate OR the DirectX hooks failing.

Support for Chinese EVE clients

When I was using evevision with zhpatch tool, I found there is no window showing in the game. I tried to exit the zhpatch tool, and it recoverd. Maybe it is a problem for zhpatch tool and evecision.

Zhpatch tool is a tool used to show Chinese in game.

Setup beta channel

Need to setup a beta release channel so I can push out stuff for people to try out first. There's hundreds of people using EveVision now so it makes sense.

Should be relatively simple with semantic-release.

Better tools UI

Need to implement a better tools UI. Proposals, ideas, and pull requests are welcome.

In the future the UI will need to be able to register plugins, but for now we just need to organize the plethora of external websites.

User agent causing external tool css/login issues

Just setting the user agent to EveVision/version causes some websites to not send the correct CSS (i.e. Google). We probably have to do some combination of the normal Chromium user agent and add our agent at the end.

Additionally, Google appears to not allow some EveVision users to log in, making things like Google Sheets difficult to use. I personally do not have an issue logging into Google, but others do with a warning saying the browser is insecure. I can't imagine this is based on anything but the user agent.

Add MacOS support

I don't yet know if EveVision's techniques are possible inside of Mac like it appears to be in Linux.

If not, I'm sure there's some technique or another we could use. The main obstacle is getting the DLL inside of EVE, which happens via debugging APIs on Windows. These APIs should in theory still be available on Mac WINE, but even if they weren't, there are other ways to get a DLL into the game.

There's a ton of Mac users, so this is pretty vital. It most likely will not be a native MacOS build, it would still run inside of WINE and be built as an EXE.

Implement EVE themes and switcher

Right now, the CSS is a close approximation of the Caldari theme. The alphas aren't quite right since on light backgrounds they appear much lighter.

I'd like to have all of the default EVE themes implemented. Each of them have two base colors which every other color in the UI is based on via saturation, lightness, and alpha percentage modifications. It may also change hue, but I don't think there are any hue shifts.

There should be a switcher somewhere in the settings. I'm not sure if it's EULA legal, but I doubt CCP would mind us reading from the settings file to determine what theme each character already has set. The format that data is stored in is binary, however. If anyone knows how to read those files the info would be greatly appreciated.

Windows Defender can cause slow or failed initialization

Somehow, Windows Defender can cause EveVision to not initialize, especially when running multiple clients. Sometimes all clients initialize (usually slowly), and other times only a couple. Excluding EveVision from WD resolves the problem.

I believe WD is somehow interfering with the IPC messages, but I will need to add more logging to confirm.

Not everyone has issues - some run WD and EveVision together perfectly fine. Perhaps WD is running an analysis on EveVision and only some machines get picked to do so?

Scrolling with mousewheel appears to not respect window bounds in ChildWindow

I've commonly run into an issue where the mousewheel seemingly only works in part of the ChildWindow - seemingly always being some portion starting from the top left. It's unrelated to the contents of the page.

I'm not sure if this occurs after a game resize or window resize, will need to do further testing.

Localize EveVision Core

EveVision needs to be localized. EVE has a very large portion of players that only speak russian, korean, vietnamese, spanish, etc.

There are very few actual lines of text that need to be translated in EveVision. It's pretty much all external sites right now, so this would be fairly easy, especially if we start early.

I've seen various online localization services for open source but never actually had to do any form of localization myself. I have no idea how it's usually done from a software context. Does anyone have any input on this?

Add installer option

The portable EXE version is quite nice, but it also pisses off some antiviruses due to it extracting executable files into the temporary and AppData folders, a hallmark of viruses.

There should just be an installable version anyways, perhaps with auto updates?

electron-builder provides an NSIS installer option, so this should be pretty trivial.

Game input can freeze after EV main process crash

It's pretty rare, but if the EveVision main process crashes for whatever reason, the EVE client can sometimes be left in a state where it doesn't accept any input. The issue goes away once EveVision is restarted.

Doesn't work in Windowed borderless

Evevision doesn't work for windows borderless. (Doesn't load up) you get the prompt to say it's running but doesn't show up.

You can get around it by running the client in Fixed windows, Loading Evevision wait for it to load up and then switch back to Windows borderless

Setting HTTP proxy

I wanna play some netgame that have japan ip limit(can't log in if not a japan ip),so i need to set a proxy for it,but i can't find the proxy setting.So here is the question

ChildWindow initializes with incorrect size until parent window is resized

Occasionally, when attempting to launch a window from the Tools menu, the page doesn't fully render. Issue resolves when you resize the window. Here is a short clip of the bug in action: https://streamable.com/n2hjd0

Doesn't seem to be limited to a specific site or window size. I've resized the windows and can consistently get the issue to re-appear ~20% of the time.

Doesn't seem to be associated with UI scaling or resolution. I was able to reproduce the issue at 1920x1080 and 2560x1440, using both Windowed Mode, Fixed Window, and Fullscreen.

FRAPS causes overlay to not initialize

Had a confirmed report of FRAPS causing the overlay to not initialize. This is very low priority for me, but I am recording it as an issue, especially since it may help resolve other issues.

Improve performance/UX for opening new windows

If you click on something to open a new window, it doesn't do anything for 2-3 seconds while Chromium starts up in the background (and that's on my beefy machine). There's zero visual feedback, not even in the buttons. This is especially the case for external sites, where it's actually two chromium processes - one for the surrounding frame and one that is fully sandboxed for the actual external site.

My proposed solution is to pre-start at least one of these processes and have them wait for the next request. The primary cost in this solution is RAM, which is ubiquitous these days and the amounts we're talking about are trivial for the benefits it provides.

The primary barrier in doing this is that the internal (versus external site) renderer processes are told how to configure themselves and what to actually display via the string-based process arguments (your every-day argv array), which can only be passed at startup. This way of doing things is kind of crap and needed to be replaced anyways. Initial thought is to just use synchronous IPC, which is fine since we're not painting at that point yet anyways.

The external site frames do nothing on their own except tell EveVision where to position the child window and show if it's a secure site. This part wouldn't even have to be unloaded in the background, meaning we can instantly show the surrounding frame for external sites too (but not EV native tools) Maybe there should just be a skeleton frame to show for all new windows in general?

This should GREATLY improve the experience of using EveVision, even though EVE itself has this exact same zero-feedback behaviour when opening new windows.

P.S. Why does it take so long for the windows to initialize anyways? Desktop chrome definitely doesn't take that long.

Allow setting a custom image on welcome screen

Would be a nice bit of customization if people could set the background image on the welcome screen. It used to default to the Horde EveVision bean, but now it's blank for anyone that isn't in Horde.

I'd like if people could just select whatever image themselves to use. This should be pretty trivial - just need to pop open an open file dialog and have the main process make a copy for itself for the renderer processes to use. A base64-encoded image passed to the renderer would likely be the easiest solution.

Add notice if there is an issue retrieving character ID at login

If there's an issue with the EVE servers, EveVision won't allow never-before-seen characters to log in because it relies on the search endpoint to find their character ID from the EVE window title.

This shouldn't be a silent failure. Need to add a notice, potentially ingame, that says what happened.

request: user-added tools/shortcuts

It would be great if there were a section for users to add their own custom URLs to open in the browser. Maybe even make the whole thing modular where users can add and remove headings and manage the shortcuts within them. Either way, personalization options would be amazing.

Add 'mute all' button

Just noticed there's a way to mute browserwindows. Probably should add a 'mute all' button.

Re-enable DPI scaling

Need to re-enable DPI scaling. EveVision is practically useless on high-DPI 4K monitors.

The position/size code gets all messed up by the presence of DPI but we should be able to use screen.scaleFactor to fix it.

Mouse input not handled correctly on certain controls in offscreen rendering

While trying to implement a replica of the eve slider control I noticed an issue with the mouse input while holding down the left mouse button not working correctly.

The slider only registers the mouse move events while holding down the left mouse button and the cursor is inside the bounds of the input control. This is not correct, normally as long as the left mouse button is held down all mouse move events on the x axis are registered and handled correctly in updating the position of the range slider.

If the control is rendered in a non-offscreen window this works correctly.

Ex: https://streamable.com/s6dnpm

Example Input:
<input type="range" />

Fullscreen overlay sometimes fails to initialize with multiple clients

Starting EveVision after starting multiple clients of EVE can sometimes result in the fullscreen overlay (minimized windows menu) not initializing. It is random - sometimes all work, sometimes only a couple.

Starting the EVE clients one by one, however, does not cause this issue.

Error when building Overlay.dll

win10
Visual Studio 2019

evevision\overlay\core\event.h(230,1)
error C2039: 'unique': is not a member of 'std::shared_ptr<std::vector<std::shared_ptr<Storm::ConnectionContext<R (void),ThreadPolicy>>,std::allocator<std:
:shared_ptr<Storm::ConnectionContext<R (void),ThreadPolicy>>>>>'

I found sd::shared_ptr::unique was deprected in C++17 and was removed in C++2020
https://en.cppreference.com/w/cpp/memory/shared_ptr/unique
But after I set
image
in Visual Studio and yarn build:cpp:overlay it still didn't work.

EveVision itself gets injected along with game

Somehow or another it seems the overlay DLL is getting injected into the actual EveVision application too. I have literally no idea how this is happening, all I know is that the debug console also opens up from EveVision and shows an overlay trying to connect.

It appears to have zero actual effect on anything, especially when the debug windows are hidden, but I'm marking this down since it probably should be fixed anyways.

This isn't something new - I've noticed this for quite a number of versions now.

Quickly relogging a character can result in ESI search failing and overlay not initializing

Kocus is experiencing an issue where if they restart EVE and relog, it won't start that time. After checking his logs, it shows that the ESI request is failing. I assume ESI is getting mad because of quickly running a search again for the same character name. I never ran into this myself.

Since the character data is stored in the Redux state which is saved to a file, we really shouldn't need to query ESI again anyways as a character's ID can never change.

Solution: Check the state for a character's ID before querying ESI.

Add master opacity slider

EVE has a master opacity slider. We need to add one too.

Originally I thought this would be part of the theme picker, but in reality this part needs to be done in the DX11 sprite itself rather than the CSS. It would be inefficient to modify the framebuffer itself and it would be unreliable to attempt to inject CSS and have Chromium itself handle it.

Eve-Vision will start but refuses to draw

I do not have RTTS on my machine (or I cant find it if I do)

in addition to this, it seems that some combo of eve-vision and eve-o or just eve-vision itself causes a secondary client to freeze up and crash when I alt-tab over to it

1.4.0 btw

Behavior of keyboard capture/element focus does not match EVE

When clicking inside of the Welcome splash screen or the Tools screen, it draws keyboard focus away from the client. You're unable to press shortcuts like F1 or Ctrl-Space when those windows have focus, even though there are no text fields that they could be awaiting input for.

As mentioned on Discord, for other active windows (Dotlan, etc.)there really isn't a way around this because it may have a text field and will need to have keyboard focus there to receive the input.

Allow copying browser url

When browsing sites in evevision, like zkill, I'm not aware of there being a way to copy the current url.

Eve Gatecamp Check not usable

FYI: Loads but the page dropdown lists are disabled, this kills Eve Gate Camp Check.
It will only check your local gate, but not your jump path.

RivaTuner Statistics Server causes overlay to not draw

RTSS causes EveVision to not function. Injection is fine, it is just the actual drawing that does not occur.

Notably, shutting down RTSS usually causes EveVision to instantly start working, so I'm going to imagine it's somehow locking up one of our threads.

This is an issue entirely in the native C++ DLL.

I want RTSS to work with EV - there's no reason it shouldn't.

Overlay initialization is unreliable or not working at all for a small percentage of users

We haven't entirely tracked down the cause(s), but the initialization process of EveVision appears to be interfered with on some machines for various reasons and with various symptoms - but all ultimately resulting in "I don't see anything". Some appear to be a title finding issue due to only injecting after changing window modes, others appear to be an issue with Windows Defender (or something) slowing down or flat out stopping IPC. In some scenarios, it has issues injecting multiple clients but always succeeds with some of them - this was proven to be caused by Windows Defender on one machine.

The unfortunate part is that I didn't log this area very well, and much less to a file, so it's been very hard to debug. I'm now working on cleaning up and documenting the entire process and ensuring that the whole process is logged so I can immediately see where the disconnect is happening in the future.

Until this issue is confidently resolved, any 'my overlay isn't showing up' issue reports should go here, as they are all likely linked, despite being different symptoms.

Allow positioning of the minimized menu button

Need to allow drag & drop positioning of the minimized menu button. Should be easy considering it is contained inside of the FullscreenOverlay. Should be able to use any old library or code for dragging & dropping absolutely positioned elements.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.