Activate1?input-if-active:input-if-inactive
Angle of rotator is it's input multiplied by it's range. WNP's post Snow's guide in case you can't understand WNP's post
Control surface behind center of mass pushes tail down, then wing pushes entire airplane up, so total force is wing lift-stab lift-mass
Control surface in front of COM pushes aircraft up, so total force is wing lift+stab lift-mass
You can make rear wing that's smaller than front one but has upwards lift, but such configuration is usually unstable because force on larger wing increases faster (in terms of AoA) than force on smaller wing and rotates airplane to the direction it already rotates.
Pitch*clamp01((Time-smooth(Time,abs(rate(GS<V1))?9999:0))>T1)*clamp01((Time-smooth(Time,abs(rate(GS<V2))?9999:0))>T2) .... *clamp01((Time-smooth(Time,abs(rate(GS<Vi))?9999:0))>Ti) V1,V2...Vi is speed at which 1,2...ith gear switches in meters per second. T1,T2...Ti is time 1,2...ith gear needs to switch.
Hippo's right, any weapon is useless if you don't know position of target.
Also FT-based missile will not give enemy any warnings and will not care about chaff|flares, so it will be almost impossible to dodge it.
Here it is. I don't really know how it'll work, but it's actually coded.
@PlaneFlightX
@rexzion (perhaps you noticed already)
Kendog, you will know about this comment without mention since it's your post...
Here. Some white parts were cropped so you need to use white background.
"fun" fact: it uses ~7.28 symbols per pixel. Andrew image used 16 symbols per pixel so tech's better than it was, but PNG files can use less than one byte per pixel...
a helicopter or any rotorcraft that can at least exceed Mach 1
don't make it look too much like an airplane.
Can turbofan be considered as heli rotor?
It's impossible to make something realistic that goes around speed of sound and rotates and produces thrust enough to keep itself and it's power source in air.
If you will keep "realistic" part, you can use jets (doesn't goes around speed of sound (inlet decreases speed of airflow)), ion engines and plasma actuators (can't keep it's power source in air without being very large or very long, doesn't rotates), scramjets (can't keep power source in air (produces low thrust on subsonic speeds), doesn't rotates)
It's not really health, but you can check if engine is alive using it's thrust output.
Target name may be a good idea, but we don't have such thing irl.
Ability to track unselected aircraft
It will be overcomplicated. You know, FT doesn't even have arrays to store it properly.
At the moment it's possible to get radar-like system that saves position and speed of target and updates it while target's selected, it's not a problem to store four or five targets, and maybe add some info from user's camera. You should know about it as "a person who uses a lot of FT in every build".
ability to distinguish if target's in the air or on the ground
That "AA-AG" system is not about air and ground, it's more about builds and game objects.
AI this, AI that
Just don't treat it as AI, it's autopilot+auto targeting. Even weapon selecting is not it's problem. Use FT.
"aircraft is deemed not airworthy"
AFAIK there's some differences in autopilot outputs and that's all.
Will adding HE round to gun really worth it? IMHO guns are arcade-like and they're as simple as they must be, if you need something complex use cannons.
̶2̶4 28 Sides of fuselage... Building with calculator and notepad... But it works correctly, right?
What doesn't works correctly is slicing of hollow fuselages and a lot of underlines in combination with full stops.
I'm not sure if it's just for me and how exactly it works, so i can't send bug report at the moment, but it's a post for complaining, right?
@ollielebananiaCFSP I agree that it's results are still too laggy and too large, but you're comparing wrong app.
With fuselage you can get a lot of different shapes and your brain can understand what's edge and what's plane, but this app can only work with what a label can display and uses array of pixels.
But i have different function: it takes two python functions as edges and fills area between them with solid color using underlines. I didn't noticed any fps decrease in level using three 1560-line cats made with that function and i could edit them in designer with minor lags. I think it's the result for you to compare.
@WNP78
I will try it if i will find suitable squares.
For now i found out that it will only be effective if large square is 17 or more pixels wide, and both full stop and unicode square aren't suitable because full stop is round-ish and square isn't actually square. image
Little update since i saw spiderman avatar mod for it: it's unity and i don't understand how it stores 3d model, so i can't do anything with it.
I wish good luck for others.
idk if it's a problem or a bug, but there's constant 0.01 in your integrator so it may not work correctly in low physics.
it's definitely not a bug or a problem, but why don't you use integrator to control pitchrate always, even with non-zero pitch?
@FlyingPatriot #comment-4113027
1. use markdown! [text](address)this one should work
2. your link is not readable because of stars or underscores (markdown)
3. don't use redirects, it sucks to get to four different domains just because you need one japanese site.
Some recommendations: <#RRGGBBAA> and <#RGBA> works too, so it isn't necessary to write "color";
sort of run-length encoding will significantly decrease performance cost (especially if you will ignore some of least significant bits);
you don't need to write pixels with zero alpha, you can use whitespace or <space=Xem> tag instead (i'm using tag if there's more than 15 transparent pixels and whitespaces otherwise, but it's just because of length and i don't really know how it affects performance);
if you're using left alignment you can throw away transparent pixels in front of linefeed.
Don't you think last line of description makes challenge nonsensical?
You will literally need to call most of humans who can do it to get five of them here, and even so, five months feels like a bit too little time to do it (but it may be just lazy me).
For designer, it's mostly fine (because i don't really use it's menus), but two changes i'd like to see is possibility to use Tab/Shift+Tab and spacebar to choose and control input fields/buttons/checkboxes and possibility to switch off screen updates as long as nothing changed. In my opinion it's just stupid to load 80% of GPU while anything stays same.
@WormWithLegs
... or replace RotationAxis tag in xml with PositionAxis.
it's properties here are <positionaxis axis="0,1,0" input="Trim" scale="0.2" min="-0.45" max="1.5">/positionaxis>
(nvm all-lowercase letters, it's broken by browser html parser)
axis is a vector (it may not be normalized), it's offset of moving end in meters when input is 1/scale.
Gun firing and recoil animation was not synchronized for me for some reason.
I did not expect such good and highly-appreciated build to be drone with fixed animation.
Not sure if i can call it revolutionary.
Her legs are beautiful though.
I just understood why code must have comments.
What's the difference between chasing and following?
Is there significant reasons why you use RateH >= -0.05 & RateH <= 0.05 instead of abs(RateH) <= 0.05 ?
What's the difference betwween TrueH and Heading?
Was it originallly writen in FT or was it copied from other program?
Entire f.cking year...
So many things changed, but tournament still says "The first Dogfights start at the 6th June at 6pm CET" as if it's still 2021-05
Yes, even sp airplanes (mostly) have wings, but... but hey, you're gold, don't you know how sp physics works already?
For wings it isn't even VLM, it's just fixed function.
Other parts have sort of shading but it doesn't affects force produced by wings, props etc.
RU version, page 8, line -9: "Двести пятьдесят. Двести семьдесят. Ручка на себя. Самолёт плавно поднял нос и
оторвался от полосы. Ничего сложного. Самолёт с рёвом набирал высоту."
RU version, page 9, line 1: "Альтиметр уже показывал больше трёх с половиной метров."
3.5m is just a bit more than height of modern fighter; you don't need to pull nose up to get 3.5 meters of altitude in such time.
@JuanShot2Go
I modified it a bit, so now it looks like that: if(abs(rate(clk))){ addr=ai0+ 2*ai1+ 4*ai2+ 8*ai3+ 16*ai4+ 32*ai5+ 64*ai6+ 128*ai7 if(wrt){di=di0+ 2*di1+ 4*di2+ 8*di3+ 16*di4+ 32*di5+ 64*di6+ 128*di7} } addrLarge=floor(addr/3) addrShift=pow(256,repeat(addr,3)) if(addrLarge=0){ if(di>=0){m0=m0-(repeat(m0,256*addrShift)-repeat(m0,addrShift))+di*addrShift} value=floor(repeat(m0/addrShift,256)) } if(addrLarge=N){ if(di>=0){mN=mN-(repeat(mN,256*addrShift)-repeat(mN,addrShift))+repeat(di,256)*addrShift} value=floor(repeat(mN/addrShift,256)) } di=-1
.
If clk was switched, buttons ai0...ai7 will be used as new address (each button is one bit, ai0 is least-significant one).
If clk was switched and wrt is true, buttons di0...di7 will be used as data to store (each button is one bit, di0 is least-significant one).
addrLarge is number of memory variable that contains selected address. It's 1//3 of address, because single-precision floating-point format stores 23 fraction bits and one implicit leading bit, and 24/8 is 3, i.e. it can store up to 3 bytes (not including exponent and sign).
To store 3x8 bits in one 24-bit variable without intersection we need to shift it, but FT doesn't have any bitwise operators. So to shift value by N bits we need to multiply it by 2^N. Offset that we need to get is repeat(addr,3) bytes (see previous line), i.e. to store value in clean memory variable at Nth byte we need to add value*pow(2,8*repeat(addr,3)) (it's equal to value*pow(256,repeat(addr,3))) to memory variable.
To clear a byte of memory variable it uses m-(repeat(m,256*addrShift)-repeat(m,addrShift)). i wrote it 3 months ago and i don't remember how it works, but looks like it works. value setter shifts memory variable and then uses repeat(...,256) to cut anything that's above 7th bit and floor(...) to cut anything that's below 0th bit.
In programming languages like CS and Python we can create array named m and then get Nth element of array with m[N], but FT doesn't have arrays. So instead it uses pseudo-array, that's a lot of variables named mN and separate setters for each one.
After it's used di sets to -1, and it will contain -1 as long as clk will not be switched (see 7 lines above). If di<0, mN setter will not be activated, and therefore memory contents will not be changed.
Finally, if clk was switched and wrt is false, buttons di0...di7 is used to display separate bits of value that was previously obtained from one of memory variables (see 3 lines above)(didn't wrote it in code above because of comment length limit).
@linxiaofeng2339 @huiyuanzhang
Air pressure in SP is exp(-Altitude/7640) or pow(IAS/TAS,2). IIRC these two is equivalent (i.e. difference is less than 1e-6), but you should check it.
+1Activate1?input-if-active:input-if-inactive
Angle of rotator is it's input multiplied by it's range.
WNP's post
Snow's guide in case you can't understand WNP's post
Control surface behind center of mass pushes tail down, then wing pushes entire airplane up, so total force is wing lift-stab lift-mass
Control surface in front of COM pushes aircraft up, so total force is wing lift+stab lift-mass
You can make rear wing that's smaller than front one but has upwards lift, but such configuration is usually unstable because force on larger wing increases faster (in terms of AoA) than force on smaller wing and rotates airplane to the direction it already rotates.
Pitch*clamp01((Time-smooth(Time,abs(rate(GS<V1))?9999:0))>T1)*clamp01((Time-smooth(Time,abs(rate(GS<V2))?9999:0))>T2)
....*clamp01((Time-smooth(Time,abs(rate(GS<Vi))?9999:0))>Ti)
V1
,V2
...Vi
is speed at which1
,2
...i
th gear switches in meters per second.T1
,T2
...Ti
is time1
,2
...i
th gear needs to switch.Is it (the code) your own development?
+1Hippo's right, any weapon is useless if you don't know position of target.
Also FT-based missile will not give enemy any warnings and will not care about chaff|flares, so it will be almost impossible to dodge it.
Here it is. I don't really know how it'll work, but it's actually coded.
+1@PlaneFlightX
@rexzion (perhaps you noticed already)
Kendog, you will know about this comment without mention since it's your post...
in xml set button's
interactionType
toToggle
clamp01 requires one input. try to activate AG1 and try again. And you don't need activation group in rotator itself with this code.
set
zeroOnDeactivate
toFalse
in input section of rotator's xml.or use something like
sum(Throttle*clamp01(Activate1))
for input.Here. Some white parts were cropped so you need to use white background.
+1"fun" fact: it uses ~7.28 symbols per pixel. Andrew image used 16 symbols per pixel so tech's better than it was, but PNG files can use less than one byte per pixel...
swedish flag
+1red bull logo with text
red bull logo without text
spotify
Use Military font if you see thick white stripes between pixels.
My entry
@AltheimManufactorum For hexagons, perhaps it's pipes ("|") or dashes, you can clearly see it while she's near 9m AGL and label's semi-transparent.
Can turbofan be considered as heli rotor?
It's impossible to make something realistic that goes around speed of sound and rotates and produces thrust enough to keep itself and it's power source in air.
If you will keep "realistic" part, you can use jets (doesn't goes around speed of sound (inlet decreases speed of airflow)), ion engines and plasma actuators (can't keep it's power source in air without being very large or very long, doesn't rotates), scramjets (can't keep power source in air (produces low thrust on subsonic speeds), doesn't rotates)
It's not really health, but you can check if engine is alive using it's thrust output.
Target name may be a good idea, but we don't have such thing irl.
It will be overcomplicated. You know, FT doesn't even have arrays to store it properly.
At the moment it's possible to get radar-like system that saves position and speed of target and updates it while target's selected, it's not a problem to store four or five targets, and maybe add some info from user's camera. You should know about it as "a person who uses a lot of FT in every build".
That "AA-AG" system is not about air and ground, it's more about builds and game objects.
Just don't treat it as AI, it's autopilot+auto targeting. Even weapon selecting is not it's problem. Use FT.
AFAIK there's some differences in autopilot outputs and that's all.
Will adding HE round to gun really worth it? IMHO guns are arcade-like and they're as simple as they must be, if you need something complex use cannons.
+2̶2̶4 28 Sides of fuselage... Building with calculator and notepad... But it works correctly, right?
+1What doesn't works correctly is slicing of hollow fuselages and a lot of underlines in combination with full stops.
I'm not sure if it's just for me and how exactly it works, so i can't send bug report at the moment, but it's a post for complaining, right?
@ollielebananiaCFSP I agree that it's results are still too laggy and too large, but you're comparing wrong app.
+1With fuselage you can get a lot of different shapes and your brain can understand what's edge and what's plane, but this app can only work with what a label can display and uses array of pixels.
But i have different function: it takes two python functions as edges and fills area between them with solid color using underlines. I didn't noticed any fps decrease in level using three 1560-line cats made with that function and i could edit them in designer with minor lags. I think it's the result for you to compare.
@IAlsoBuildPlane try again, then open web console (it's usually in dev tools, F12) and send me screenshot
+2@IAlsoBuildPlane Because it's svg, it's not even raster
+2Try to use png instead
@WNP78
+1I will try it if i will find suitable squares.
For now i found out that it will only be effective if large square is 17 or more pixels wide, and both full stop and unicode square aren't suitable because full stop is round-ish and square isn't actually square.
image
Damn, i hoped you will cut sprite if it's out of screen bounds, but you just made it disappear.
Little update since i saw spiderman avatar mod for it: it's unity and i don't understand how it stores 3d model, so i can't do anything with it.
+1I wish good luck for others.
idk if it's a problem or a bug, but there's constant 0.01 in your integrator so it may not work correctly in low physics.
it's definitely not a bug or a problem, but why don't you use integrator to control pitchrate always, even with non-zero pitch?
Hey, birdie, are you finally alive?
@FlyingPatriot #comment-4113027
+11. use markdown!
[text](address)
this one should work2. your link is not readable because of stars or underscores (markdown)
3. don't use redirects, it sucks to get to four different domains just because you need one japanese site.
@ReinMcDeer
+1targetingStyle
(ContinuousLock
orStandardLock
, though i'm still not sure if it can be changed)It's a shame you can't make it work.
+1Some recommendations: <#RRGGBBAA> and <#RGBA> works too, so it isn't necessary to write "color";
+1sort of run-length encoding will significantly decrease performance cost (especially if you will ignore some of least significant bits);
you don't need to write pixels with zero alpha, you can use whitespace or <space=Xem> tag instead (i'm using tag if there's more than 15 transparent pixels and whitespaces otherwise, but it's just because of length and i don't really know how it affects performance);
if you're using left alignment you can throw away transparent pixels in front of linefeed.
Don't you think last line of description makes challenge nonsensical?
+1You will literally need to call most of humans who can do it to get five of them here, and even so, five months feels like a bit too little time to do it (but it may be just lazy me).
/reminder for myself to be a bit less lazy
+1My entry
For designer, it's mostly fine (because i don't really use it's menus), but two changes i'd like to see is possibility to use Tab/Shift+Tab and spacebar to choose and control input fields/buttons/checkboxes and possibility to switch off screen updates as long as nothing changed. In my opinion it's just stupid to load 80% of GPU while anything stays same.
+1My entry (i will re-upload it if you insist).
Did you mean hovercrafts?
@WormWithLegs
+1... or replace RotationAxis tag in xml with PositionAxis.
it's properties here are
<positionaxis axis="0,1,0" input="Trim" scale="0.2" min="-0.45" max="1.5">/positionaxis>
(nvm all-lowercase letters, it's broken by browser html parser)
axis is a vector (it may not be normalized), it's offset of moving end in meters when input is 1/scale.
@teddyone02 boiii it was fucking year ago, i almost forgot about it...
Gun firing and recoil animation was not synchronized for me for some reason.
+1I did not expect such good and highly-appreciated build to be drone with fixed animation.
Not sure if i can call it revolutionary.
Her legs are beautiful though.
I just understood why code must have comments.
+1What's the difference between chasing and following?
Is there significant reasons why you use
RateH >= -0.05 & RateH <= 0.05
instead ofabs(RateH) <= 0.05
?What's the difference betwween TrueH and Heading?
Was it originallly writen in FT or was it copied from other program?
@Kendog84
If i understood correctly it's gimbal lock and it isn't a bug.
Sorry for off-topic message.
+3Entire f.cking year...
+2So many things changed, but tournament still says "The first Dogfights start at the 6th June at 6pm CET" as if it's still 2021-05
Yes, even sp airplanes (mostly) have wings, but... but hey, you're gold, don't you know how sp physics works already?
For wings it isn't even VLM, it's just fixed function.
Other parts have sort of shading but it doesn't affects force produced by wings, props etc.
One important thing: it have nothing to do with sp.
RU version, page 8, line -9: "Двести пятьдесят. Двести семьдесят. Ручка на себя. Самолёт плавно поднял нос и
оторвался от полосы. Ничего сложного. Самолёт с рёвом набирал высоту."
RU version, page 9, line 1: "Альтиметр уже показывал больше трёх с половиной метров."
3.5m is just a bit more than height of modern fighter; you don't need to pull nose up to get 3.5 meters of altitude in such time.
i understand it's april fool, but it isn't fun at all.
+3please choose better topic for your jokes next time.
SP v1.12.125:
+1mark
tag of one label obscures text of other labels located nearby.gif, uploaded craft
Old props (partType Prop-1 and Prop-2) will look like propeller engines but work like jet engines.
+1Can it be someone other's build with modifications?
+1If no, can i use parts of someone other's builds?
@JuanShot2Go
I modified it a bit, so now it looks like that:
if(abs(rate(clk))){
addr=ai0+ 2*ai1+ 4*ai2+ 8*ai3+ 16*ai4+ 32*ai5+ 64*ai6+ 128*ai7
if(wrt){di=di0+ 2*di1+ 4*di2+ 8*di3+ 16*di4+ 32*di5+ 64*di6+ 128*di7}
}
addrLarge=floor(addr/3)
addrShift=pow(256,repeat(addr,3))
if(addrLarge=0){
if(di>=0){m0=m0-(repeat(m0,256*addrShift)-repeat(m0,addrShift))+di*addrShift}
value=floor(repeat(m0/addrShift,256))
}
if(addrLarge=
N){
if(di>=0){m
N=m
N-(repeat(m
N,256*addrShift)-repeat(m
N,addrShift))+repeat(di,256)*addrShift}
value=floor(repeat(m
N/addrShift,256))
}
di=-1
.
If
clk
was switched, buttonsai0
...ai7
will be used as new address (each button is one bit,ai0
is least-significant one).If
clk
was switched andwrt
is true, buttonsdi0
...di7
will be used as data to store (each button is one bit,di0
is least-significant one).addrLarge is number of memory variable that contains selected address. It's 1//3 of address, because single-precision floating-point format stores 23 fraction bits and one implicit leading bit, and 24/8 is 3, i.e. it can store up to 3 bytes (not including exponent and sign).
To store 3x8 bits in one 24-bit variable without intersection we need to shift it, but FT doesn't have any bitwise operators. So to shift value by N bits we need to multiply it by 2^N. Offset that we need to get is
repeat(addr,3)
bytes (see previous line), i.e. to store value in clean memory variable at Nth byte we need to addvalue*pow(2,8*repeat(addr,3))
(it's equal tovalue*pow(256,repeat(addr,3))
) to memory variable.To clear a byte of memory variable it uses
m-(repeat(m,256*addrShift)-repeat(m,addrShift))
. i wrote it 3 months ago and i don't remember how it works, but looks like it works.value
setter shifts memory variable and then usesrepeat(...,256)
to cut anything that's above 7th bit andfloor(...)
to cut anything that's below 0th bit.In programming languages like CS and Python we can create array named
m
and then get Nth element of array withm[N]
, but FT doesn't have arrays. So instead it uses pseudo-array, that's a lot of variables namedmN
and separate setters for each one.After it's used
di
sets to -1, and it will contain -1 as long asclk
will not be switched (see 7 lines above). Ifdi<0
,mN
setter will not be activated, and therefore memory contents will not be changed.Finally, if
clk
was switched andwrt
is false, buttonsdi0
...di7
is used to display separate bits ofvalue
that was previously obtained from one of memory variables (see 3 lines above)(didn't wrote it in code above because of comment length limit).@linxiaofeng2339 @huiyuanzhang
Air pressure in SP is
exp(-Altitude/7640)
orpow(IAS/TAS,2)
. IIRC these two is equivalent (i.e. difference is less than 1e-6), but you should check it.I'm interested too.
I tried to replace linefeeds with voffset and pos, but if i understood correctly it didn't work too.