Comments (10)
The main thing I am pointing out is that Kotlin/JavaFX may steer the project away from common game engine communities. Specifically, Godot, Unity, and Unreal all support C++ or C#, but not Java. Any Java code and UI will likely be difficult to integrate into the aforementioned engines.
I absolutely agree. However, I've got a great start and so far am the main contributor. I don't expect a lot of jump-ins on this project. Feel free to start a city-sim in Godot... you can refer to my code for inspiration. A few more good resources: "Sim City 2000: Power, Politics and Planning" by Nick Dargahi and "Urban Dynamics" by Jay Forrester.
If you're skeptical about Kotlin for games, check out some of the LibGDX examples: https://github.com/libgdx/libgdx/wiki/Using-libGDX-with-Kotlin I think you'll find it's surprisingly easy to pick up.
from kotcity.
wow I hadn't even seen this... I'm going to examine it but will not be canceling this project
from kotcity.
Thanks for your feedback. One of the design decisions was to use Kotlin/JavaFX which would net not only good support for GPU accelerated graphics on Mac / Windows / Linux but also enable quick prototyping of UI with Gluon's Scene Builder, while using open source for the whole stack. Additionally, Kotlin has been a huge asset to the project with its awesome tooling and null-safety. Regarding JavaFX, I am using or will be using many features that are 1st class supported: embedded browsers, bar/line/graph charts, calendar widgets, etc. For better or for worse a city simulation needs many of these "data visualization" functions to really let the player know what's going on.
However: I consider this the "proving ground" for a decent open source city simulator. A good deal of work is being done in the current project to separate data / simulation from display. It is not inconceivable you could write a "Godot renderer" for the current sim code pretty easily and totally blow away the lousy graphics I have today.
I hope to reach a viable 1.0 (totally playable, workable game, even if scoped to ~SimCity 2000 levels) and then proceed on to a fully 3D 2.0 version, similar in appearance to Cities: Skylines but with the simulator closer to SimCity 4, hopefully able to re-use some of the simulation code or even logic from this version.
I don't consider this initial version the end-all be-all of city-simulation projects but I hope that it is a solid start and we can work together to evolve it to a place where we can have a free, open source, SimCity 4 replacement.
from kotcity.
One of the design decisions was to use Kotlin/JavaFX which would net not only good support for GPU accelerated graphics on Mac / Windows / Linux but also enable quick prototyping of UI
Godot has cross-platform (desktop and mobile) 3D graphics, with inbuilt physically-based rendering, global illumination, etc:
Godot also has support for custom UI development (albeit not drag-and-drop widgets):
I hope to reach a viable 1.0 (totally playable, workable game, even if scoped to ~SimCity 2000 levels) and then proceed on to a fully 3D 2.0 version. ... I hope that it is a solid start and we can work together to evolve it to a place where we can have a free, open source, SimCity 4 replacement.
It just seems to me that adopting Godot would more readily support your goals, as it has support for 2D/3D game creation and is designed specifically for game development. In some regards, Godot is to game development what Gluon is to JavaFX UI creation, i.e. a drag-and-drop, point-and-click, fully-featured game engine and integrated development environment.
from kotcity.
I think Godot would be a foregone conclusion if I was doing an FPS or something where 3D is required and UI is simple / secondary. Believe it or not this is closer to a desktop / utility app than a conventional game. At this point 3D is a liability for me -- my main focus is building a rock-solid simulation. I don't want to waste time with 3D models, 3D transforms, shaders, etc. Think of KotCity as a desktop app with a GPU accelerated canvas embedded. Below is a shot of SimCity for Windows. You can see how many "boring" widgets are used vs. the actual game canvas. I will most likely end up with something quite similar.
If I am successful with this project I hope to have learned enough to do a totally new implementation with another more capable engine (Unreal, Godot, other). For now, everything is going smoothly. I have a way to quickly prototype the interface and sim. I aim to get all the mistakes out of the way here :)
By the way, if you'd like to clone the project and use the simulator code and mesh it with Godot I don't think it'd be too tricky -- maybe we could support two "front-ends". I know FreeCiv does something similar.
If you would like to contribute, I'd be glad to have you. I think you'll find even if you aren't familiar with Kotlin it's an easy jump. I've only been a user for a few months and it's quite easy to get started.
from kotcity.
At this point 3D is a liability for me -- my main focus is building a rock-solid simulation. I don't want to waste time with 3D models, 3D transforms, shaders, etc
Godot also supports 2D games, and was originally developed primarily for 2D.
Below is a shot of SimCity for Windows. You can see how many "boring" widgets are used vs. the actual game canvas
Godot also supports 'boring' UI widgets.
By the way, if you'd like to clone the project and use the simulator code and mesh it with Godot I don't think it'd be too tricky -- maybe we could support two "front-ends". I know FreeCiv does something similar.
The main thing I am pointing out is that Kotlin/JavaFX may steer the project away from common game engine communities. Specifically, Godot, Unity, and Unreal all support C++ or C#, but not Java. Any Java code and UI will likely be difficult to integrate into the aforementioned engines.
If you would like to contribute, I'd be glad to have you.
I am willing to contribute, but still maintain that aligning with the Godot engine/community is in the better interest of this project
References
Godot 3 docs:
Java compatibility with common game engines:
- How can I use Java in Unreal Engine 4 (you can't)
- Does Unity let you code in Java? (no)
from kotcity.
Cool beans. Thanks for the book recommendations too! By the way, there are some really nice game assets for a city simulation game on OpenGameArt.
from kotcity.
Just to keep a clean board I am going to close this issue. Please keep me posted on any tech you think might benefit this project. :)
from kotcity.
By the way, the Derbados developer (@thomasleese) is/was building a city building game with Kotlin. Perhaps you two could collaborate?
FWIW, I found out about Derbados while researching open source city builder games to see what is out there :-)
from kotcity.
wow I hadn't even seen this... I'm going to examine it but will not be canceling this project
It seems the two projects have different, but perhaps complementary, features.
from kotcity.
Related Issues (10)
- Improve commenting HOT 7
- Move Repo to a Organization HOT 1
- Java related error while running ./kotcity.sh HOT 4
- Document the game (aka PDF manual) HOT 5
- "city information" broken or not yet implemented HOT 2
- "about" broken or not yet implemented HOT 4
- Question: How to add houses and start the game? HOT 3
- Autosave function? HOT 2
- Project status query HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from kotcity.