How can i make the game download .blend files?

Create game data folder in AppData

To get the AppData path through Python and create your game data folder in it, simply use:

import os, pathlib

# Concatenate the APPDATA environment variable to the game folder name,
# then create a pathlib.Path object, allowing easier path manipulation
pathGameData = pathlib.Path(os.environ["APPDATA"] + "/My Game Folder")

# Creates game directory if not already exists
if not pathGameData.exists():
    pathGameData.mkdir()

Downloading a file from URL

To download a file from a url:

from urllib.request import urlopen

# Download the file from URL
fileData = urlopen("https://github.com/bgempire/TedTheFrog/raw/master/Ted%20The%20Frog.blend")

# Read the downloaded data into memory as bytes
fileData = fileData.read()

The data will be downloaded into memory as bytes. You can use the downloaded blend file in two ways.

Saving to a file

To save downloaded data to a file, simply write it as bytes:

# The target file path to write downloaded data
resultingBlendFile = pathGameData / "DownloadedBlendFile.blend"

# Open the given file path in 'write bytes' mode
with open(resultingBlendFile.as_posix(), "wb") as openedFile:
    openedFile.write(fileData)

After the file is saved, you can load it using bge.logic.startGame or bge.logic.LibLoad functions as usual.

LibLoading directly

As bge.logic.LibLoad accepts a bytes data parameter, you can LibLoad the data directly into the game:

import bge

# The parameters are: libName, whatToLoad, bytesData
bge.logic.LibLoad("DownloadedLib", "Scene", fileData)

I don’t have idea what you mean. :laughing:

3 Likes