Jump to content
skruis

Athena - An ARMA 2nd Screen Application

Recommended Posts

Hey Skruis,

 

Good to hear you are working on an update, love your mod because it closes the gab between DCS World and Arma for me as a home cockpit user.

I do have one christmas wish however, could you please look into exporting the I-TGT MFD from mods like FIR (Firewill)? I'm not sure this is possible, maybe FIR needs to do some work or both of you need a coop which would be awesome! Anyway, I'm flying one of those Thrustmaster MFD's with a tiny display behind it. Right now it has your map running but it would be super cool to run I-TGT on the other. Anyway, thanks for all your hard work!

Share this post


Link to post
Share on other sites
On 2/6/2020 at 5:36 PM, skruis said:

It's embarrassing to reply to these requests so late BUT:

 

1. Athena Designer mod is horribly out of date. What you can do is unpack the pbo, modify the scripts yourself to grab every unit, repack it and use it locally. You won't be able to join servers but you will get the ability to use it for local debugging.

 

2. The site basically just pointed back to the Steam page. So ... go to the Steam page.

 

3. Sometimes, there are some random JSON formatting errors that cause the deserialization to fail. If the relay is starting, there's a debug option that lets you capture the output from the game. You can run that through a JSON validation utility and it'll help you to identify what the problem is. What I've run into before is that some special characters in people's profile names aren't escaped (I know: I'm a newb) and that can be the culprit.

 

Otherwise, the mods status is: I'm rewriting it. From the ground, up as a native Windows 10 app so everyone that asked for Pinch-to-Zoom is getting it. The relay's functions are being moved into the Extension so the problem some people run into with the relay process not launching is going away. The communications protocol is being overhauled. The data collection scripts are being overhauled. The map export process is changing to a more unit based method that should be more reliable and self documenting in case of failure. I've added support for mission designers, through scripting, to limit the 'scopes' of data that the users can collect (player, player group, player side, player + player side group leaders, all or specific units) and the user can select the scope they want from the app, which should help people that want to use Athena in very large missions with numerous AI by narrowing the data set. I'm making the app look more ... militaristic too. I have no actual knowledge of how military equipment looks and I do not intend to be bound by the reality of similar devices when the idea is more fun. The look of the map is likely going to change as well ... some people might hate it, some people might like it. I think it looks cool and different but we'll see.

 

Sorry for all the delays. Life.

Are you still rewriting the mod, or has it been abandoned?

Share this post


Link to post
Share on other sites

does anyone have the software Emf to Png Emftopng.exe? can you upload to googledrive or copy exe code please.. 

Share this post


Link to post
Share on other sites
On 7/17/2019 at 12:54 PM, andyruler10 said:

Currently having issues trying to import Rosche - it does the full export but after the pipeline finishes sending info it just goes back to proceed and doesn't process the data, any idea what I've done wrong? seems to work with every other map.

I'm having the same issue. Is there a fix?

Share this post


Link to post
Share on other sites
On 8/13/2019 at 5:01 PM, skruis said:

@Eutyches Any progress? If it helps, I can post a screen of the misc references for each of the projects.

 

@andyruler10 I'm in the middle of completely overhauling the map export process.

 

@The Whitestrake I originally envisioned the ACS running as a service eventually. Because it was a very early release, I expected problems and I wanted to set an expectation that none of the data it held should be considered 'permanent'. It's matured a little bit but there's still an odd bug with the maps invalidating after a while...I haven't nailed that down yet. When I circle back to the ACS, I'll re-engineer it as a 2 part component: a service and a user interaction app.

Did you get it working for Rosche map?

Share this post


Link to post
Share on other sites

I think athena needs some updates to where when you create your own game in editor and have a character set as zeus game master that athena could follow the zeus camera around the map like how it follows your character around the map. I also think that it should be able to show the enemies location on the map once you have spotted them

Share this post


Link to post
Share on other sites

Considering a new art style for an Athena/ARMA adjacent project.

 

The island of Altis

athena.grid.wip.20211021_02.png

 

The airport and surrounding area

athena.grid.wip.20221021.png

 

Both versions, current public and this in development version sample the terrain every so many meters and then try to create something presentable. There were some oddities with the contour tracing in the public version that I didn't like. With this new approach, I'm sampling every 50m to create 50x50 cells whose height is the average of its 4 samples, coloring based on land/sea, shading for elevation, then shading for forest density. Then once I have all the cells at or above specific heights, I'm marching around them to create the contours. It's less goofy and more consistent than the previous contouring process but the art style takes a little getting used to which over the course of the last week, I have gotten used to it and actually started to like it. For what I'm planning on using this for, a cell based approach lines up better with the functionality I have planned.

 

I've also made use of the newer extension support BIS added to avoid having to string everything into JSON objects, allowing me to avoid all of the formatting bugs I introduced via that method which are causing these reports about random maps not importing for users. Additionally, I've cleaned up a lot of the import routine, am grabbing additional structure data such as whether or not a given structure can be occupied and, again, with the help of BIS's other scripting improvements, I've been able to improve road rendering quite a bit.

 

The screenshot I linked to is a very early look at the changes. You'll notice I'm missing the location names, airfields, that powerlines should be rendered as black lines instead of as buildings, etc. Those things are rather easy to resolve assuming BIS and modders runways are detectable via onRoads, matched to terrain object type "hide", grab their dir (angle) and then can have their dimensions grabbed via their bounding boxes. That's a big assumption. If anyone knows if there's a different way to detect runway dimensions, please let me know.

 

That being said, a new release is far off. I wasted time dabbling in Unity creating/destroying terrain mesh dynamically (seeing as how I basically have mesh data) using the sampling data. It worked but wasn't worth it. It resulted in essentially running two games at once on the same computer. Athena Desktop tends to consume more memory than cpu because it's basically an image viewer with other stuff layered on top. The mesh approach in Unity consumed both and some GPU resources so .... nope. None of the Unity knowledge was applicable elsewhere in my life either. This new project though I'm hoping to have primarily be web based so I'm interested in porting the rendering engine to an HTML/WASM application. For my purposes, the mapping data will be stored in a database and exposed via an API. For a pure Athena install though, it gets more interesting. A webapp only has access to so much storage space and has to rely on the caching api of the browser. It really has little control so imagine exporting Altis for an hour and having it dumped by your browser. Arma, and its extensions, have access to everything on your pc or rather, everything your account has access to on your pc, unless BIS has implemented some controls I'm not aware of. It would make more sense to have the extension store the mapping data and act as a data warehouse to the web app which running locally. That's a big change. Half of Athena Desktop would move into the extension and then Arma would have to be running iot to use Athena eliminating an offline mode but I don't even know if offline is important to the user base. I'm not actively playing Arma or planning missions for a group so I don't need offline support. The plus side to this and I think it's a major one is that it gets easier to support non windows devices, including mobile, because it's a webapp. The extension if it's compiled to .net core or later might be able to run on Linux as well.

 

Well, anyways, that's the status. Not sure how many of you are still paying attention to this project so thanks for reading. Let me know your thoughts on the new look.

  • Like 3

Share this post


Link to post
Share on other sites

Athena is still my must have mod for flying planes and helicopters because opening the map on the main screen easily leads to crashing my aircraft. Just a bit of QoL improvements like easily zooming and panning the map using touchscreen is all I could ask for.

Share this post


Link to post
Share on other sites

Wow! Thank you for the in-depth update. Am gobschmacked you learned Unity just for this project 😃.

 

Web application or extension based? 

 

(I apologize if it was meant to be rhetorical)

 

I would argue web for two reasons. First: Athena offers casual players a way in. My group has a single dad, who, if he manages to join, always picks the UAV soldier, and calls out targets to team mates with a beer in hand. Being able to join via tablet/smartphone would be great for him.

 

Secondly, I would consider the average player in terms of internet usage. I don't have statistics. But Arma requires an internet connection for many reasons to enjoy. Multiplayer engagement, managing mods, online help for debugging. I don't expect many players will be left out for an online app. 

 

It does make me vaguely nervous that the app would be dependent on your external server (thinking of Armaholic) into the future.

 

But regardless, I hope you choose the easiest path for yourself(!).

 

I hope you keep finding energy for this. Because this is an *actual* extension of Arma!

 

  • Like 1

Share this post


Link to post
Share on other sites

Yea, well, there's 2 projects: Athena as you know it and the Athena related project. Athena as you know it will always be service independent meaning it won't rely on a central server that I control. That's just not what I want for the project. The extension I'm working on for the next version of Athena contains an embedded web server (kestrel) through which I plan to use signalr to communicate with the next version of Athena desktop which I'm currently writing in .net MAUI. .net MAUI supports Android, iOS, Mac and Windows so you should be able to get it on whatever device you're using. How well it runs on those devices will be a different story. Athena consumes around 500-600MB of memory so low end devices will probably have a hard time. iOS devices, because of the store, will be a bit of a pita to deploy to. I'm pretty sure I'll need a mac to compile it and I don't have one.

 

The map export process is finalized and should be much more reliable than the previous version. No more json. The map isn't built in the app anymore. The data is kept in the extension dll which builds the data into a map file and stores it in the user's \appdata\roaming\athena\worlds folder. Then the Athena client will pull the map from the extension via HTTP and cache it separately. I want to say the export process for Stratis, on my pc took less than 2 minutes and came it at less than 20MB. If memory serves, that's quite a bit faster than the currently available version.

 

I'll probably release an alpha of the next version of Athena Desktop in the next week or so. None of the fancy stuff. It'll just be map exports, player tracking and it will be ugly. It's a complete rewrite so stuff like orbats, waypoints, markers, recording/playback, etc. That stuff is way off. The ink feature, though I loved it, will probably get dropped until .net Maiu adds some sort of stylus support. I might be able to rig an ugly line drawing method via touch. We'll see.

 

The Athena related project is actually a separate turn based game that lives completely outside of ARMA. ARMA is still used but it's behind the scenes. I'll be playtesting it with a few buddies and then I'll ask if anyone here wants to try it out. It will be multiplayer only so you'll need at least 2 people per campaign. I'm not sure if it'll actually be any fun since it's really more about managing war than actually fighting it. Eventually, the management aspect might lead to you or others fighting the war but not at first and only if the project finds some success. It's probably not something that'll appeal to everyone but I find it interesting and it's a fun project.

  • Thanks 1

Share this post


Link to post
Share on other sites

Altis - Kavala

Kavala - Desktop

 

Altis - Kavala

Kavala - iOS

 

I played around with blazor (too many hoops to get to javascript - maybe in the future if I can repackage this into a blazor app), .net maui (not mature enough), and uno (was frustrated by this point) and they were overkill for what I'm trying to do. So, it's HTML and JS. You'll notice in the screenshots that this is an Athena map hosted in a web browser. I'm using pixi.js for the rendering. It's a bit of a memory hog at the present. I have to do a couple of things to improve performance and conserve memory. It's strange seeing an Athena map on iOS...pinch to zoom, pan, etc. is all supported. Remember though, this is all hosted in the extension so at the present, Arma has to be running. There's no data stored on the webapp. I 'might' be able to use the database storage for offline caching/viewing. When it gets to that point, I'll probably have to turn it into a PWA (a website that presents itself as an installable app) rather than a traditional website. We'll see how it goes.

Share this post


Link to post
Share on other sites
On 10/21/2022 at 10:34 AM, skruis said:

Not sure how many of you are still paying attention to this project so thanks for reading.

 

I was still regularly checking in here to see, if there were any updates from you. Glad to know you're well!

 

And also happy to see that you're still working on this.

 

Take care mare!

Share this post


Link to post
Share on other sites

Screenshot - Web App - Malden - Zoomed Out

Screenshot - Web App - Malden - Zoomed In

Screenshot - Web App - Basic Menu

Screenshot - Web App - Settings Menu

 

Status Update

  1. I've solved the memory issues.
    1. Rendering Malden consumes around 140MB of system memory.
    2. You have some control over the rendering options. They're currently set for compatibility and performance so it should be usable on most phones. I've tested in Safari, Chrome and Edge on iOS. It's surprisingly fluid on all of them.
  2. I've added a basic mobile touch friendly interface.
    1. Nice big buttons
    2. Supports pinch to zoom, panning, etc.
    3. I'll expand on the interface later ... to provide immediate access to the typical Athena functions: unit tracking, unit list, etc. when running the app on a device with a larger screen.
  3. I've added the ability to store the maps offline using indexedDb.
    1. I'll add an interface later
  4. I've resolved the performance issues.
    1. I daresay it's more performant than Athena Desktop though we'll see how it ends up after all of the functionality is added back in.

My next steps

  1. Add real time communication between the Extension and the WebApp.
    1. I plan to use SignalR to manage a websocket. It should provide the frequency required for smooth updates. Adding SignalR between the Extension and the WebApp will also provide a test bed for eventually releasing a revised community server that's http/s based and since it's .net6, it could be packaged for hosting on linux as well.
  2. Add unit tracking to the WebApp

 

After those 2 things are accomplished, I'll release an alpha for download. There will be a couple hoops to jump through because of technical issues. I'll resolve them later but for now, you'll have to copy folders/files to a few places.

 

Oh also, I looked into ink tracking. It looks like BIS exposed the map ink via the marker system. I should eventually be able to grab and display that in Athena as well. I'm not sure if the reverse is true though: if I can supply ink. Inking in Athena is probably going to be possible but it won't be nearly as fluid as it was before just because I won't have access to the Windows API's ... it's a web app. Sad.

  • Like 2

Share this post


Link to post
Share on other sites

Athena Web - Updates Demo Video (YouTube)
 

Ive added the realtime communication component and the icons for the units. Its pretty basic as the viewport isnt currently setup to track the target unit but its already very promising. Unit positions and directions are updated with minimal delay. Theres some bugs to work out when switching missions and I want to add unit viewport tracking. Should have an alpha this weekend. 

  • Like 3

Share this post


Link to post
Share on other sites

You release an alpha on the weekend I'm away? Harsh.

Share this post


Link to post
Share on other sites

Tank: Reschedule your trip 😉

 

iPhone Screenshot - Tracking Menu

 

iPhone Screenshot - Tracking Controls - Bottom Left Corner

 

Added the ability to follow a unit. You can choose to follow the player, whatever unit they may occupy, or a specific unit. It'll work like you expect. As you move in game, it'll follow you around. There's two ways to get to the unit selection form: via the menu button or via a quick access button in the bottom left of the screen. By default, it'll track the player. If you interact with the map surface, it'll disable tracking. You can quickly re-enable it via a little toggle also in the bottom left of the screen.

 

I've added an interface that allows the user to delete cached copies of worlds. That same menu will be used to view the world offline later on when I've exposed the app as an installable PWA.

 

I've resolved some of the issues when starting, restarting and switching missions across worlds. It seems to work well as long as the world has already been exported to the extension and the extension has it ready to provide it to the app. I'll have to add a message to tell the app a new world is available which would then prompt it to request the mission again which would then prompt it to request the world as part of the established workflow.

 

Closer and closer.

  • Like 2

Share this post


Link to post
Share on other sites

Alpha Download

AthenaWeb_Alpha_20221104.zip

AthenaWeb_Alpha_20221105.zip (resolves issue with error in getUnits.sqf)

AthenaWeb_Alpha_20221105b.zip (resolves issue introduced by previous fix and resolves issue with unit tracking list)

AthenaWeb_Alpha_20221105c.zip (resolves issue with icon rendering error out after unit death due to texture deletion)

AthenaWeb_Alpha_20221107.zip (resolves follow after respawn, irrelevant units in follow list, adds all side colors, adds sleep to some scheduled routines, new signing key)

AthenaWeb_Alpha_20221108.zip (adds weapons firing indicators)

AthenaWeb_Alpha_20221108b.zip (adds team colors, ability to zoom via mouse wheel w/o disabling follow, resolved issue with follow failing after first disable)

AthenaWeb_Alpha_20221109.zip (adds counter scale unit icons, unit labels, ability to control label visibility)

AthenaWeb_Alpha_20221111.zip (adds group markers, icons based on weapons, user maintainable vehicle and weapon lists and ability to specify related icons/markers)

AthenaWeb_Alpha_20221120.zip (adds locations, revamps the texture interfaces, misc little fixes)

 

The installation directions will be as follows:

 

Setup instructions

1. Download the zip

2. Extract the @athenaWeb folder to wherever you want

3. Add that location as a mod to Arma

4. Disable BattleEye

5. Launch Arma

6. Start a mission

7. After the mission starts, there should be an Athena folder in your appdata\roaming folder, so typically: c:\users\%username%\appData\roaming\Athena

8. Move the wwwroot and Library folders from the @athenaWeb folder to the Athena folder, so typically: c:\users\%username%\appData\roaming\Athena\wwwroot and c:\users\%username%\appData\roaming\Athena\Library

9. Restart Arma

10. Start a mission

11. Open a browser and navigate to http://localhost:28805

12. Click the menu button (bottom center)

13. Click the play button

14. You do not yet have the map exported so you'll end up waiting for a bit for the extension to export the map, and then the app to retrieve the map from the extension. The status notifications are minimal but they get the point across.

 

What are you testing

1. The basics.

2. Does the extension start? If it does, and you load a new world, it'll start exporting immediately.

3. Does the web app open when you browse to the address in the browser?

4. How does it work for you on mobile, a tablet, whatever? (I'll look into preventing 'sleep' later but from my brief research: it's subjective so I can't guarantee you don't have to keep waking your phone up) 

5. How does it work over extended sessions? I've tested for as long as it takes to export some maps and drive around for a bit.

 

Known Issues

1. The play/stop buttons generate errors and fail to work after the first play click. Refresh the browser. I haven't focused on this feature or spent much time learning the ins and outs of Microsoft's SignalR javascript client.

2. There's an issue deleting multiple maps at a time in the app. It silently fails when trying to delete the chunks.

3. If you resize your screen, change its orientations, etc., the interactive area of the map does not resize with you. It's a simple fix. I just haven't gotten to it. Refresh the page and click start.

4. I have not disable PTZ on the page itself. PTZ works inside the map area but if you PTZ outside of it, the app itself rescales which is ... annoying. Refresh the page and click start.

 

Things to know

1. The extension will save the exported worlds to your appData\Roaming\Athena\Worlds folder. They are stored as individual json files. They are indexed when the Extension starts in the first mission you launch. If you manually add files to this folder, you'll need to restart Arma. If a world is somehow corrupted, it would need to be deleted from here and then Arma restarted.

2. The default port for the webserver is 28805. This can be changed in the Athena.Server_X64.Settings.json file along with the log file names and the debug level. 0 = none, 1 = errors, 2 = debug message. Setting the debug level to 2 will generate a LOT of disk activity. Do not run ARMA in debug mode unless you're trying to debug or help me out.

3. The Athena\wwwroot folder is where the integrated web server's content is served from. You could theoretically open the index.html directly but then the path would be something like file://c/users/... The app assumes you've opened the website from the http://localhost:28805 url and will use that when connecting back to the webserver for the world/mission data.

4. The address http://localhost:28805 is works fine if you're using it on a 2nd monitor. If you want to use it on a separate device, like a phone, tablet, laptop, whatever, you'll have to figure out what your pc's ip address is. Typically that address will be in the 192.168.x.x, 10.x.x.x or 172.16-32.x.x address spaces. If you try http://<ipaddress>:28805 or really http://<ipaddress>:<port> address and it's not working, there are some troubleshooting steps you can try. First, make sure, after you've launched a mission that the webserver starts. You can use a command, in your command prompt, like 'netstat -an | more' to see the open ports. You should see something like 0.0.0.0:28805 in the list. If that's the case, the webserver started and opened a port. If you're have problems accessing it, you might have a software firewall in place. It's up to you to figure out how to open the port or trust the app in that firewall software. Also, check any log files generated in the Athena folder and post a question here.

5. Chunk rendering: background and foreground. The backgrouns is generated for all chunks when the map is loaded. You should adjust your settings to a scale that consumes less memory if you're running into memory issues in your devices browser. If the app suddenly crashes and restarts, you probably hit a memory issue. I don't think I have much access to the memory boundary information or my usage of it but I might be wrong. When you pan and zoom on the map, the foreground of the visible chunks may be rendered depending on your zoom. It will determine this when the viewport stops changing. So, a result of this is as you fly around or drive around, until you stop, you'll be seeing the 'background' of the chunks. I might add some sort of a timer that renders the foreground, again depending on zoom level, every X amount of seconds regardless. We'll see.

 

Export Process

1. With @athenaweb enabled, as soon as you start a mission, if the extension doesn't have it indexed, it will trigger an export. It goes chunk to chunk (chunk is 500x500, cells are 50x50). It'll sample the elevations every 50m in the cell, determine the foliage levels, export the structures, roads, etc. per chunk. Then it will export the locations (even though they're not currently being shown in the app). All of that data will be stored in the json file in the worlds folder.

2. When the app is launched and the connection made, it will request the world from the extension so it can cache it locally. I plan to add a feature that lets you play 'live' where on each chunk render, it requests the chunk from the extension so there's no caching required. It'll be slower to render but less problematic. Back on subject: it asks for the mission, it gets the mission, it checks the world specified in the mission and tries to load it. If it has it in cache, it loads it. If it doesn't, it requests it from the extension. If the extension has it, it provides it to the app in a separate process. If it doesn't have it, as in its exporting to worlds folder, it will show you an error. When the world is eventually exported, it'll alert the app that a new world file is available. This triggers a re-request for the mission. The mission is sent to the app, the app checks the world specified in the mission and requests the world. This time the extension has it and supplies it separately to the app. When all of that is done, the map will eventually be loaded and you'll see your units on the screen.

 

Future Additions

1. Map markers

2. Group waypoint markers

3. User ink / Map Drawing

4. Map locations

5. User anchors

 

Other Thoughts

1. Is there a timeline on a workshop release? Not yet. I wouldn't want to replace the existing workshop item, even as this matures, with something that has fewer features. So until this one exceeds the current workshop item, I don't think I'll replace it. I might post it as a separate Workshop item eventually, like a 'dev branch', when I've simplified the installation instructions and had the extension whitelisted by BattleEye.

  • Like 2

Share this post


Link to post
Share on other sites
On 11/3/2022 at 5:52 PM, skruis said:

Tank: Reschedule your trip 😉

 

Done! Is the key up to date? My server won't let me join.

Share this post


Link to post
Share on other sites

I think its the same key…does your server require battleye?

  • Thanks 1

Share this post


Link to post
Share on other sites
Just now, skruis said:

I think its the same key…does your server require battleye?

No, no battleye. I've turned off sig checking for now.
The mission is exporting right now. 🙂

 

Share this post


Link to post
Share on other sites

Oh.. got this in client RPT...

 

Error Undefined variable in expression: _unitsp

File Atena\mission\getunits.sqf..., line 53

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×