BeamNG.Earth
BeamNG.drive용 1:1 비율 실시간 지구, 실제 고도·위성 이미지·부동 원점·보조 서버에서 LOD 스트리밍
An open source game engine that plays Sid Meier’s SimGolf (2002). Windows, macOS, Linux, Android and the browser.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗OpenSGolf is an open source game engine that plays Sid Meier's SimGolf (2002). It uses the original game's files if you have them, or its own free graphics and sound if you don't. It runs on Windows, macOS, Linux, Android and in the browser.
Screenshot taken with the original SimGolf files (not included). More pictures on the website.
Watch the trailer (one minute, 4K, played with the original SimGolf files):
OpenSGolf is a reimplementation of the golf course management game Sid Meier's SimGolf (Firaxis, 2002), written in Rust. It aims to play exactly like the original, in the same way that OpenTTD does for Transport Tycoon Deluxe: the rules and numbers are rebuilt from facts read out of the original game, and with every option at its default the game looks and plays like the 2002 release.
On top of that it adds things the original never had: it runs on today's systems and screens, saves anywhere, fixes the original's own bugs, and offers optional extras and mods. Everything new is optional, and the original game is always one click away.
The quickest way to play is in the browser: crspytopgn.github.io/opensgolf. Nothing needs installing.
What's new: every version's big features are in CHANGELOG.md.
Downloads for every system (all releases):
| System | Download | Notes |
|---|---|---|
| Windows | opensgolf-windows.zip | Unzip and run opensgolf. If Windows warns, choose More info, then Run anyway. |
| Windows on ARM | opensgolf-windows-arm64.zip | As for Windows. |
| macOS | opensgolf-macos.zip | Unzip, then right-click OpenSGolf and choose Open the first time. |
| Linux | AppImage · tar.gz | Mark the AppImage as executable and run it. |
| Linux on ARM | AppImage · tar.gz | 64-bit systems, for example a Raspberry Pi 4 or 5. |
| Android | opensgolf-android.apk | Open the file on the phone and install it. |
| Steam Deck | Linux AppImage | Add it to Steam as a non-Steam game; it starts full screen in Game Mode and plays with the Deck's controls. |
Or install it with a package manager:
| System | Command |
|---|---|
| Windows (Scoop) | scoop bucket add games then scoop install opensgolf |
| macOS (Homebrew) | brew install --cask crspytopgn/tap/opensgolf |
Every download is a real app that runs offline; the browser version is there for devices without one (iPhone and iPad) or for a quick try. Controllers (Xbox, PlayStation, Switch, Steam Deck) work on Windows, macOS, Linux and in the browser. The Windows and macOS warnings appear because the project has no paid code-signing certificate. Details for each system are in docs/INSTALL.md; how to play, keys and touch controls are in docs/PLAYING.md.
OpenSGolf needs a set of graphics, sounds and text. There are two:
The original SimGolf files. If you own the game, point OpenSGolf at your SimGolf folder, the one containing Data,
Flics and Sounds (on Windows usually C:\Program Files\Maxis\SimGolf), or at a .zip of it. In the browser,
choose Choose game folder; in the app, choose Use my SimGolf files… on the title screen. The app and the
browser also take the SimGolf CD itself, or an image of it (.iso, or a Mac's .cdr), with nothing to install (INSTALL.md). The files are read on your
own device and never uploaded.
Want the original sounds and music? Use the SimGolf CD or an image of it (.iso), or a full installed copy. Some downloaded copies have the art but leave the sounds out (their
SoundsandSimsFXfolders are empty); the game still plays with those, using the free OpenSGolf sounds instead, and says so.
Zips made by Windows (Deflate64 for big files), 7-Zip, Keka or The Unarchiver (BZip2, LZMA, PPMd) are read too, even on an iPad whose Files app shows their sound folders empty.
opensgolf-free, the free base set. Like OpenGFX for OpenTTD, it contains nothing from the original: art, sounds and text made by the engine itself. It is used automatically when no SimGolf files are found. It is simple for now and open to contributions from artists.
With its default settings OpenSGolf plays like the original, apart from these:
Optional, and off by default. Start New Game has a one-click choice of preset: Original, Original + helpers (screens, helpers and looks that leave play unchanged), OpenSGolf (the helpers plus a few light gameplay extras) or your own Custom mix; each option says whether it changes the looks, helps, or changes the gameplay:
Enhanced graphics for 4K and widescreen: sharp scaling, water (depth, waves with the wind, shorelines, rain rings, reeds, ducks, swans, jumping fish, frozen ponds), light, weather by each place's climate, seasons, late-winter snow, desert heat waves, birds of prey, butterflies and falling leaves, grass tufts, tournament crowds, lit windows at night, dawn sprinklers, morning frost, pixel-perfect whole-number scaling (Classic too) and a photo mode (docs/ENHANCED.md); a showcase fly-over of the course hole by hole (Shift+O).
Bigger courses: Large, Huge and Giant, up to 128 × 128 tiles.
Preferences, sorted: the original's four ticks first, then one line per group of the port's own options (Game options, Graphics, Controls and keys, Text size, Game files, More), each describing itself at the box's foot.
OpenSGolf extras: gameplay extras (a Hardcore economy, higher staff limits, setting a hole's par, animals to buy, left-handed golfers (and a left-handed pro), weather that matters (rain, snow, heat waves and thunderstorms change how balls roll and who comes out to play), more visitors (touring pros and invented celebrities, moddable through data/visitors.toml), the calendar at half or quarter speed or stopped, sandbox switches (freeze golfer happiness, unlock everything), and, experimental, cut content restored as decorative landmarks), looks (turning buildings, path styles and lamp posts, random trees), a search over every Preferences option with a reset to the original, and interface extras such as a People screen, message history, autosave (the last three kept), a map of each saved course, pausing in the background or on big news, and course sharing: copy a course code, a friend pastes it and tries to beat your course record.
A hidden Cheats box (Ctrl+Shift+C): add or take away money, force a VIP visit, buy all the land, the sandbox switches. A game in which a cheat was used says so on the Load list, and its course record is no shared challenge.
Saved games of the original SimGolf (.sve) come over as games of the port's own: course, holes, buildings, money,
date, members, people and staff (docs/PLAYING.md).
Quick save and quick load (Shift+F5, Shift+F9) and a staff areas view (Shift+A) that shows every employee's work ring and the fairways and greens no groundskeeper reaches.
How close each part is to the original is tracked in docs/PARITY.md.
Please report bugs and suggest ideas on the issue tracker (in the game, Preferences → More → Report a problem... or Shift+F8 fills in the bug form for you). Contributions of code, art for the free base set and translations are welcome; see CONTRIBUTING.md and docs/TRANSLATING.md.
The rule for every version: the original game, exactly as it was, is always one click away. Everything new is optional and off by default; only fixes for the original's own bugs are on.
0.3 brought the one-click choice between the original game and the OpenSGolf extras, undo, autosave, save pictures, course sharing with challenges, controllers and the Steam Deck, and new Enhanced graphics (weather by place and year, wildlife, crowds, winter, grass, sharpening).
Ideas for later: a community course gallery, club events, more translations and an installable phone and tablet app.
OpenSGolf is an unofficial fan project; it is not affiliated with or endorsed by Electronic Arts, Firaxis Games or
Take-Two Interactive. The original game's art, sounds, music and videos belong to Electronic Arts and are not part of this
project; the game reads them from your own copy at runtime and never uploads or redistributes them. The English text of the
original's in-game messages, which exists only inside the original program, is included in lang/en.txt so the game can
read word for word like the original; it remains Electronic Arts' text. SimGolf and Sid Meier's are trademarks of their
owners and are named here only to say which game OpenSGolf plays and whose files it can use.
The engine is a clean-room reimplementation. No code from the original is included (its message text is, see above); its rules are written from facts read out of the publisher-supplied golf.exe (docs/PUBLISHER_EXE_NOTES.md), the original manual and footage of the game, and nothing here removes or bypasses copy protection.
OpenSGolf is free software under the GNU General Public License, version 2 or (at your option) any later version
(GPL-2.0-or-later), the same licence as OpenTTD: see LICENSE. Anyone may use, change and share it, and changed
versions must stay open under the same terms. The bundled Liberation Sans font is under the SIL Open Font License. Content
packs (mods) choose their own licence; the free base set is GPL-2.0-or-later too. The built-in HD maker's pixel-art
upscaler (crates/sg-core/src/xbrz.rs) was written for OpenSGolf to the rules and constants of the xBRZ algorithm by Zenju
(xBRZ 1.8, https://sourceforge.net/projects/xbrz/, GPL-3.0, itself based on Hyllian's xBR); GPL-3.0 is among the
versions OpenSGolf's licence allows. Its AI upscaler (crates/sg-core/src/aiscale.rs) runs Real-ESRGAN's
realesr-general-wdn-x4v3 model by Xintao Wang, whose weights are bundled (crates/sg-core/data/) under the BSD 3-Clause
licence (crates/sg-core/data/LICENSE-Real-ESRGAN.txt), which is compatible
with the GPL.
OpenSGolf is free and always will be. If you enjoy it and feel like buying me a coffee, that's always nice: buymeacoffee.com/crspytopgn. The game itself asks at most twice, gently, after an hour of play and again five hours later if you said Maybe later (the play time is counted on your device; Don't ask again ends it; see docs/PLAYING.md). Preferences > More has a Support OpenSGolf line.
Privacy: the play-time count. So I can see how much OpenSGolf is played, the GitHub release builds and the browser
version send an anonymous count to the project's GoatCounter: one at start
(start/<platform>/<version>) and one per 15 minutes of play (play-15min/<platform>), nothing else (no ids, names,
saves or cookies). The game says so once; Preferences > More > Count my play time (anonymous) turns it off. Store
builds (Flathub, F-Droid) do not include it. See docs/PLAYING.md.
Thank you to everyone who reports bugs, tests on their devices, draws art for the free set and shares the game, and to Sid Meier, Firaxis and the original SimGolf team for a game people still love twenty years on.
Like OpenGFX for OpenTTD, opensgolf-free is a complete set of art, sounds and text that contains nothing from the original:
panels and buttons, terrain textures for the four themes, golfers, staff, celebrities and animals with all their views and
animation frames, buildings, trees, flowers and landmarks, synthesised sound effects and voices, our own stories, characters,
famous golfers and terrain descriptions, and Liberation Sans (OFL) as the fonts. It is drawn by the engine itself
(crates/sg-core/src/freeset/) when the game reads a file, in exactly the sizes and layouts the engine expects, so nothing has
to be downloaded. It is simple placeholder art meant to grow through contributions: artists replace files one at a time in
packs/opensgolf-free (see CONTRIBUTING.md).
--game folder, or one without them), and says so.--base opensgolf-free picks it for a run even with your copy present (--base original the reverse); Preferences >
Game files > Content packs picks it for good.sgtool freeset DIR writes all 5,465 files to a folder (about 82 MB, which is why they are made at run time rather than
committed).The plan, as in OpenTTD: game content lives in data packs (terrain types, buildings, prices, golfers, properties, text), loaded in order on top of a base set; mods add or override data, art and sounds; scenarios and courses are shareable files; an in-game content list downloads community packs (docs/CONTENT_INDEX.md); translations are plain text files (docs/TRANSLATING.md). See docs/MODDING.md for the design and its progress, and CONTRIBUTING.md to help.
Install Rust (https://rustup.rs), then from this folder:
cargo build --release
target/release/opensgolf --game "/path/to/game/Program_Files_(ENGLISH)"
target/release/opensgolf # no copy of the game: the free base set
On Windows the programs are target\release\opensgolf.exe and so on. Nothing else needs installing on macOS or Windows. On Linux the
sound needs the ALSA headers to build (sudo apt install libasound2-dev), or build without sound with
cargo build --release -p opensgolf --no-default-features.
| Program | What it does |
|---|---|
opensgolf | The game. |
sgtool | Inspect and convert the original assets: check DIR decodes everything and reports failures; png file.pcx out.png (also tga, bmp, flc [frame]); sheet anim.flc sheet.png; chr Gack.chr gack; top10 top10.sve; dta file.dta; story file.txt; freeset DIR writes the free base set as a pack folder; icon DIR [SIZES] writes the application icon as PNGs; fixture DIR [font.ttf] writes a small stand-in game folder for tests. |
sgplay | Plays the Bink intro and closing videos through an installed ffmpeg (docs/SOUND_VIDEO.md). |
Code layout: crates/sg-core holds the decoders and the game rules (no window, no audio device, unit tested, including golden values
captured from the earlier C++ port); crates/simgolf is the game (miniquad for the window and OpenGL, cpal for sound, fontdue for the
game's font); crates/sgtool and crates/sgplay are the tools. The earlier C++ port is kept in legacy/cpp for reference.
cargo test runs the unit tests. CI builds and tests on macOS, Windows and Linux, and on Linux also plays the game headless on
the free base set (tools/freeset_playtest.sh: a new game, a hole built, about three months of play, save, load, every report
and title screen) and keeps the stills.
web/build.sh builds the browser version into web/dist (needs rustup target add wasm32-unknown-unknown). Serve that folder
with any static web server, for example python3 -m http.server -d web/dist, and open it. The page asks for the folder of your
own SimGolf copy (the one containing Flics, Sounds and Data), a .zip of it, or the SimGolf CD (an .iso or a Mac's .cdr, a
.zip of either, or the CD picked as a folder: the page unpacks the installer's cabinets itself); its files are read into the
browser tab only, nothing is uploaded.
Without one, Play with free graphics starts on the free base set.
Sound starts with the first click, key or tap anywhere on the page (a browser rule; the game shows a note while the browser
still holds it back) and is queued on the browser's audio thread, so a slow frame does not break it up. Saved games are
kept in the browser's local storage; the start page's Your saved games backs them up as one .zip and restores them (or
saves from the desktop version); see docs/PLAYING.md, "Saved games: where they are, backups and imports". CI builds it too (artifact opensgolf-web), and every push to main publishes it to
GitHub Pages.
Enhanced graphics is the port's own option for 4K and widescreen monitors and its shader effects; it changes no art,
and Classic stays the default and byte-identical with it off. Turn it on in System Functions → Preferences → Graphics, or with
--enhanced / --classic-render (--fx for just the effects). See docs/ENHANCED.md.
An opt-in HD mode (beta) draws the game's art upscaled ×4 (or ×2). Making it is one click: Preferences → Graphics →
Make HD graphics from my SimGolf files (beta)... redraws your own copy's art on your computer or phone with an AI upscaler
built into the game (no graphics card or download needed; the box says how long it takes on your device, often 10 to 30
minutes, in the background while you play), then turns HD on by itself. Remove HD graphics... switches back and frees
the space. Not in browsers yet. The upscaled art is a
derivative of EA's art, so it is always made by you from your own copy (in the game, or with tools/hd_pack/hd_pack.py);
it is never shipped, downloaded from this project, or to be shared. Switch it in Preferences → Graphics (HD graphics),
with --hd / --classic, or --hd-pack DIR. See docs/HD.md.
The original's data formats (PCX, TGA, BMP, FLC animations with their quirks, WAV, the character, story and save files) are
all decoded (docs/FORMATS.md); the terrain is drawn the way the original's Terrain.dll draws it
(docs/TERRAIN.md), the sprites as its FLC sheets lay them out (docs/SPRITES.md), and the
golfers, money, ratings, tournaments and the rest follow the rules read from the publisher's golf.exe
(docs/GAMELOGIC.md). Notes from the original manual: docs/MANUAL_NOTES.md.
The retail disc is an InstallShield install (data1.hdr + data1.cab + data2.cab), which unshield x data1.cab extracts;
its golf.exe is wrapped in SafeDisc, and this project never touches it.
| iPhone and iPad |
| Browser version |
| Works by touch in Safari; hold it sideways. |
Golfer insight (interface extras): a landing map of where golfers' shots on each hole end up (Shift+D), with heat maps of where balls land, golfers wait and golfers complain, for a hole or the whole course, and each hole's most frequent golfer comments this month, last month and this year (Shift+I).
Text size (Preferences): normal, 125% or 150% text in the message window, pop-up boxes, tooltips, name tags, touch labels and the port's own pages, the boxes growing with it and staying on screen.
History graphs (interface extra): the club's and each hole's months as line graphs on the Histograph's page: rounds, revenue, costs, profit, cash, happiness, ratings and members, and each hole's plays, strokes over par, happiness and fees (Shift+Y).
Live scorecards, a clickable ticker, the year in numbers and home-site details (interface extras): any golfer's round so far on the original's scorecard, a click on a ticker message to go to its golfer or place, a page after the End of Year report with the year against the last, and what a home site cost, sold for and is worth.
Camera bookmarks and modern mouse controls: four kept views of the course (Ctrl+Shift+F1..F4 keep, Shift+F1..F4 return), dragging with the middle button, and interface extras that zoom towards the pointer and drag the course with the right button (a right click stays the original's undo).
Drag to place (interface extra): drag to lay a row of benches, flower beds, ball washers, willows or bridges, with the row and its cost shown before you let go; and Original and Modern control presets on the Change keys screen.
Mouse aim and swing (interface extra): aim your pro with the mouse as on a touch screen: a click sets the target, a drag moves it or looks round the hole, and the round Swing button takes the shot.
Random trees (interface extra): every tree planted takes a random size and species of its kind, and every scenic tree a random one of the seven.
Updates from the title menu: Check for updates, then Update now downloads the new version, checks its signature and installs it in place (Windows, macOS, Linux, Android); on Windows and with the Linux .tar.gz it downloads only the programs and the pack files that changed. A Preferences tick (Preferences → More) checks once at each start. Only GitHub is contacted, and only then.
Content packs and game scripts that change prices, buildings, terrain, golfers, text, art and sounds, add scenarios, and can be downloaded from inside the game (docs/MODDING.md).
Your own art, in high resolution: a content pack can bring hand-drawn pictures and PNG sprite sheets at 2x or 4x the
original's size, drawn sharp at any window size; sgtool hd-kit makes a starter kit and sgtool pack-check checks the
pack (docs/MODDING.md).
A course editor (Course editor... on the title menu): build a course free of charge with the game's own tools, import a heightmap picture, choose the land owned at the start, the starting cash, the difficulty and goals, and save it as a scenario to play and share (docs/PLAYING.md).
Report a problem (Preferences → More, or Shift+F8): opens the bug report form in your browser filled in with the version, platform and a short system line, and puts a copy of your game (and a screenshot) in a Reports folder to attach. Nothing is sent until you submit the form (docs/PLAYING.md).