From f12ba1502b1a207b2b7e131c8ed38d8d4ef33d1e Mon Sep 17 00:00:00 2001 From: Tony Bark Date: Tue, 30 Apr 2024 23:18:01 -0400 Subject: [PATCH] Added logo --- README.md | 10 +++-- SimTactics.png | Bin 0 -> 22209 bytes SimTactics.svg | 117 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 124 insertions(+), 3 deletions(-) create mode 100644 SimTactics.png create mode 100644 SimTactics.svg diff --git a/README.md b/README.md index 36b840c..a5a5746 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,18 @@ # zTSO +

+ +

+ zTSO (working title) is intended to be an experimental reimplementation of The Sims Online written in Zig. It directly accesses NioTSO's C-based libraries and uses RayLib for the game engine. ## Motivation -Although an established reimplementation project already exists, it has excess legacy baggage due to it originally being based on .NET Framework 3.5 and XNA, causing plenty of performance issues in its current form. Meanwhile, NioTSO's foundation remains solid, even though it was never finished. The client perfectly simulates a loading screen, plus it can render Sims and objects flawlessly. +Although an established reimplementation project already exists, it has excess legacy baggage due to it originally being based on .NET Framework 3.5 and XNA, causing plenty of performance issues and accessibility remains limited in its current form. (Trust me, I've tried). Meanwhile, NioTSO's foundation remains solid, even though it was never finished. The client perfectly simulates a loading screen, plus it can render Sims and objects flawlessly. -The problem is C is, well, C. ¯\\\_(ツ)\_/¯ Accessing NioTSO's code in safer languages like Go or Rust has been historically difficult. While Zig is still in its infancy, the language's FFI is perfectly capable of directly accessing C headers without jumping through hoops. Finally, although Zig itself has not yet hit 1.0, the RayLib game engine is mature. Making it well worth giving it a try. +The problem is C is, well, C. ¯\\\_(ツ)\_/¯ Accessing NioTSO's code in safer languages like Go or Rust has been historically difficult. While Zig is still in its infancy, the language's FFI is perfectly capable of directly accessing C headers without jumping through hoops. Making it well worth giving it a try. Although Zig itself has not yet hit 1.0, the RayLib game engine is mature. -Will this succeed? *I have no idea*. I'm not much of a game developer, but that hasn't stopped me from dreaming. Your help is most welcome. +Will this succeed? *I have no idea*. I'm not much of a game developer, but that hasn't stopped me from dreaming. Your help is most welcome. My goal is to at least create a successful lot server for endless P2P fun. ## To do diff --git a/SimTactics.png b/SimTactics.png new file mode 100644 index 0000000000000000000000000000000000000000..07a90ff00a3de27ed197c9c23f323eb92da360d1 GIT binary patch literal 22209 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 literal 0 HcmV?d00001 diff --git a/SimTactics.svg b/SimTactics.svg new file mode 100644 index 0000000..3c0eebd --- /dev/null +++ b/SimTactics.svg @@ -0,0 +1,117 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + +