#πŸ’¬-modding

1 messages Β· Page 1 of 1 (latest)

normal bramble
#

First

karmic pecan
#

second

proud sundial
#

Ur cringe

karmic pecan
#

you're*

proud sundial
#

will be using that gif

lunar breach
#

OG claim right here

long pendant
#

Where the programming channel

cursive moon
lapis comet
long pendant
#

I just released my list of all BeamNG car codes names is gone noooo

#

I think i have it saved somewhere else thankfully

charred tulip
#

@long pendant Hey its Zach from facebook i got a question

#

Sent you a Dm request

ruby badger
long pendant
wraith sail
earnest gale
#

I'm pretty sure I'm remembering correctly but wasn't there like, a three wheel or five wheel stambecco on the BeamMP page? What mod is that from?

solid knoll
honest pelicanBOT
ruby badger
errant yarrow
pearl bronze
#

Is there a good under glow mod because every one ive gotten just adds a light bar and doesn't shine any light onto the ground

azure mesa
#

Guys, does anyone have a good resource explaining/teaching how to make Automation suspension setup not shite? And the first person camera not shaking like crazy.

long pendant
long pendant
azure mesa
long pendant
#

Idk what to look up other than BeamNG documentation

azure mesa
#

Fair enough, thanks.

pearl bronze
long pendant
#

made*

pearl bronze
fickle swift
#

if yall need mods there is a website I found beamng(.)xyz

last breach
#

just use steam workshop

fickle swift
#

nah it works great I havent had any issues with it

rain trout
#

is beam fixed?

scenic marlin
#

go check

stark hollow
tough oriole
#

yo any of yall got the v1.4 of royals m2/

ruby badger
#

@lapis comet i wrote a basic ImGui tutorial, is it fine to replace the existing (empty) IMGUI Windows page? regardless, should tutorials be categorized differently than reference pages?

lapis comet
visual spade
ruby badger
# visual spade If its empty then ahppy to see what one can done otherwise πŸ™‚

This page covers how to create a basic ImGui window.

Window Content

If you're new to writing ImGui, think of it as a distant cousin of HTML:

  • im.SetNextWindowSize(im.ImVec2(x, y), im.Cond_FirstUseEver) defines your viewport size if it hasn't already been defined
  • im.Begin() and im.End() is your <body> and </body>
  • im.Text() is your <p></p>
#

no file upload perms πŸ’”πŸ’”πŸ’”πŸ’”

visual spade
opaque copper
#

working self hosted

github

/musanajam11/Decentralized-BMP

ty

opaque copper
ruby badger
#

beammp ddos edition

#

i wonder if codex ai from openai made this

#

that ui looks eerily similar to other codex-coded uis

opaque copper
#

100% ai.

#

But not that one

#

Never that one

ruby badger
#

stinky jeff from the moderation team praises codex at every opportunity

#

he says that if you talk to it like a 5 year old then it performs better

#

which makes zero sense

opaque copper
#

It’s only good for making web pages I wouldn’t trust it with much else. U can barely trust the good ones as is

ruby badger
#

also he gives it beamng/beammp files so that it knows what it can do

opaque copper
ruby badger
honest pelicanBOT
#

me when

ruby badger
opaque copper
#

Fair. I have functional and ethical concerns with open ai and prefer some open source self hosted models along with opus 4.6

opaque copper
opaque copper
bright frost
#

🚬

ruby badger
visual spade
rose storm
#

Hi guys, it posibile to enable bus routes to a map that not support it, like via a mod?

charred tulip
#

Would end up having to do the map editing before buses would work

icy apex
#

yo how about a no hesi server configs for mods like for example how the saleen is for the barstow IV or the vela for the ccf etc

vernal turret
#

Why cant i start my server i have my ip loaded my name its on private and a random auth key and it says "Auth key not found

honest pelicanBOT
#

Currently Keymaster is not online. At this time, you'll simply need to run your servers as private and provide your friends with the Direct Connect info (IP address & port) to join.

ruby badger
#

rahhh my impatience is screaming

#

"just merge it!!!" my impatience screams

rose storm
charred tulip
#

Ah

lilac sapphire
#

Can you do mods in the private server atm?

ruby badger
#

how do i disable beammp client mod checking? i wanna use a local unpacked version of the mod so i can edit some ui and see it in-game

bright frost
ruby badger
#

balright

#

optimal workflow

ruby badger
#

i hate how with modModules uis that you have to restart the game to update them

#

but whatevah

bright frost
#

Glad you can work on it unpacked

ruby badger
#

πŸ₯Ά

bright frost
#

The whole thing

ruby badger
bright frost
#

Maybe even a little extra on top

ruby badger
ruby badger
bright frost
#

Check this out

ruby badger
bright frost
#

Have fun

ruby badger
#

lmao still a bug

ruby badger
# bright frost Have fun

idk why the font size increased so much but im gonna try to use more of the beamng classes like bng-button-attention and whatnot

#

you can see the ones i missed 😭

#

i think also making them not hard uppercase will help a lot

ruby badger
#

it looks kinda stinky rn but i got the bng header thing working

bright frost
#

IDK how any of this works btw

#

I assume all html and js but I don't really speak those well

ruby badger
#

if it was static it'd be css probably

#

interesting

#

main menu stuff

#

saving this to add later

bright frost
#

This is all too sensible

ruby badger
bright frost
#

Keeping it pushing

ruby badger
#

oh wait i know why it stopped previewing images

#

larger than 10mb will not preview

#

the 28kb image:

ruby badger
bright frost
#

that looks stock to me so

ruby badger
#

gotta refine the buttons a bit cause i broke the title case thing on it

#

and also idk what i wanna do with the server list quite yet

#

should i make it use the newer icon set or keep it using the existing material icons?

bright frost
#

Okay

#

bare with me on a quick sanity check

#

No capital cases here on the main menu

#

None in here

#

but then yes, all of these are

ruby badger
bright frost
#

to me

ruby badger
#

and cef is old ui

bright frost
#

this is a slam dunk

ruby badger
#

the main menu is vue/ new ui style

ruby badger
#

(yes direct connect is wrong, no it's not my problem)

bright frost
#

well then the locale can be fixed

ruby badger
#

i mean i can fix english ig but

bright frost
#

don't sweat it we have translations is what I meant

#

so not your issue

#

it's stylistic

bright frost
#

you mean

#

hang on

ruby badger
ruby badger
#

the same new set used in the vue-based Messages ui app

#

and also a lot of career menus

#

all these icons are from that new set iirc

bright frost
#

they're sick af

#

why was the color on that so bad lol

#

there we go

#

with a little imagination this set has every icon for every gameplay you can come up with

ruby badger
#

i must go on the grand adventure of finding where to put the variable definition

bright frost
# bright frost

you can specify ANY of these to be used with a MP.SendNotification(player_id, message, icon, category) from the server to the client btw, which I think is not documented in the docs

bright frost
ruby badger
#

truth nuke

#

i was wrong

bright frost
#

:rappatronic:

#

that page is a mess

ruby badger
#

PROGRESS HAS BEEN MADE

#

‼️

bright frost
#

🚬

ruby badger
bright frost
#

justa few more whitespace bro, it'll fix it I swear

#

just....

#

yknow

#

align

#

open excel and just change the word wrap

bright frost
bright frost
#

hold up let's do the side by side again

#

jesus christ

#

I like option A

#

again, looks stock

ruby badger
#

which btw

#

the current official beammp menu

#

is actually stock too

#

but its the old CEF defaults

bright frost
#

ohhhhhhhhhhh

#

that's what it is

#

well

#

we're due

ruby badger
#

πŸ’ͺ

#

the extra padding on the left is a ltitle eh but holy shit that looks good

bright frost
#

OK, real quick

#

how do those look if you change up this

ruby badger
ruby badger
bright frost
#

Honestly not awful at all

bright frost
#

But like

ruby badger
#

so itd be even worse

#

@bright frost actual visible tab navigation in the server list

bright frost
#

You said you don't use gamepad I think but making it more accessible is huge

#

I'm a huge accessibility nerd

ruby badger
honest pelicanBOT
#

Currently Keymaster is not online. At this time, you'll simply need to run your servers as private (with something random in the Auth Key field) and provide your friends with the Direct Connect info (IP address & port) to join. See #beammp-updates message for some frequently asked questions.

ruby badger
#

xd

#

bro literally shut up

ruby badger
#

it just skips rows

#

😭

bright frost
ruby badger
#

i think

bright frost
#

Oh it certainly was at a point

#

Today you can scroll the server list free spin on a mouse wheel pretty much fine

#

Used to be that thing would GRIND

ruby badger
bright frost
#

That stuff I don't know

ruby badger
# bright frost

you can see the full caps in the buttons of the mod manager btw

ruby badger
#

and I also made tab/controller navigation visible in the actual server list

#

Also, I'm considering merging the patreon support "ad" into the patreon button on the sidebar and making it highlighted by default
like:

  • if you don't have EA it's colored a contrasting green and maybe has a small subtext asking to donate
  • if you DO have EA, its just the normal patreon button like it is now
median sentinel
median sentinel
#

But the server list is too small for now to have any performance impact

zealous valve
# ruby badger

I'm not an UI guy at all, but with the old and the new it looks to be like all the icons are slightly lower than center compared to the text? Made me itch, but maybe it's suppose to be like that?

ruby badger
median sentinel
#

the screenshot isnt updated tho

#

but i havent got back on it in a while so if you can cook something better it could be nice Approve

ruby badger
#

both of those are with the sidebar

ruby badger
median sentinel
median sentinel
#

so you only need to make it perfect on one resolution and it scale it for any

#

but i never tried with very large screen

ruby badger
#

beamngs newer ui styles use em a lot and it seems like it scales really well

median sentinel
#

my issue was that removing some angularjs component broke the resizing somehow

ruby badger
# median sentinel did you start all from scratch?

no, I just switched some classes around and changed the way the button icons are done so that I can use my own file path. i have a useful CSS variables page pending a merge on the docs which documents quite a bit of the stuff that I'm using here

median sentinel
#

on the beammp mod

ruby badger
median sentinel
#

good :3

median sentinel
#

gonna review that personnaly Rizz

ruby badger
#

because I have been contributing to docs and when this UI redesign is ready then I'll also likely have contributed to the client too

median sentinel
ruby badger
#

I think he's replied to me talking about my contributions lmao

errant yarrow
narrow wigeon
#

guys can someone help me to get keymaster key?

charred tulip
#

Don't need one for private servers

ruby badger
stable pebble
#

is there a way to pull road spline nodes for setting up point to point distance tracking instead of just using straight line distance?

ruby badger
summer crystal
#

What do I need to do to get a specific car implemented into the game? Is it possible?

ruby badger
ruby badger
bright frost
ruby badger
bright frost
#

News ticker

ruby badger
bright frost
#

Like a scrolling marquee of what's new in BeamMP

ruby badger
#

🧐

ruby badger
#

this is so pretty

stable pebble
#

I got timed out trying to post my touge UI lol

rugged osprey
#

One of these things is not like the other

ruby badger
ruby badger
ruby badger
bright frost
#

IDK about that lmao

stable pebble
#

It needs paint splotches on the tray, seems way too basic lol

visual spade
modest heart
ruby badger
#

I believe it's still really difficult, or impossible to make Vue mods. The last time I saw a Vue mod, I think it overwrote the compiled Vue files, which I don't think would be optimal for compatibility to put into BeamMP

#

I am looking at Vue based UIs in devtools and taking their specific colors and whatnot though

#

like rgba(var(--bng-cool-gray-900-rgb), 0.5)

#

or something

ruby badger
#

hmm, why doesn't beammp use beamng's official translation strings?

boreal osprey
#

I got a couple of mods for cars

#

But I don't know how I can use them

#

I could just look on YouTube for that but I'll probably forget so if anyone could explain this I would appreciate it

ruby badger
magic fjord
ruby badger
#

ts pmo tixx

#

now my ui update is out of date

bright frost
ruby badger
bright frost
ruby badger
#

@bright frost how do i get rid of this top class? its breaking the fill colors of the buttons

green ice
#

so im screwing around with the new large rollers engine to make it faster and stronger. i am successful but the engine went invisible. i also messed around with the hydraulics and the govenor. anyone know why?

ruby badger
boreal osprey
#

Im at work atm

errant yarrow
ruby badger
#

then clear the filter

#
  • Potential issue: I had one instance where the map(s) filter glitched and prevented any servers from appearing until filters were cleared. I can't seem to recreate this though.
#

i think its trying to restore search filters from your last session

#

and the previous session used a string for the map filter

#

but now it uses an array

#

so the JS freaks out and doesnt end up listing any servers

#

@median sentinel

You may need to use <button> instead of <md-button> it will probably fix every issue you have with the buttons

with the overwritten styling yeah, but now its missing some styling :/ surely it won't take that long to fix...

errant yarrow
ruby badger
#

wtf its between 0.25em and 0.2em

#

why beamng why

#

0.375em my ass

ruby badger
#

pumpkin patreon is now fixed

#

LMAOOOOO

#

so

#

doing this

#

by sheer force of the universe

#

oh that looks so much better

#

existing ui's beammp logo:

#

i do need to crop it though, right now its 1:1 and that makes it look bad in basically every case where its used

#

wtf

#

beamng just stole my devtools

#

i cant use devtools anymore ?

#

even after a restart

#

nvm it was because i was in exclusive fullscreen

muted juniper
#

Friends, where can I get a keymaster to create a server?

honest pelicanBOT
#

Currently Keymaster is not online. At this time, you'll simply need to run your servers as private (with something random in the Auth Key field) and provide your friends with the Direct Connect info (IP address & port) to join. See #beammp-updates message for some frequently asked questions.

ruby badger
#

its insane how well this holds up

bright frost
ruby badger
#

ok tbh not evne that bad

#

i mean just ignore the top bar of the server list

#

but like

#

i deem it usable

bright frost
#

480p users rejoice

ruby badger
#

(it doesnt even work fully at 720p)

#

holy shit the filters popup works

#

oh, theres not e ough space for it to even try to display a modlist
so it WORKS BETTER THAN 720P

#

this HAS to be ragebait

bright frost
#

Crushing it

ruby badger
#

i just need to fix the cancel button being clipped

#

bro my ui works better than the official stuff 😭

bright frost
#
if clipped then
  noClip()
end
ruby badger
#

πŸ˜­πŸ™

ruby badger
#

fun fact

#

the regular login page doesn't use the password input element attribute

#

meaning it displays your password in plaintext

#

guess who didn't realize this and typed his beammp account details as a joke into the regular login page while screensharing

spare birch
#

well it's a good thing we'll all be forced to change our passwords when accounts come back

ruby badger
spare birch
#

i lol'd

ruby badger
#

wouldnt it be l'dol

#

xd

ruby badger
#

@bright frost im trying to get rid of the errors in the console for an invalid source by doing this, but it now just returns nothing. why doesn't the html (or angular) see the JS function?

ruby badger
#

formatBytes works btw

bright frost
#

so when you say it returns nothing

#

would you put a debug print before your return so you can tell if JS is happening?

ruby badger
#

phrased it weirdly, but i also said " why doesn't the html (or angular) see the JS function?"

#

as in, the js isnt being ran

#

so nothing is resolved in html

bright frost
#

hmmmmm

ruby badger
#

ends up like this

#

if i put it outside of an element like that "Public Servers" text then theres just no text line at all

ruby badger
bright frost
#

OK so

ruby badger
#

but the function is defined in $scope at line 1105

bright frost
#

which controller

ruby badger
#

its at line 1105

#

MultiplayerServersController

#

wild wild guess

bright frost
#

OK

ruby badger
#

it needs to be in MultiplayerController

bright frost
#

I am now looking roughly at the same stuff

#

OK so what about like

ruby badger
#

🀯 (this is the fallback image i set the JS to use)

bright frost
#

ignore my line numbers

#

so like

#

that and

#

is that viable?

#

like, I know it's supposed to functionally be the same or whatever

ruby badger
#

i got it to work just by moving which controller it was in

bright frost
#

well then I was way off track

#

carry on

#

and it should be clear then that I don't know enough to be helpful around html and js

ruby badger
#

but hey you put me on the right track at least

bright frost
#

OK so that makes sense

#

wrong controller

#

you were placing it in the serverlist controller, and the stuff on the left is not the serverlist

#

imgagine if the beamng ui wasn't a glorified website

ruby badger
#

all the icons are back now

#

and they are MUCH cleaner in the html

#

and theres no errors in the console!

bright frost
#

The day BeamMP is not putting html/js errors in the console is a day to celebrate

ruby badger
#

yo

ruby badger
#

there was also a regular src where there should have been an ng-src and so that was causing the errors related to flags

#

which i found and fixed

#

so yeah

#

server list has 0 console errors now

bright frost
#

Yeah I bet that was doing 404s

ruby badger
#

it was, but it did load correctly

#

hence the 404, and then it working anyway

bright frost
# ruby badger

So lol is that like one frame's worth of 404 before it can resolve?

wanton plume
ruby badger
wanton plume
wanton plume
ruby badger
#

@median sentinel here you go

median sentinel
ruby badger
median sentinel
#

Like the connect and favorite button

#

oooh perfect then

ruby badger
#

i'll add translation strings for the search button and the search filter placeholders

median sentinel
#

nice work on this ! cant wait to be able to actually see the server list not empty tho 😭

ruby badger
median sentinel
#

gonna try tomorow

ruby badger
#

the issue was that the variable type for the map search filter was changed and doesn't get converted, so when it tries to use a previous value, its now the wrong type and errors

median sentinel
#

Yeah i ran through a similar issue when optimizing the server list

#

For the local storage serverlist, theres probably still the condition in the code i think

#

🫑

median sentinel
#

yeah

#

that was an issue before merging the pr anyway

ruby badger
ruby badger
# median sentinel yeah

i think the last ones without translation strings is the direct connect page and the regular login page

#

will do those and then commit this

median sentinel
ruby badger
#

the buttons are already okay

median sentinel
ruby badger
#

so it's using english as a fall back

median sentinel
#

So its like theres 2 translations strings doing the same thing and one isnt translated yet anyway so i guess you could use the one that translate for both

#

Idk if you understand my english isnt that fluent

ruby badger
#

and i already do that

#

ohh wait

#

i see what you mean

median sentinel
#

πŸ₯Ή finally

ruby badger
#

so those will still be english for now but the connect button is translated now

median sentinel
ruby badger
#

but it wouldnt make sense in the server details menu

median sentinel
#

Oh okay

#

weird

ruby badger
#

Save as Favorite when its been set as Save Favorite

median sentinel
#

yeah and if it isnt it show remove favorite

ruby badger
median sentinel
#

Maybe they was both separated because of this slight difference but i still find it weird

median sentinel
#

french is annoying with the long words 🫑

ruby badger
#

right now they are only a search filter, and hidden behind a menu because of that

#

so i dont think a lot of people know about them

median sentinel
#

I think you should update the way the server details are showing

#

And implement that too, i can show you a screen of a try i did with the ui rework i tried

median sentinel
#

it was just a design i tried it isnt finished

#

but its enough to get an idea ig

#

But im quite bad at design anyway 🫑

ruby badger
median sentinel
#

yup

#

cook something

#

Its important to get the tags in the details i think

#

And maybe that if you click on the tag it automatically search by that tag

ruby badger
#

we probably need more tags to use too

#

these are all the current ones

median sentinel
# ruby badger

I think you can put any tags on a server even if it isnt in that list tho

median sentinel
#

i think that's just for the filter

#

to prevent it being 2km long i guess

bright frost
#

I'm sorry are we talking about making server tags work??

bright frost
ruby badger
#

@median sentinel @bright frost

#

i don't know why the description text is so far away though

green ice
ruby badger
median sentinel
ruby badger
#

it looks a lot better

#

maybe a few more seconds i just remembered the player list doesnt work

median sentinel
#

damn

ruby badger
#

thats why it wasnt working

median sentinel
#

😭

ruby badger
#

and with a lot of mods

opaque copper
#

gauging interest: Assetto Corsa style content manager for beam.

median sentinel
#

it just look like an unofficial beammp launcher to me

#

😭

opaque copper
# median sentinel is there a need for a content manager on beam?

Peripheral monitor content mainly like live gps and editing car configs and mod management and server instance management. Server list is a fairly small part of this and its beam mp agnostic. it works for third party backends and the non beam mp based mp clients also.

median sentinel
#

why not i guess but why the asseto corsa style

opaque copper
tired turret
ruby badger
somber stratus
#

hey i just downloaded the polish roads mod into my beammp server and its missing alot of grass textures anyone know how to fix it alot of the grass is orange boxes

ruby badger
#

clear cache

#

if that doesn't fix it then maybe the map is broken

somber stratus
#

@ruby badger how would one do that on assetto hosting

ruby badger
ruby badger
#

@median sentinel can you check if my latest commit solves the x overflow problem?

#

i really do not know how to recreate the bug you have so its hard to fix

quasi zodiac
#

Has anyone tried CareerMP with RLS?

opaque copper
quasi zodiac
opaque copper
#

if you're only looking at WestCoastUSA, the UX is pretty seamless atm imo

quasi zodiac
#

hmmm interesting i just added CareerMP on my server and was looking into adding RLS into it

quasi zodiac
opaque copper
#

i think working with .18 for CareerMP, maybe working with the newest but i havent tested it yet

errant yarrow
quasi zodiac
errant yarrow
quasi zodiac
#

bet thank you

ruby badger
ruby badger
#

@median sentinel

ruby badger
bright frost
#

Superclean

median sentinel
ruby badger
#

is backdrop-filter the only way to blur the main menu background behind an element from CEF/angular?

#

because if so thats really annoying

#

because its laggy af

opaque copper
# ruby badger is backdrop-filter the only way to blur the main menu background behind an eleme...

backdrop-filter: blur() β€” the native, GPU-accelerated approach. Works well in CEF/Chromium.

Duplicate + filter: blur() β€” clone or duplicate the background behind the element (e.g., with a pseudo-element or a second <div> with the same background), apply filter: blur() to the duplicate, and clip it with overflow: hidden. More markup, but works in older engines.

SVG <feGaussianBlur> filter β€” define an SVG filter and reference it via filter: url(#myBlur) on a duplicated background layer.

Canvas capture β€” render the background area to a <canvas>, apply a blur algorithm (or ctx.filter), and use it as the element's background. Heavy and rarely worth it.

ruby badger
#

backdrop-filter

#

makes the module run at like 8 fps on my machine

#

duplicating the background would be possible and thats actually what ive kinda been doing

#

ok it works but i think angular wants to explode

ruby badger
#

this needs to add caching for optimizing the JS side of anyway

#

@bright frost @errant yarrow calling yall to help fight the vue demon

opaque copper
# ruby badger

ur calling getComputedStyle 100 times/second

*var lastBg = null;
var fancySync = setInterval(function() {
$scope.$evalAsync(() => {
var target = document.querySelector(".background-image");
if (target == null) return false;

var bg = getComputedStyle(target).backgroundImage.replace(".jpg", "_blur.jpg");
if (bg === lastBg) return true; // nothing changed, skip DOM writes
lastBg = bg;

var blurs = document.querySelectorAll(".mp-fancy-blur");
for (var i = 0; i < blurs.length; i++) {
  blurs[i].style.setProperty('--mp-fancy-blur-src', bg);
}
return true;

});
}, 10);*

or

var target = document.querySelector(".background-image");
var observer = new MutationObserver(function() {
var bg = getComputedStyle(target).backgroundImage.replace(".jpg", "_blur.jpg");
var blurs = document.querySelectorAll(".mp-fancy-blur");
for (var i = 0; i < blurs.length; i++) {
blurs[i].style.setProperty('--mp-fancy-blur-src', bg);
}
});
observer.observe(target, { attributes: true, attributeFilter: ['style'] });

ruby badger
opaque copper
errant yarrow
# ruby badger

I never touched the vue code
when I needed to change something, I handled it through the lua layer that manages it

#

Suddenly I realize they merged our scripts channel with the modding channel LOL
I think it's time to bring back the scripts channel

median sentinel
visual spade
#

Hey @ruby badger I just want to say thanks for all your doing here, its looks amazing and cant wait to see it raised as a PR and made available to all to enjoy! Sorry if my replies are spotty, I'm rather busy :/, feel free to DM me for specifics when you need me

errant yarrow
ruby badger
opaque copper
#

is anyone fluent in any of these languages and willing to look at a json file rq.

ruby badger
#

is this for beammp translations?

opaque copper
#

unless u know one of those languages then pls do

karmic pecan
#

Deutsch

opaque copper
#

Quick once over type thing

karmic pecan
#

Okay

opaque copper
ruby badger
#

so even if i optimized it as-is itd still look like garbage

#

see, very delayed

#

very performant on my machine too surprisingly

opaque copper
ruby badger
#

i did that

#

Switch ::before to position: absolute and negate the parent's viewport offset

#

the blurred image and the real Vue background are aligned

ruby badger
# ruby badger see, very delayed

the issue is that i cant detect the incoming vue background so it only updates once the incoming background has fully faded in

opaque copper
#

.mp-fancy-blur {
position: relative; /* or absolute β€” needs to be a containing block /
overflow: hidden; /
now actually clips the child */

&::before {
    content: '';
    position: absolute;               /* NOT fixed */
    top:  calc(-1 * var(--_blur-y));
    left: calc(-1 * var(--_blur-x));
    width: 100vw;
    height: 100vh;
    z-index: -1;
    pointer-events: none;
    background-image: var(--mp-fancy-blur-src);
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    transition-duration: 1000ms;
}

}

function syncBlurOffsets() {
document.querySelectorAll('.mp-fancy-blur').forEach(el => {
var rect = el.getBoundingClientRect();
el.style.setProperty('--_blur-y', rect.top + 'px');
el.style.setProperty('--_blur-x', rect.left + 'px');
});
}

var observer = new MutationObserver(function() {
var target = document.querySelector('.background-image');
var style = target.getAttribute('style') || '';

// grab the LAST url() in the inline style β€” that's the incoming image
var urls = style.match(/url\(["']?([^"')]+)["']?\)/g);
if (!urls || urls.length === 0) return;

var incoming = urls[urls.length - 1]; // last = incoming
var blurBg = incoming.replace(/\.jpg/, '_blur.jpg');

syncBlurOffsets();

document.querySelectorAll('.mp-fancy-blur').forEach(el => {
    el.style.setProperty('--mp-fancy-blur-src', blurBg);
});

});

var target = document.querySelector('.background-image');
if (target) {
observer.observe(target, { attributes: true, attributeFilter: ['style'] });
}

var bgTransition = getComputedStyle(target).transitionDuration;
document.querySelectorAll('.mp-fancy-blur').forEach(el => {
el.style.setProperty('transition-duration', bgTransition);
});

  • in JS, set the offsets whenever layout changes
  • getComputedStyle(target).backgroundImage returns the resolved value, which during a transition is indeterminate. You're always one step behind.
  • Read the incoming CSS variable directly from the inline style
  • match the transition timing
ruby badger
#

are you using AI to write these responses?

opaque copper
ruby badger
#

πŸ™„

opaque copper
#

they ran a whole version of ur ui

#

and it looks great

#

took like 8 min

ruby badger
#

you can't be bragging about using ai when its wrong in the most basic ways multiple times in one pretty short function

ruby badger
#

which btw a couple months ago i thought the contributing guidelines for the beammp client required no AI use

ruby badger
opaque copper
ruby badger
#

yeah well i am and you're trying to give me code

#

that is made with ai

opaque copper
opaque copper
ruby badger
#

i did not ask for code that would break the contributing guidelines as of a couple months ago

opaque copper
opaque copper
ruby badger
#

are you aware how big of a piece of shit you're being right now

#

personally don't return to this channel if you're going to just reply with ai written code and laugh at anything else

#

i'm in this channel to get support from a human being. if i wanted ai to do my hobby for me then i would use the ai myself

#

useless code

#

and i fixed it myself

ruby badger
opaque copper
median sentinel
opaque copper
median sentinel
#

where did he ?

ruby badger
#

because i thought you actually knew what you were doing

#

because you were replying to a help question in a modding channel

opaque copper
#

i was just asking for translation help

ruby badger
opaque copper
ruby badger
opaque copper
#

πŸ€·β€β™‚οΈ

ruby badger
#

and i'm 99% sure that VERY first response was ai generated

opaque copper
#

all of it

ruby badger
#

yeah so literally from the start you're just posting ai responses in a modding channel that's meant to be human to human conversation

#

again

#

if i wanted ai to do my hobby for me, i would use ai myself

#

i'm in this channel because i want a human to help me

honest pelicanBOT
ruby badger
median sentinel
#

dont melt patate !

opaque copper
#

ur being dramatic

median sentinel
#

justmusa he said he thought you knew what you was doing, not that you was using ai so he didnt know at that time

ruby badger
#

because i thought you actually knew what you were doing
because you were replying to a help question in a modding channel
your first reply was AI generated. i had NOT tagged you

median sentinel
#

and you should know that if someone ask for help he doesnt want an human to do the bridge between an ai and him

ruby badger
opaque copper
median sentinel
#

no i dont see where

ruby badger
#

still

opaque copper
#

also if u thought i knew what i was doing the ai's advice must be pretty good

ruby badger
#

if you don't know what i'm talking about, then why are you posting ai responses to a help question

median sentinel
#

an impression isnt a reality

opaque copper
#

ur both reaching rly hard imo

ruby badger
#

dawg, you don't know what you're talking about, why did you reply to my question about backdrop-filter in the first place

#

that is where this stemmed from

#

and you are just avoiding that point because you know you're in the wrong for that

opaque copper
#

weird, i dont feel in the wrong

ruby badger
#

yeah that's YOUR feeling, and you're also the one who posted it

#

how about the feelings of others for a change?

median sentinel
#

anyway its enough i think, just try to keep this channel for the right usage and thats all ? no need of drama and its always good to remind that you are using ai for thoses particular responses even if you told it a couple days ago. so you know if the person your talking to is okay with that or not for what he is doing

opaque copper
#

πŸ€·β€β™‚οΈ Just an engineer, dont usually deal with people with feelings.

opaque copper
opaque copper
#

ur impression that i know what im talking about even though i clearly stated my project is 100% ai < verbatim, is not my problem.

ruby badger
#

still seek my help
i'm not debating this anymore.

opaque copper
#

πŸ€·β€β™‚οΈ

#

that one wasnt even ai, just google.

median sentinel
#

i dont think the beamng cef is gpu accelerated

opaque copper
ruby badger
median sentinel
#

if you can see one

ruby badger
median sentinel
#

yeah it really is 😭 last time i checked the main menu blur for the buttons was made using image that was blurred

#

maybe the beamng dev did that for performance

ruby badger
#

yeah they have pre-rendered blurred images

median sentinel
#

yeah, when i saw that i found it quite weird

ruby badger
#

the current release version of the server browser feels like dinosaur ui now 😭

median sentinel
#

and they show the small button part of the blurred one on the button and the rest is hidden, but i feel like the performance could be even worse like that no?

median sentinel
#

but i still have the weird scrollbar issue

#

even the y one

ruby badger
#

ui fps feels about the same

ruby badger
slender pulsar
#

When will the login feature be activated?

ruby badger
ruby badger
median sentinel
ruby badger
#

actually theres two french languages for me
french community and french (france)

slender pulsar
ruby badger
#

french official?

median sentinel
#

yeah

#

if you click on official server

#

you dont have a x scrollbar that appear ?

ruby badger
#

french community also doesnt have x overflow

#

nope

#

have you redownloaded the latest commit i made

median sentinel
#

wait im gonna do that

ruby badger
#

it doesnt overflow on 720p either

ruby badger
#

WHY 😭

median sentinel
#

its really the focus visible that do that for me

ruby badger
#

can you open devtools and show me that

median sentinel
#

that?

#

it add that before

#

and i think its this that add the width

ruby badger
#

why tf is there a ::before there 😭😭😭😭😭😭😭😭😭😭😭😭😭😭

median sentinel
#

idk

#

its since 0.38

ruby badger
#

thats the latest commit right?

median sentinel
#

yeah

#

i did a git pull before launching

ruby badger
#

you could also just download zip maybe

#

idk how github works

#

i think those should be equivalent as long as its pulling to your mods\unpacked folder

median sentinel
#

yeah but i git cloned your repo

#

it work the same

#

so i have your latest change

#

So it apply this class to any clicked button and add a ::before to it, and disappear if you click anywhere else

#

idk why the frick that thing even exist but its here

ruby badger
#

which i fixed a while ago

median sentinel
#

no i dont think that class apply to the md button

ruby badger
#

idk, im not getting any ::before elements

median sentinel
#

rly?

#

for example if you click on featured, you dont have this that come ? :

ruby badger
median sentinel
#

i really dont understand 😭

ruby badger
#

can you check the html file of the beammp client you downloaded

#

are they md-button or are they button

median sentinel
#

its button

ruby badger
#

in the html file not like in devtools

median sentinel
#

yeah it is buttons

#

i have the right version dont worry

#

but theres def something going on

ruby badger
median sentinel
ruby badger
# median sentinel

ours are the same 😭 and yet yours goes beyond max width and mine doesnt

median sentinel
#

yeah because for me it add that little shitty class and not you :v

#

i dont know what is the thing that add it

ruby badger
#

this is the one thats on my pc

#

like no github at all

#

i dont get it on russian either

#

also should patreon, discord, and github be translated?

#

cause those are company/product names

median sentinel
median sentinel
median sentinel
median sentinel
#

it fix it

#

in case some other peoples get the issue

ruby badger
#

i just committed with that one change

#

(i didnt even test it LMAO)

median sentinel
#

i try

#

i tested it lol

#

issue fixed

opaque copper
opaque copper
#

😩Whip

green ice
opaque copper
# green ice whats dis?

Tool working with repo In tool above. See link above

Hope mod authors esp for server/client mods will pr to add their metadata. Result will be one click assurance your mods work the first time and better ux around beam in general

ruby badger
#

in gelua, how can i get the current number of connected clients on the server? justmusa do not answer

#

MPVehicleGE.getPlayers() only lists players that have vehicles spawned

#

also, is there a way i can give players "nicknames" that show up in playerlist/chat too?

#

or like append stuff to their username

slate spear
#

do anybody know how to use mapNG.com website beam map creator ? ? id like to make a multy zone map . 3x3 x 8192 of my location

#

i can't figure out how to generate more than 1 tyle

bright frost
bright frost
slate spear
#

i kind of live lost in a farm field .not much arround

visual spade
visual spade
visual spade
ruby badger
clever sundial
#

might sound stupid but I gave chatgpt beamMP mod, launcher and server and its made up some improvements but I am not sure whether it will actually improve it so if someone who understands the code of beammp then if you want I can send you it.

opaque copper
opaque copper
visual spade
opaque copper
#

⏰

visual spade
# opaque copper ⏰

Well unforntunately its held up by us getting things back in place currently. The new accounts system when it launches may come with it from the get go but we will have to see

visual spade
wanton plume
opaque copper
opaque copper
ruby badger
visual spade
# ruby badger

Oh thats a nice idea for while we work on getting things back!

visual spade
#

I like it πŸ™‚

ruby badger
#

it is just a alphanumeric filter and character limit

ruby badger
#

also, where is MPConfig.setNickname() actually used lmao

#

ive only seen it used in logging

visual spade
visual spade
ruby badger
visual spade
#

server script wise

ruby badger
visual spade
# ruby badger you have peaked my interest

Well we have the event ssytem that you can call from both sides so you can call an event from the server on a client to update a table containing the usernames you want for them and do it that way

visual spade
#

Oh okay

ruby badger
#

but the issue is that to display them in the player list/chat

#

would need to edit the player list/chat that comes with beammp

#

because they dont display prefix/suffix or have nickname support

visual spade
#

Oh, odd, I've seen it work in thr past too so not sure

ruby badger
#

i have no idea how [STAFF] or [EA] works in the player list, ill have to stare at the code for another 10m

#

but im assuming its based on auth-provided roles

visual spade
#

Uh, I dont recall of the top of my head on that one

ruby badger
#

or... not. its based on shorttag of the main role the user has

#

custom roles wouldn't work here but i can easily just override the main role

#

for the chat its more difficult though

#

this requires that the sender's sent username matches whats on the receiver

#

if it doesnt then it falls back to what is prefixed in the message content

#

oh wait

#

nickname is used as the fallback

#

wtf

#

so if i just set the username to garbage this would work??

ruby badger
#

if it does correspond to one, then it uses that username + the main role's shorttag

#

πŸ₯€

#

client sends message as c:<nick>: message

#

server sends out as <auth name>: message im assuming

#

and then the client ui code gets player object from auth name

hardy merlin
#

You can do all of this client side, except the sync of the playernames

--[[
  ["player name"] = String (Chosen playername)
  eg. guest22355234 -> Rainless
]]
local PLAYERS = {}

And then as already explained in dms, you just mitm the UI module. You check for what comes in and replace it

errant yarrow
hardy merlin
errant yarrow
ruby badger
#

i could also mitm on the server side

#

on chat received, cancel, take the player id and message, and then call a client event to everyone with that message

#

then tell the chat ui to add a message with that value

#

but that may have incompatibility with chat commands

hardy merlin
#

You can send the playerlist from the server yes, but cant show it in the ui because its all called from within beammp code

#

And i mean its just a temp solution so idk how hard you want to make it yourself

hardy merlin
#

Ok you have two solutions

#

both require patching

#

either patch lua

#

or patch the ui

#

or ok you could also add your own ui sure

#

then no patching required

ruby badger
#

for the chat i can do the server-side mitm

#

for the player list it might require patching tbh

errant yarrow
#

There is an advantage to a custom user interface in that you don't have to worry about changes to the beammp UI

hardy merlin
#

If you want to be perfect then you catch the chat on the server and a list of all players and send it to each player. then on the client you add your own ui for the playerlist and the chat

hardy merlin
#

I would be lazy to solve this. i would just mitm beammp given its just temporary

ruby badger
#

you're not addressing my solution for the chat though, to catch messages on the server-side with the onChatMessage event, cancel them, and send my own client event to everyone
then my clientside mod sends its own message to the chat uis, with a custom sender

hardy merlin
#

Thats a perfectly fine solution

ruby badger
ruby badger
#

@hardy merlin it is possible lmao

bright frost
#

@ruby badger u cookin

ruby badger
#

truly, DIABOLICAL stuff

#

refreshing the server browser

#

that way it gets new playerlist from the launcher

bright frost
#

Hmm, what kind of behavior if the multiplayer option to allow the server list to refresh while connected to a server

ruby badger
#

thus updating the whole chain

#

thus it refreshes the player list

#

thus detecting the role

ruby badger
bright frost
#

Sure, but like, would that data have been available in the situation where that setting was enabled?

#

Since it would be passively refreshing in the background?

#

Or

ruby badger
#

i mean yeah but it doesnt refresh automatically very often

bright frost
#

OK, just curious

#

That setting hits performance anyway

#

Better if people don't have it enabled usually

ruby badger
#

so not very often

errant yarrow
#

Adding a column is so easy and simple and also looks much neater to the eye, I think it's worth it πŸ€”

ruby badger
#

i refuse to override beammp stuff

errant yarrow
#

logical

ruby badger
#

ok lowk i might have to um

#

it seems like the server browser refresh button just calls MPCoreNetwork.requestServerList()

bright frost
#

Doing this while keeping in mind auth will return and certain new aspects will need to be deprecated once it is is no small task

ruby badger
#

it just uses cache data?

#

so how tf is that refreshing it when in a session

#

sending B myself just disconnects me too

errant yarrow
ruby badger
#

send b does work in the main menu

#

oh interesting

#

enabling refresh server list ingame

#

and then opening the server browser to refresh it

#

disconnected me

#

I GUESS IT WORKS

#

OK THEN

#

WHATEVER BRO

ruby badger
#

and i'm not overriding any beammp code

hardy merlin
#

@ruby badger Since your a perfectionists, imma give you a quick dive into how to avoid luas garbage collector from stuttering the game. In case you didnt know yet, any object you create in lua (that is any kind of table, be it a vec3, a quat, or even a string (thats a table too!) etc) must be cleaned up by the garbage collector once nothing is referencing it anymore

local function something()
    local vehicle = be:getPlayerVehicle(0)
    local veh_pos = vehicle:getPosition()
    
    -- ...
    
    -- end of func. vehicle and veh_pos are giving up their ref to the vehicle and vec3 object.
end

The gc in lua cleans objects whenever it feels like it (we have no control over it), its usually every few seconds. And the problem is that the gc acts blockingly. Aka it stops the lua thread from running until its done.

So even something like this

local string = ""
for i = 1, 1000 do
    string = string .. i -- this creates a new string every time
end

causes alot of garbage. Or to put it into numbers

local function dirBetweenVehicles()
    local vehicle_1 = be:getPlayerVehicle(0) -- ~500kb
    local vehicle_2 = be:getPlayerVehicle(1) -- ~500kb
    
    local veh_pos_1 = vehicle_1:getPosition() -- 200 bytes
    local veh_pos_2 = vehicle_2:getPosition() -- 200 bytes
    
    local dir = (veh_pos_1 - veh_pos_2):normalized() -- 400 bytes
    
    return dir -- 200 bytes
end

So this one super simple math operation costed us 2Mb. And with already objects that have been optimized to have a small footprint. ColorF, ColorI are super offenders. Imagine debugDrawer:drawSphere(vec3(0, 0, 0), 1, ColorF(1, 1, 1, 1)). Lots of waste. So if your game should be stuttering in any capacity then its most likely a lua mod (you can see it in the perf graph, its a yellow spike marked as luagc). In your case, you said you are causing a request of the serverlist. Should you do that frequently then the json it gets is causing waste!

However there are ways to mitigate that! And thats by using tuples and caches!

local VARBUF = {}

VARBUF.dirBetweenVehicles = {vec3(), vec3(), vec3()} -- we are caching 3 vec3 objects
local function dirBetweenVehicles()
    local veh_pos_1, veh_pos_2, dir = unpack(VARBUF.dirBetweenVehicles) -- 0 bytes
    
    local vehicle_1 = getPlayerVehicle(0) -- cached variant of be:getPlayerVehicle() -- 0 bytes
    local vehicle_2 = getPlayerVehicle(1) -- 0 bytes
    
    veh_pos_1:set(vehicle_1:getPositionXYZ()) -- 0 bytes, because ...XYZ() returns a tuple!
    veh_pos_2:set(vehicle_2:getPositionXYZ()) -- 0 bytes
    
    dir:set(veh_pos_1) -- 0 bytes. Doesnt return `self` so we cannot chain the methods.
    dir:setSub(veh_pos_2) -- 0 bytes
    dir:normalize -- 0 bytes
    
    return dir:xyz() -- 0 bytes
end

This is what the game devs want us todo. see also here https://documentation.beamng.com/modding/programming/performance/#avoid-garbage-collection

And now you have been infected with this knowledge too!

ruby badger
#

so if 5 people get a role change in 1 frame then its 1 server list request

#

and that only happens once for those 5 peoples' role change

hardy merlin
#

=D

ruby badger
#

as for literally anything else in that script? may god help you

hardy merlin
#

Purpose of this is more to infect you with knowledge. its a thing that once it creeps into your mind you cant unsee it

ruby badger
hardy merlin
#

Everytime you create any kind of object you will be like "do i really have to? can i cache that?" and that alone while hard at the start will help you optimize your code. And doing that allows you to do really big stuff

#

This thing here for example is zero gc. Its drawing over ~10k cubes, each with 2 vec3 objects and 1 color object. so 30k objects are used every frame https://www.youtube.com/watch?v=LIcnMCPB5IE. It runs at 60fps. if i wouldnt follow the zero gc philosophy this would break the game

Little dev showcase of a mod that i have been working on. It adds dirt on asphalt dynamically. As you drive over terrain your car picks up filth and spreads it around. Some of it will keep laying on the asphalt and reduce your grip.

This video just shows how the mod can read the ground model of each cubic meter on the map. Each color hereby rep...

β–Ά Play video
#

Well im limiting my game to 60fps tbh

bright frost
#

I learned to reduce string concatenation and it improved my garbage collection issues!

#

I've got a long way to go still

#

But knowing there's GC to avoid

#

Is unlearnable

hardy merlin
#

0 gc

#

well until you drop the buffer

bright frost
#

Hell yeah

hardy merlin
#

luajit is really cool

#

Olrosse had figured that sending data to another vm using udp sockets caused less gc then using the game own cross vm methods

tidal wigeon
#

question
how would one make a leaderboard ui that tracks a player's air speed trip computer or just total km and display it in a leaderboard

hardy merlin
#

turns out its 50k objects per frame because i swapped from the debugDrawer to ffi.C.* drawers as they are much faster. but since all is cached, its super fast

opaque copper
opaque copper
#

❀️

wild hill
#

how to download and create a beamp server

ruby badger
honest pelicanBOT
#

Currently Keymaster is not online. At this time, you'll simply need to run your servers as private (with something random in the Auth Key field) and provide your friends with the Direct Connect info (IP address & port) to join. See #beammp-updates message for some frequently asked questions.

bright frost
bright frost
opaque copper
scenic sand
#

Hi. Umm cann anyone convert picture.png image to what would work in as beam ng heightmap.png?

It should not be a big job, but i don't understand about textures and stuff.

hardy merlin
#

That requires knowing what you have ofc

scenic sand
#

yes im looking a way to convert my existing png to that, but need help

#

i don't know how and ive been searching a way and with gaea and blender it's possible, but i dont know how. I tryed, but couldn't get it to work

ruby badger
#

if your image is a color image and doesn't have any height data then that image can't work for a heightmap

hardy merlin
# ruby badger hmm

Uncertain if that was me. its a habit of mine to not check for things that are guaranteed to be there and so essential that i want a fatal if its not

#

But i learned of these from olrosse, so maybe he did

#

Thing with the normal debug drawer is that its advanced text drawer suddenly couldnt draw in front anymore

#

so we had to switch to matter what