- Authoritative 30 Hz server (ENet, SQLite): accounts, characters, wild AI, tall grass / water / wandering spawns, fishing, captures, follower chains, clock + weather, LAN beacon - Client: title / join / character creator / play screens, prediction + reconciliation, interpolated players and parties, HD-2D UI (dialogue with Professor Henry, HUD, collection) - Shared deterministic zone generator, movement, protocol, roster, appearance - Paper-doll character art pipeline (PixelLab base walk + per-item animation edits) - Brandling roster from the company list (logo colors, jev types), Blender safari props - Headless test bot
31 lines
619 B
C++
31 lines
619 B
C++
#pragma once
|
|
// Timestamped console log lines for the dedicated server.
|
|
|
|
#include <cstdarg>
|
|
#include <cstdio>
|
|
#include <ctime>
|
|
|
|
namespace bs {
|
|
|
|
#if defined(__GNUC__)
|
|
__attribute__((format(printf, 1, 2)))
|
|
#endif
|
|
inline void logf(const char* fmt, ...) {
|
|
std::time_t t = std::time(nullptr);
|
|
std::tm tm{};
|
|
#if defined(_WIN32)
|
|
localtime_s(&tm, &t);
|
|
#else
|
|
localtime_r(&t, &tm);
|
|
#endif
|
|
std::printf("[%02d:%02d:%02d] ", tm.tm_hour, tm.tm_min, tm.tm_sec);
|
|
va_list ap;
|
|
va_start(ap, fmt);
|
|
std::vprintf(fmt, ap);
|
|
va_end(ap);
|
|
std::printf("\n");
|
|
std::fflush(stdout);
|
|
}
|
|
|
|
} // namespace bs
|