Hi, I'm trying to reproduce this error, but I'm not sure how to. There is one thing in your description that is not clear to me; "the skin is not saved on my web page and when I preview it and show the preview, the skin is broken" but if it's not saved, how can there be a preview?
Maybe you can try the following, in your browser, press F12 to open the dev console. There will be a "Console" tab there. Select that and try to upload the skin again. Are there any messages in that "Console" tab then?
EDIT - I've added some debug messages for me to hopefully find out a bit more what's going on. Though we may have to give it a few attempts to figure this one out. So please try to upload your skin again.
An idea I had when in early development was to create a public mod comments thread for each mod on the forum. All functionality we need is there already - subscribe, notifications, etc.
Then on the mod's details page, I can simply display the same thread with all the same functionality you find here on the forum. It would simply be a forum thread, just displayed on the mod's details page (as well as the forum).
(the reply is maybe a bit too detailed, but hey, now you'll know how it works )
I have built a flood detection / protection mechanism that works in hardware on our switch. When a packet flood is detected, it will start dropping packets that exceed the rate limit, so the game server will never be overwhelmed. BUT, it also then adds all client IP addresses to a whitelist that has no rate limit, ensuring that connected clients can continue to play without any issue. Insim connections are however not included in this whitelist. Maybe I should.
This is applied only to incoming traffic, so the 5mbit of incoming traffic is really never reached under normal circumstances.
The burst size is what's triggering the anti-ddos in your case, as probably you're sending a lot of packets to the game server in a very short time span.
As a test, I have raised the burst value to 50k. Please do your thing and let's see if your tests still trigger the protection. I'll be keeping an eye on this.
A problem arises when money comes into play with mods. One could state that LFS then makes money from mods with externally downloaded 3d models that have certain non-commercial copyright licenses applied (which are many of them out there). E.g. the "CreativeCommons Attribution-NonCommercial (BY-NC)". I know these 1 pound payments are peanuts, but laws are very black and white and we want to remain as legit as possible and also not complicate this system more than it can already be in certain cases. So don't think we should go there at this time.
Thank you for these tests! So ping wise Tokyo isn't that bad, but it's all ruined by huge packet loss.
I'm going to forward this to the network people at i3d and see if there is anything we / they can do about it.
Aha - even if you only use the client_credentials flow, the lib I use still requires you to enter a redirect-uri. For both of you I've added https://www.lfs.net as a test and it works.
I don't wanna hack this in the lib itself, so I think I have to enforce the redirect uri in the form, even if you don't use it.
Can you try pinging the following IP addresses? I'm curious what the results are for you:
Japan: 103.194.166.91
Hong Kong: 43.239.136.59
Singapore: 213.179.200.59
United Arab Emirates: 185.179.202.59
Russia: 188.122.82.59
West US: 162.244.52.59
Taking a guess: you would like to get the name of a mod.
InSim only uses the hex vehicle mod identifiers to indicate which car a person is using. That identifier is nothing more than a random string. It's not the actual mod name. The mod name isn't shown anywhere in InSim but it can be looked up via our new API. I've written a quick note about that here: https://www.lfs.net/forum/post/1969337#post1969337
You could cache those ids and names hard because they never change. So once looked up, you can store them locally and never have to look them up again. But, it does require you to add Oauth2 and API lookups to your program.
I'm not sure if in the future InSim will show the actual name of a mod.
Yes! I've been working on a new RESTful API to cater for this and other, future functionality.
I'll be writing full documentation for this soon, but I'll write the highlights here. If you are familiar with Oauth2 authentication you should be able to knock something up fairly quickly.
First, register your application at https://www.lfs.net/account/api .
You can then request a Bearer token with your client ID and client secret at id.lfs.net. Quick example:
// Request a Bearer token by using the client_credentials grant type. // This requires client_id and client_secret. // One can simply fetch that by POSTing those values. See below for example.
That gives you a list of all vehicle mods. The schema of a VehicleModSummary object:
{ "data": { "id": string // Vehicle Mod identifier. AKA Skin ID, in HEX format "name": string // Vehicle Mod name "descriptionShort": string // Short description "description": string // Description "userId": int // Uploader user ID "userName": string // Uploader user Name "wip": boolean // Work In Progress "publishedAt": int // Unixtimestamp of publish date "numDownloads": int // Number of downloads "curUsage": int // Number of racers using this mod online right now "rating": float // Rating, from 0 - 5 "numRatings": int // Number of people who rated "version": int // Vehicle Mod Version "lastDownloadedAt": int // Unixtimestamp of last download date "class": int // Vehicle class "ev": boolean // Electric Vehicle if true } } }
"class": 0: Object 1: Touring car 2: Saloon car 3: Buggy 4: Formula 5: GT 6: Kart 7: Bike 8: Van 9: Truck 10: Formula 1 11: Formula SAE
You can also get more detailed by performing a GET /vehiclemod/{id} which will return:
{ "data": { "id": string // Vehicle Mod identifier. AKA Skin ID, in HEX format "name": string // Vehicle Mod name "descriptionShort": string // Short description "description": string // Description "userId": int // Uploader user ID "userName": string // Uploader user Name "wip": boolean // Work In Progress "publishedAt": int // Unixtimestamp of publish date "numDownloads": int // Number of downloads "curUsage": int // Number of racers using this mod online right now "rating": float // Rating, from 0 - 5 "numRatings": int // Number of people who rated "version": int // Vehicle Mod Version "lastDownloadedAt": int // Unixtimestamp of last download date "class": int // Vehicle class "ev": boolean // Electric Vehicle if true "vehicle": { "iceCc": int // ICE cc "iceNumCylinders": int // ICE number of cylinders "iceLayout": int // ICE engine layout "evRedLine": float // EV redline "drive": int // Drive "shiftType": int // Shift type "power": float // Power in kW "maxPowerRpm": int // Max power at RPM "torque": float // Torque in Nm "maxTorqueRpm": int // Max torque at RPM "mass": float // Total mass of vehicle in kg "bhp": float // BHP "powerWeightRatio": float // Power to weight ratio "bhpTon": float // BHP per ton "fuelTankSize": float // Fuel tank size. If "ev" = true, its unit is kWh, otherwise litres } } }
"class": 0: Object 1: Touring car 2: Saloon car 3: Buggy 4: Formula 5: GT 6: Kart 7: Bike 8: Van 9: Truck 10: Formula 1 11: Formula SAE
"iceLayout": 0: inline 1: flat 2: V
"drive": 0: None 1: Rear wheel drive 2: Front wheel drive 3: All wheel drive
"shiftType": 0: None 1: H-pattern gearbox 2: Motorbike 3: Sequential 4: Sequential with ignition cut 5: Paddle 6: Electric motor 7: Centrifugal clutch
Hi! Yup, I have to update some other pages too But I'll do that when we're a bit closer to the final release. The official version currently does not include the mods.