citybound / citybound Goto Github PK
View Code? Open in Web Editor NEWA work-in-progress, open-source, multi-player city simulation game.
Home Page: http://cityboundsim.com
License: GNU Affero General Public License v3.0
A work-in-progress, open-source, multi-player city simulation game.
Home Page: http://cityboundsim.com
License: GNU Affero General Public License v3.0
Platform: macOS Sierra 10.12.2
What was I doing: Just messing around, I made one road segment, then tried attaching the continuation back to the end of the first segment. The application froze and I was getting the macOS pinwheel. I force closed the application. Now, when I open the application, no window shows up.
I can't get the application window to show up at all anymore. Even after restarting.
Let me know if there are logs I can copy somewhere and paste them here.
By the way, I'm really excited to follow your progress on this game and possibly make some contributions of my own. Great decision to make it open source!
The app fails to launch via the .app package on OS X El Capitan 10.11.6 claiming:
You have OS X 10.11.6. The application requires OS X 10.12 or later.
However, I can launch Citybound by manually running the executable within the application package. Probably a simple issue with the package metadata.
Since you seem to be using GitHub Issues for task-tracking, I think you'd like waffle.io.
It presents a customizable set of your Issues tags as columns in a Trello-like view.
Here's what this repo looks like with the defaults they use for projects with no associated accounts:
https://waffle.io/citybound/citybound
Click the issue number in the top-left corner of a card to see more.
(Yes, you can use it to create/edit/delete things instead of the normal GitHub Issues UI when you're logged in. They also offer a badge you can embed into your README to show the number of tasks currently sitting in a column of your choice.)
They also recently added progress metrics, to help you keep track of yourself:
https://waffle.io/citybound/citybound/metrics-cta
Tested on Windows 10 x64
Now that this repo is public, you might as well take advantage of the services which are offered for free to all open-source projects.
First, you'll want Dependency CI to warn you of insecure, abandoned, or incompatibly licensed dependencies.
Second, even if you don't have a test suite for cargo test
to run, you can at least hook cargo build
up to continuous integration to catch accidental introduction of compile-time errors on platforms (or Rust versions) other than the one you develop on.
Travis CI will do open-source projects for free with Linux and OSX build environments. AppVeyor will do Windows for free.
If, for some reasons, Travis CI doesn't meet your needs, drone.io, CircleCI, and Semaphore all provide "free for open-source" plans.
The Rust Everywhere project also provides a way to hook everything up so that, whenever you push a new tag to GitHub, Travis and AppVeyor will...
If you do have something for cargo test
to run, then you'll also want to add Coveralls.io or Codecov to track test coverage. Setting up to gather code coverage data for Rust is detailed in this blog post.
If you don't have something for cargo test
to run on, might I suggest looking into QuickCheck and The Big List of Naughty Strings?
Other tools you may want to run in a CI environment include:
diff
mode, can be used to make the CI server treat code style violations as a test failure.)cargo doc
to check API documentation for broken internal links)Also, while the hosted service had problems with your code (probably because you're tying yourself to a specific nightly version), I'd strongly recommend tracking down the version of clippy which corresponds to the nightly you're using. That'll give you code linting over and above what the compiler does.
Clicked to place a road at the end of an existing, built segment, caused simulation panic and app crash.
OS X El Captan 10.11.6
Console output:
thread 'main' panicked at 'called `Option::unwrap()` on a `None` value', ../src/libcore/option.rs:323
note: Run with `RUST_BACKTRACE=1` for a backtrace.
Simulation Panic!
"called `Option::unwrap()` on a `None` value"
thread 'main' panicked at 'called `Option::unwrap()` on a `None` value', ../src/libcore/option.rs:323
So the problem is the game's control options are stuck, and they should be assignable in an options menu.
I've included some options that you may want to put in. I picked the most important bits from other games. I can add them or you can edit this post if needed, I'll add more as I think of them.
How comprehensive do you want this list to be, do you want me to include all the settings already in the prototype?
Language
User Interface
Camera
Graphics
[Settings (None, Low, Med, High, All) for relevant options]
[Boolean]
Audio Options
Assignment Options
Old intersection implementation
672 lanes, 352416 connect replies
4549198 New intersection implementation
132 lanes, 17292 connect replies
480 lanes, 229920 connect replies
Easy:
Hard:
Mod support has been discussed many times before, and it's something that can really increase the longevity of a game. See Warcraft 3 or Cities: Skylines. Therefore I'm creating this issue here for a discussion about an actual implementation of mods in Citybound.
Any implementation of mods will make the experience much more customisable from a player perspective, by letting the player enable and disable any mod. It will also enable people to create very experimental mods that are too unstable or not popular enough to be included in the main game.
Forks? Would make it difficult to combine modifications, and essentially impossible for the end user. Forks are better for bigger mods.
Pull requests? All pull requests has to go through some kind of vetting process for quality before they are included. Something which will take resources from the development of the game.
All of the alternatives requires some sort of interface to create hooks into the game routines. I can't say anything about any details, so Anselm or someone else might have to fill in here.
Scripting would probably be the most obvious solution to this. It would require us to chose a language, probably something like Lua (which has good Rust bindings already). Here we need to figure out a good way to efficiently send objects back and forth between the game and the scripting engine. This is the most difficult part, also because if something is left out (like building parameters) it will make certain mods impossible.
These would written in Rust, and be compiled directly from source with Cargo and rustc. I'm thinking that the same version of rustc that was used to compile the game would be included in the game package. Cargo already exists as a library, so we should be able to use it to compile mods at run time. The mods would be compiled into dylib's, so that they could be dynamically loaded and called from the game at run time.
The game engine should be included as a library and contain ways to hook into the game world.
Mods should contain a package specification, with information about what it is (a mod, a model, etc) and it's dependencies. I'm thinking mods should be pullable from a central repository, something like the Steam Workshop. This should preferably be backed by a REST API with a publicly available specification so that it's possible to get packages from unofficial repos, etc. Getting packages directly from git repos would be a great addition to this, and of course from the local file system.
Personally I think that the second option of using dynamic libraries would be the best option because it would give us the most freedom to create whatever we want. For example, it would be possible to create a mod which enables Lua scripting.
I'd be willing to build the basis for packages, and if others like the second idea for mods (dynamic libs), I could try to implement that too.
Obviously something like this requires native support in the game engine, that's why I'm bringing it up this early in the process.
Suggestions and general feedback is the reason I made this, so feel free to comment below.
Hey, looking forward to watching this develop!
I downloaded and launched the Linux binary. I use Ubuntu 14.04 64-bit. It starts up fine when using the Unity desktop environment but I normally use xmonad. In xmonad it doesn't create the game window at all.
Probably a low priority but I thought I would report anyway.
It would be really helpful if the projects tab was used to make an Agile style project board. The categories could be Backlog, In-Progress, Testing, and Done. Then each card could link to an issue which could have an assignee or something. That would make development on this project easier for new developers.
Add listeners for magnification and rotation in
Do so as a fork first, then pull-request to the original projects with an issue there
Created a Panic by overlapping too many roads (gotta test those intersections!).
CMD+Q to quit the game, however double clicking the .app to restart it launches the app without any new windows appearing. Only option is to force quit the .app.
D:\Games\Citybound\Tech demo 1>citybound-windows.exe
thread 'main' panicked at 'calledOption::unwrap()
on aNone
value', ../src/libcore\option.rs:323
stack backtrace:
0: 0x6f54e4 -
1: 0x6f1d59 -
2: 0x6f248a -
3: 0x6f2326 -
4: 0x6f2249 -
5: 0x6f21cb -
6: 0x70b0a5 -
7: 0x70afed -
8: 0x4b3266 -
9: 0x4bc74b -
10: 0x4ff999 -
11: 0x42f206 -
12: 0x6fdb38 -
13: 0x461554 -
14: 0x6f2108 -
15: 0x6fdb38 -
16: 0x6f1503 -
17: 0x4013b4 -
18: 0x4014e7 -
19: 0x7ffba7c38363 -
Simulation Panic!
"calledOption::unwrap()
on aNone
value"
thread 'main' panicked at 'calledOption::unwrap()
on aNone
value', ../src/libcore\option.rs:323
stack backtrace:
0: 0x6f54e4 -
1: 0x6f1d59 -
2: 0x6f248a -
3: 0x6f2326 -
4: 0x6f2249 -
5: 0x6f21cb -
6: 0x70b0a5 -
7: 0x70afed -
8: 0x4a2805 -
9: 0x4b05a9 -
10: 0x4bc74b -
11: 0x4ff999 -
12: 0x461446 -
13: 0x6f2108 -
14: 0x6fdb38 -
15: 0x6f1503 -
16: 0x4013b4 -
17: 0x4014e7 -
18: 0x7ffba7c38363 -
Reproduction:
Adapt
to display custom kay structs nicer in the VSCode debugger
When building a road, after it has finished, if you click/drag on a road the game crashes.
Error message:
thread 'main' panicked at 'called Option::unwrap()
on a `None` value', ../src/libcore\option.rs:323
note: Run with RUST_BACKTRACE=1
for a backtrace.
Simulation Panic!
"called Option::unwrap()
on a None
value"
thread 'main' panicked at 'called Option::unwrap()
on a None
value', ../src/libcore\option.rs:323
cityboundsim.com links to http://wiki.cityboundsim.com/FAQ which doesn't exist.
I downloaded the app bundle and started it once without problems.
Now I can't open it anymore, I just get a process running at almost 100%. Starting the binary inside the package using the terminal gives no output.
Running from source works fine, self compiled binary works fine as well!
OS: macOS Sierra 10.12.2
Whenever I press c
to spawn cars, as it says on the wiki, I get an error in the top left corner.
SIMULATION PANIC:
attempt to calculate the remainder with a divisor of zero
The console output:
thread 'main' panicked at 'attempt to calculate the remainder with a divisor of zero', lib\kay\src\slot_map.rs:73
note: Run with 'RUST_BACKTRACE=1' for a backtrace.
Simulation Panic!
"attempt to calculate the remainder with a divisor of zero"
I've tried some different basic road combinations (tried with and without selecting roads) but all of them resulted in the same error. See attached screenshots.
Version: 0.1.0
Platform: Windows 7 x64
this is the road I was trying to build (in three steps)
sometimes it crashes like this:
sometimes it doesn't build the circle:
the roads are still there, they just don't get build:
when you click the "ghost roads", you get this exception:
thread 'main' panicked at 'called `Option::unwrap()` on a `None` value', ../src/libcore\option.rs:323
note: Run with `RUST_BACKTRACE=1` for a backtrace.
Simulation Panic!
"called `Option::unwrap()` on a `None` value"
thread 'main' panicked at 'called `Option::unwrap()` on a `None` value', ../src/libcore\option.rs:323```
Given that you want to be able to offer licensing other than the AGPL to people, you'll need to make sure any contributors understand the terms under which they must contribute.
The simplest way to do that is to add a CONTRIBUTING.md
file, which will result in a hyperlinked "Please review the guidelines for contributing to this repository" banner above the "New ..." forms.
It's explained, including with a screenshot, in this GitHub Blog post.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.