What is it?
Hi, today I'd like to show off one of our in-development plugins. Over the past few weeks we've developed an ATM machine and generation algorithm that procedurally generates random seeds and places ATMs in monuments at runtime / request, based on a set of spawn points manually placed.
Example Video (ATM only)
In this video we cover just the alpha UI and basic transaction.
WIP Interface:
In this example the interface is still in it's alpha state however we intend to add:
Multiple bank accounts
Wire transfers
Full transaction log
Better handled input (basically a low-level full reimplementation of the uMod CUI Input)
ATM Placement & Algorithm
The ATMs are placed all over the island by randomly targeting monuments via a seed and then randomly selecting (n) possible spawn positions within each monument and cross referenced to check if the selected points fall within specified parameters. If the criteria is met, the ATMs are generated.
Spawn points
The possible spawn points for each ATM are manually placed in every monument. All ATMs on the map at the time of saving will be saved and positioned relative to the selected monument, this is so monument size does not matter or if monuments overlap. The ATM will always spawn relative to the center of the selected monument regardless of distance.
A more extreme example of possible spawn locations. Over 500 possible ATM spawn locations were manually placed at the launchsite. Yet in reality, only 1 or 2 at max will ever be generated at the same time (assuming the seed criteria is met).
If you're curious, it looks like this on the map.
ATMs are placed via an in-game command. We generate the position and the quaternion by always having the ATM 'look at' the admin spawning them.
An exemption is made to this rule when not in noclip to assure the ATM is perfectly upright with no pitch or yaw offsets.
Seed
Seeds are generated based on a simple System.Random call, nothing fancy. From this we extract various information such as:
Min Amount
Max Amount
Min Distance
Max Distance
Min Elevation
Max Elevation
Max per monument
Can be out of order
And various other things by comparing different positions of the seed against each other.
Putting all above into practice we get something like this. The ATM locations are selected and then spawned.
Seed ID: 520847043
Seed ID: 864521137
Seed ID: 991622208
This seed is a pretty heavy one, generating quite a lot of ATMs. The Max Amount and Min Distance numbers are quite obvious here.
Until next time
I hope you've enjoyed this quick overview of what we have in the pipeline for our server. If you're interested in more or getting involved in the project you can Join our Discord here or add me on Discord: Revolving DCON#1337
This will be an absolutely free plugin with everything I've displayed and much more.