Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
*.o
*.a
*.exe
main
main.exe
main-sb*
main-lb*
output.txt
output.txt
11 changes: 11 additions & 0 deletions config.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
version=1.3.8r
discord_webhook= # too lazy atm
shroomin_api_key=

default_print_interval=256
default_threads=16

ULB_sizethreshold=128000000
LB_sizethreshold=96000000
USB_sizethreshold=10000000
SB_sizethreshold=10000000
62 changes: 57 additions & 5 deletions makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ CUBIOMES_SRC := $(addprefix cubiomes/,biomenoise.c biomes.c finders.c generator.
LARGE_BIOMES ?= 0
UNBOUND ?= 0
PRINT_INTERVAL ?= 256
OUT ?= main.exe
# Auto-detect GPU architecture:
# - RTX 40xx/50xx series: sm_89 is faster than native sm_120
# - Everything else: use native
Expand All @@ -20,29 +21,70 @@ endif

$(info Using ARCH = $(ARCH))
override CFLAGS += -O3
override CXXFLAGS += -O3 -std=c++20 -I asio/asio/include -DOMISSION_LARGE_BIOMES=$(LARGE_BIOMES) -DOMISSION_UNBOUND=$(UNBOUND) -DPRINT_INTERVAL=$(PRINT_INTERVAL)
override CXXFLAGS += -O3 -std=c++20 -I asio/asio/include \
-DOMISSION_LARGE_BIOMES=$(LARGE_BIOMES) \
-DOMISSION_UNBOUND=$(UNBOUND) \
-DPRINT_INTERVAL=$(PRINT_INTERVAL)

override NVCC_FLAGS += $(CXXFLAGS) --expt-relaxed-constexpr --default-stream per-thread -arch=$(ARCH) -use_fast_math

ifeq ($(OS),Windows_NT)

all: main.exe

all4: SB.exe USB.exe LB.exe ULB.exe

SRC_CPP := $(wildcard src/*.cpp)
SRC_C := $(wildcard src/*.c)
SRC_CU := $(wildcard src/*.cu)
SRC := $(SRC_CPP) $(SRC_C) $(SRC_CU)

clean:
del /Q main.exe

# nvcc src/*.cpp src/*.c src/*.cu -o main.exe cubiomes/biomenoise.c cubiomes/biomes.c cubiomes/finders.c cubiomes/generator.c cubiomes/layers.c cubiomes/noise.c -arch=native -O3 -std=c++20 -I asio-1.34.2/include -DOMISSION_LARGE_BIOMES=1 --expt-relaxed-constexpr --default-stream per-thread -D_WIN32_WINNT=0x0601

main.exe: $(SRC) $(CUBIOMES_SRC)
nvcc $(SRC) $(CUBIOMES_SRC) -o $@ $(NVCC_FLAGS) -D_WIN32_WINNT=0x0601

SB.exe:
$(MAKE) OUT=SB.exe LARGE_BIOMES=0 UNBOUND=0 build

USB.exe:
$(MAKE) OUT=USB.exe LARGE_BIOMES=0 UNBOUND=1 build

LB.exe:
$(MAKE) OUT=LB.exe LARGE_BIOMES=1 UNBOUND=0 build

ULB.exe:
$(MAKE) OUT=ULB.exe LARGE_BIOMES=1 UNBOUND=1 build

build: $(SRC) $(CUBIOMES_SRC)
nvcc $(SRC) $(CUBIOMES_SRC) -o $(OUT) \
-O3 -std=c++20 \
-I asio/asio/include \
-DOMISSION_LARGE_BIOMES=$(LARGE_BIOMES) \
-DOMISSION_UNBOUND=$(UNBOUND) \
-DPRINT_INTERVAL=$(PRINT_INTERVAL) \
--expt-relaxed-constexpr \
--default-stream per-thread \
-arch=native \
-D_WIN32_WINNT=0x0601

else

override NVCC_FLAGS += -ccbin $(CXX)

MAIN_SRC := src/main.cpp
MAIN_DEP := $(MAIN_SRC) src/common.h

MAIN_SRC += config.o shroomposter.o
MAIN_DEP += config.o shroomposter.o src/config.h src/shroomposter.h

ifneq ($(wildcard /usr/include/openssl/err.h),)
MAIN_SRC += cpp20_http_client.o
MAIN_DEP += cpp20_http_client.o src/cpp20_http_client.hpp
MAIN_CXXFLAGS += -lssl -lcrypto
endif

ifndef NO_GPU
MAIN_SRC += gpu.o
MAIN_DEP += gpu.o src/gpu.h
Expand Down Expand Up @@ -70,7 +112,7 @@ endif
all: main

clean:
rm -f main libcubiomes.a biomenoise.o biomes.o finders.o generator.o layers.o noise.o cubiomes.o gpu.o cpu.o client.o server.o
rm -f main libcubiomes.a biomenoise.o biomes.o finders.o generator.o layers.o noise.o cubiomes.o gpu.o cpu.o client.o server.o config.o shroomposter.o cpp20_http_client.o

libcubiomes.a: $(CUBIOMES_SRC)
$(CC) -c $(CUBIOMES_SRC) -fwrapv $(CFLAGS)
Expand All @@ -91,6 +133,16 @@ client.o: src/client.cpp src/client.h src/common.h
server.o: src/server.cpp src/server.h src/common.h
$(CXX) -c $< -o $@ $(CXXFLAGS)

config.o: src/config.cpp src/config.h
$(CXX) -c $< -o $@ $(CXXFLAGS)

shroomposter.o: src/shroomposter.cpp src/shroomposter.h src/config.h
$(CXX) -c $< -o $@ $(CXXFLAGS)

cpp20_http_client.o: src/cpp20_http_client.cpp src/cpp20_http_client.hpp
$(CXX) -c $< -o $@ $(CXXFLAGS)

main: $(MAIN_DEP)
$(MAIN_CXX) $(MAIN_SRC) -o $@ $(MAIN_CXXFLAGS)
endif

endif
51 changes: 51 additions & 0 deletions src/config.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
#include "config.h"

#include <fstream>
#include <string>

std::unordered_map<std::string, long long> config;
std::string version;
std::string shroomin_api_key;

void loadConfig()
{
std::ifstream file("config.ini");
if (!file)
return;

std::string line;

while (std::getline(file, line))
{
if (line.empty())
continue;

auto pos = line.find('=');

if (pos == std::string::npos)
continue;

std::string key = line.substr(0, pos);
std::string value = line.substr(pos + 1);

if (key == "version")
{
version = value;
continue;
}

if (key == "shroomin_api_key")
{
shroomin_api_key = value;
continue;
}

try
{
config[key] = std::stoll(value);
}
catch (...)
{
}
}
}
17 changes: 17 additions & 0 deletions src/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#pragma once

#include <string>
#include <unordered_map>
#include <stdexcept>

extern std::unordered_map<std::string, long long> config;
extern std::string version;
extern std::string shroomin_api_key;

void loadConfig();

inline long long cfg(const std::string& key, long long defaultValue)
{
auto it = config.find(key);
return it == config.end() ? defaultValue : it->second;
}
Loading
Loading