Well what a coincidence.
as am I.
https://i.gyazo.com/e96fd50a92b0ccd398ac58c8b5aa556c.mp4
works in reverse too.
ideally i’d use this on my bezier track, so the solving errors are less noticeable, but for testing it seems to work fine.
Well what a coincidence.
as am I.
https://i.gyazo.com/e96fd50a92b0ccd398ac58c8b5aa556c.mp4
works in reverse too.
ideally i’d use this on my bezier track, so the solving errors are less noticeable, but for testing it seems to work fine.
I notice you’re also doing chord distances. In my simulation, I start with the bogie leading (in the direction of travel) and move backwards calculating the chords. Do you do that as well, or are you somehow managing the changes of instantaneous velocity that occur when the train goes over a curve of changing curvature?
EDIT: Or are you not solving for chord and just interpolating between the two points that are being moved at the same speed in curve space?
EDIT: here’s a video of mine at work:
https://cdn.discordapp.com/attachments/272554372473421825/581967898118062081/2019-05-25_14-48-04.mp4
It solves for the leading bogie and goes backwards.
not sure what a Chord distance is, in short what i do is have each segment of track be defined by 2 points, and their distance. then solve by doing CFrame.new(P1,P2)*CFrame.New(0,0,-D)
if D is greater than the distance it’ll recursively go down the track until D is within bounds, same if it’s less than 0.
Sadly, this means that directionality is programmed into the track, and i’m not sure how to not do that, as ideally I’d want to be able to do lööps like this
EDIT: i should clarify that P1 and P2 are the 2 positions of the node, and i use the position of the CFrame to calculate the bogey location, then the car just does the same thing of CFrame.new(Bogey1,Bogey2)*CFrame.New(0,0,-CarLength/2)
Working on another monster for my game Guardians. Meet Minotaur
(I will add it’s tail soon, don’t worry)
Currently looking for a studio to develop with too, so reach out to me if you’d like
I Started my project about 2 weeks ago
its based on the game “Survive The Disasters (1 & 2)”, because i love that game!
it doesn’t have a real name yet, i’ll change it when i the game is 60-70% done
i’d say its less than 10% complete… but i’m really happy developing that game (even tho i’m a solo dev, which makes it a bit boring )
i was going to make a post on the #development-discussion:cool-creations category about the AI i just finished. but it won’t let me >:c
so… my only choice is to say about it here ;0
to be honest, i don’t even know how i made it…
just letting you know: i started making the AI 10:00AM and somehow, i finished it at 1:00AM. In short: i built my own AI in 15 Hours(i didn’t stop until it was finished) and on the next day i fixed some bugs.
(Note: the AI is 『THE WORLD』(from JoJo) so i had to make his fighting moves and even his Time Stopping Ability)
Here is the link of my project
and… Here is the link of the AI
bye :3
Some updates to my little project…
Garage
Spawning Cars
- YouTube
Also, spawning cars is possible, now included with a cooldown.
Just finished up most of the refreshed song play UI, looking much more like the rest of the theme than before. More features already in (track motion, negative BPM), still more to go! (discord notification sound at around 43s or so)
Looks, really good hope to see more of this very soon. Great job man!!
Looks, great man can’t wait to see more of your. UI designs this one is really better text needs a little fixing.
So what I did, and I don’t totally understand what exactly I did because I tried to copy it and failed, is keep track of bogies as objects. The bogie object stores its current segment, its distance along the segment, and if it’s facing the direction of the curve or it’s reversed. The bogie’s :Move(dist)
accepts a signed number and the number is negated if the direction is reversed. Then I tell the segment object to move that distance, which the results are then applied to the bogie (CurrentSegment, DistanceInSegment, ReversedInSegment) and how long the bogie actually moved for (so I can tell if the bogie reached a terminus). Somehow it all works.
I also keep track of how segments are connected to each other, since mine also have a directionality. They have NextSegment and PrevSegment, and also NextSegmentReversed and PrevSegmentReversed. When two segments connect, if they are aligned, NextSegmentReversed is false on both sides of the connection. If they aren’t aligned, the NextSegmentReversed or PrevSegmentReversed on both segments are true.
I wanted wyes and reverse loops so this was an important feature.
As far as chords, that’s the straight line distance between two points on a circle:
In the case of trains, the distance between those two points is the wheelbase of the car. So, what I do is I start with the leading bogie and every bogie after uses a simplified form of simulated annealing based on the required chord distance and moves the trailing bogie forward and backwards until the chord distance is within tolerance (currently 0.1 studs and a max of 5 iterations). Works pretty well, but only for non-superelevated curves because the chord distance is calculated with zero elevation from the curve, so for large superelevations the top of the train gets significantly pinched. Kind of an edge case due to my test track (large superelevation angle, sharp radius) but it’s noticeable.
With regards to bezier curves: You can see I have a bezier curve system all set up but I chose not to use it and go with a simplified version instead for various reasons. First is that it’s a lot of computational power to set up the bezier curves (there’s no solution for the length of a parametric bezier curve, and there’s no solution to normalizing the velocity of a cubic bezier curve, so I generate a number of points and draw straight lines between them). Second is that I have to ensure sequential curves have the same endpoint position and endpoint direction. That’s quality checking that I would avoid if I could.
So here’s what I do. In its natural operation, the coaster tool creates 20 parts that it uses as a low-resolution preview of the curve. They’re placed at regular intervals in parametric space so I don’t have to spend a lot of power normalizing the velocity and all that, and they are grouped by segment and named in the order the segments appear, that’s how the tool was initially programmed. The segments are defined by an ordered set of parts which the train moves in straight paths between, and uses those models to define what each segment is. Now: the low-resolution previews do not have a part at 0 or 1 since there’s already control point bricks there, so there’s a gap between two segments. So I create a tiny 2-part segment between sequential segments featuring the tail part of the first segment and the head part of the second segment (or other combinations if they’re facing each other etc.) that uses the existing parts and rotates one of the CFrames 180 degrees if the segments aren’t facing the same way. These tiny bridge segments are the same object as the other segments and work exactly the same, but they are made to be destroyed and remade on the fly to create switches.
Maybe not ideal, but I’ve gotten it to work really solidly.
EDIT: this is a video of the reversed thing, and showing the change in instantaneous velocity thing:
Figuring out where the best place to teleport a vampire is when they need to get out of trouble (seeing which TP has the least ppl nearby)
https://gyazo.com/bdca73dc14ee160702108f0b86fed909
Working on a little UI Designer Suite plugin to help with workflow, everything is tailored towards what I do rather than what I think everyone does. I see myself doing a lot of the same things when designing UI, such as grabbing icons, colors, and other preset UI/shapes in other games I used them in. Hopefully this helps
Main screen:
Toolbar:
More to come
I was watching this and thought the notification was real, spent a few minutes scouring through all my servers trying to figure out who pinged me.
Amazing work as always
The fact you have UI before some elements and after some is oddly irking. No consistency.
Yeah I noticed it as well - i’m changing the way it looks currently, first time messing with google’s new material philosophy which released in January.
You never seem to fail us with your magnificent post in this thread! I love your models and build perfectly perfect!
Made this thing few days ago