MCPcopy
hub / github.com/nicholas-ochoa/OpenSC2K

github.com/nicholas-ochoa/OpenSC2K @main sqlite

repository ↗ · DeepWiki ↗
428 symbols 625 edges 98 files 0 documented · 0%
README

OpenSC2K

OpenSC2K - An Open Source remake of SimCity 2000 written in JavaScript, using WebGL Canvas and Phaser 3.

Overview

Currently a lot remains to be implemented but the basic framework is there for importing and viewing cities. Lots of stuff remains completely unimplemented such as the actual simulation, rendering of many special case tiles and buildings and anything else that exists outside of importing and viewing.

Along with implementing the original functionality and features, I plan to add additional capabilities beyond the original such as larger city/map sizes, additional network types, adding buildings beyond the initial tileset limitations, action/history tracking along with replays and more.

I've only tested using Chrome / Firefox on macOS, but it should run fairly well on any modern browser/platform that supports WebGL. Performance should be acceptable but there is still a LOT of room for optimizations and improvements.

Due to copyrights, the original graphics and assets from SimCity 2000 cannot be provided here. I've developed and tested using the assets from SimCity 2000 Special Edition for Windows 95. Once I've got the basic engine stabilized I plan to add support for multiple versions of SimCity 2000 in the future.

Update: I've been working on refactoring considerable portions of the code for clarity and performance. Due to the changes a lot of existing functionality is now completely broken and will be fixed in upcoming commits.

Screenshot

Installation

You can use yarn (recommended) or npm to install and run. Once installed and started, open a browser to http://localhost:3000 to start the game.

OS X / Linux

  1. git clone https://github.com/rage8885/OpenSC2K or download this repository
  2. cd OpenSC2K
  3. yarn install downloads and installs the dependancies
  4. yarn dev to run

Usage

By default, a test city included in the /assets/cities/ folder will load. Currently you must modify the /src/city/load.js file to load different cities.

Requires two files from the Windows 95 Special Edition version of SimCity 2000: LARGE.DAT and PAL_MSTR.BMP. These must be placed in the /assets/import/ directory prior to starting the game. The files will be automatically parsed and used for all in game graphics.

Controls

  • WASD to move the camera viewport
  • Q or E to adjust camera zoom

Screenshot Screenshot Screenshot

Acknowledgements

Based on the work of Dale Floer - SimCity 2000 specifications (*.sc2) - MIF / LARGE.DAT graphics extraction https://github.com/dfloer/SC2k-docs

Based on the work of David Moews - SimCity 2000 for MS-DOS file format; unofficial partial information http://djm.cc/dmoews.html

Portions of the SC2 import logic are based on sc2kparser created by Objelisks and distributed under the terms of the ISC license. https://github.com/Objelisks/sc2kparser

Includes work adapted from the Graham Scan polygon union JavaScript implementation by Lovasoa and distributed under the terms of the MIT license https://github.com/lovasoa/graham-fast

License

OpenSC2K - An Open Source SimCity 2000 remake

Copyright (C) 2019 Nicholas Ochoa

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

SimCity 2000 is copyright Electronic Arts / Maxis. No assets, artwork or other media from the original game is included in this remake. The OpenSC2K engine is being rebuilt as a new implementation and does not use any code from the original game reproduced in any form.

Core symbols most depended-on inside this repo

log
called by 129
src/import/segmentHandlers/MISC.js
hide
called by 32
src/cell/cell.js
show
called by 29
src/cell/cell.js
offset
called by 25
src/cell/position.js
events
called by 25
src/cell/tiles/tile.js
callback
called by 24
lib/fomantic-ui-2.7.1/semantic.js
refresh
called by 24
src/cell/tiles/tile.js
get
called by 21
src/cell/tiles.js

Shape

Method 300
Class 114
Function 14

Languages

TypeScript100%

Modules by API surface

src/cell/position.js23 symbols
src/cell/cell.js20 symbols
src/cell/tiles/tile.js15 symbols
src/cell/tiles.js15 symbols
src/simulation/actors/actors.js14 symbols
src/import/artwork.js13 symbols
src/cell/surrounding.js12 symbols
src/simulation/micro/simulation.js11 symbols
src/world/events.js10 symbols
src/cell/tiles/heightmap.js10 symbols
src/world/tools/roads.js9 symbols
src/city/map.js9 symbols

Dependencies from manifests, versioned

@babel/cli7.2.0 · 1×
@babel/core7.2.0 · 1×
@babel/node7.2.0 · 1×
@babel/plugin-proposal-class-properties7.2.1 · 1×
@babel/plugin-proposal-optional-chaining7.2.0 · 1×
@babel/polyfill7.0.0 · 1×
@babel/preset-env7.2.0 · 1×
@vingle/bmp-jsrage8885/bmp-js · 1×
babel-eslint10.0.1 · 1×
babel-loader8.0.4 · 1×
bmp-jsrage8885/bmp-js · 1×
css-loader2.0.0 · 1×

For agents

$ claude mcp add OpenSC2K \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact