This is a prefabs library as a result of my attempt at making timer-like devices in gold source, a popular technical challenge among this engine’s mappers, the objective, as always, being to use as few entities as possible.
Please look at the readme file for a proper break-down of the prototypes and their entity count.
The various reel constructions borrow from these cornerstone designs. You’re invited to jump to the individual design sections, look at the entity count or compile and run the maps, to motivate the read.
Angular Velocity + Wait Based Reels
This common core design revolves around the avelocity (Angular Velocity) property of the func_train entities and wait (Wait Here) property of path_corner(s). In a nut shell, we achieve a desired amount of revolution through a function of angle/sec and wait (AKA spin speed and time). The reel is a func_train that resides by default on a "stop" path_corner. When the button/train is activated, it moves onto an "elapse" path_corner for a specific amount of time then goes back to the "stop" one. The amount of time it’ll spend onto the “elapse” path_corner determines the amount of revolution. If we have a decagon reel with 10 symbols, we know that each face represents 36 degrees out of 360. If the angular velocity is “36 0 0”, AKA 36 degrees/sec and we let the train running for 1 second, the reel will rotate of one face.
That design has been deemed the leanest after some brainstorm.
In order to make a reel turn both up and down, another “elapse” path_corner is added. When down is pushed, the train is sent there to wait longer than for the up position. Long enough to perform a full rotation minus 1 face. During that time, a func_wall is toggled to hide the reel spinning in the inverse position.
- Up Only: An env_beam is based on the origin of a reel that has a pie-shaped hole. A hurtable button is hidden within the reel and will show up only when the hole passes over it when the reel passes from 9 to 0.
- Up/Down: This one is tricky. In order to re-use entities, we use the same env_beam and add a hurtable button to an offset location where the reel will spin in the down position. In other words, when the reel spins down, it moves away from the up setup in order to expose the down button only when 0 is reached from 9.
This design is extremely simple. Think of a bike lock with rotary reels. When the reels are aligned, an env_beam is allowed to pass through all the reels and activate a hurtable button. This design is used to stop timers and for the slot machine prototype. It’s a very lean substitute to num pads, which I’ll try to release soon.
Combination can be changed simply by remodeling the reels in a way to have holes placed under the desired numbers.
The up/down design think time is 0.1 second. Creating a reel that reacts faster, e.g.: for displaying tenths of seconds, is tricky as lasers lowest frequency is 0.1 second. This has been achieved heuristically for the 5 digits timer prototype through offsetting the hurtable button and playing with trigger delays.
We’re basically bending the arm of the engine. We’re very lucky that a design exists which can achieve such characteristic systematically.
Reliability and Calibration: Using angular velocity of func_train and wait of path_corners leads to imperfect though consistent result meaning that calibration of the devices is required, but that once calibrated, the devices will produce consistent outputs. This is even true for the sub-second reel across multiple fps_max, which is surprising (while re-assuring).
As a means to calibrate the reels, a calibration apparatus has been created. The red triangles are meant to be merged with the reels while the black bar is meant to be places in the middle. You can find this in the second prototype file.
All the reels have been calibrated to guarantee a perfect accuracy up to 100 iterations. (This might give an idea of the required efforts).
Known Issues: Some reel prototypes are very sensitive to be moved around on the map. Some designs might break once every four tries. I don’t know why. Try saving before moving them. If successful, the device will work forever until moved again as a whole.
Presentation: Presentation have been optimized for demonstration clarity and to create the prototypes in a timely fashion. Entities manifest omit presentational entities. Reels and casings sides got their texture nullified for minimum usability. Stock digit decal textures have been used with info_textlights to quickly create textures that aren’t shadowed. Customize as you please.
Texture Pack: The required texture pack was built in the idea of tracing some kind of standard for symbol texture pack. No custom texture was actually used. It’s expected that you’ll customize this texture pack for your reels.
Disclaimer: These prototypes are meant to be pushed further or polished and adapted to maps. This collection contains issues here and there I have no time to address and that are neglectable/not crucial for the explanation and conveying of this "technology".
License: CC BY-NC-SA. Google it. (In a nutshell: Use or modify = Give credit, Commercial = No … well ask) I’d appreciate you say hello by email if you plan using this content anyhow.
Foot Note: Feel free to contact me for comments, bugs or anything else at the provided e-mail address. A post on num pad devices might following in the weeks following the one at which this collection has been released.