Comments (8)
- Terrain Editing
I knew about that, as I said it's kind of a solved problem but I'm a bit scared that there are a lot of edge cases: Buildings partially overlapping, snapping vertices changes road length so has to be handled with care. But that's not the biggest problem indeed.
.
-
Better UI
Interesting! I thought about it after writing my original comment, I guess I should just go the usual main menu way with commands for fast start and fast debug :) -
Roundabouts
Very impressive save. Must have taken a lot of hours :D Trees should already be quite dynamic, so making a tree tool should really not be that complicated. -
Progression
I definitely want to do a research tree. I still have some question left: What is the currency? Science points from some special buildings? Just inner currency? Making buildings (like a semi-conductor factory) to unlock more things? Maybe just based on pop. ? Lots of possibilites. -
Mod controlled UI
That's definitely on the radar, and should not be too complicated with the design of egui.
from egregoria.
Thank you for playing, and for the suggestions!
-
Terrain editing
As you said, Egregoria already has a heightmap. I have done terrain generation or so experiments in the past but I have found that handling 3D roads, buildings and such is really hard! How do you handle buildings placed on slopes? This is a solved problem kinda but adds a new layer of complexity.
Currently, the biggest hassle is that I only have a 2D collision detection system, so the objects are all flat under the hood. I guess I could jump to an actual collision library at some point. -
Multiplayer
Actually, multiplayer is not just an experiment, but should function pretty well (once I get determinism right). It's all working with a UI behind the "multiplayer" flag. Just docargo run --release --features multiplayer
.
It is based on the Factorio model: Both players have the exact same simulation and act on the same save. It uses lockstep networking. -
Mods
Mods are definitely on the roadmap, I have thought long and hard about them. I have a few struggles:
-
How do I make them scale? Ideally I'd want hundred of thousands of people in a city without lag. If mods can change citizen behavior, then they must not run for each entity but need some sort of "global control" system which I have yet to design.
-
Lua is quite hard to integrate in Rust, I have experimented with mlua before but its API is not very fun to play with. I know Lua better since my last test, I guess I could give it a try again.
-
I love Python, but I'm scared the bindings (PyO3) will tank compile times, and that the runtime is too heavy. But it would be super fun, I need to explore it at some point.
As for Data, Registry and Events, I definitely agree. I really need to restructure the internals to make this easier. A lot of the game could just be a base mod really! (Also how Factorio does it)
-
Better / Dynamic UI
I agree that since this is a Cities:Skylines kinda clone, I should just use their layout. I've always disliked the bottom panel but now to think of it, there are so many buttons it's not that bad to be horizontal.
The only thing about UI/UX is that it's endless! (Much like everything else in the city-builder design space). I could pour so much time into it without much results.
As for the main menu, I guess it could be a special window for handling saves, but I really like the idea that you "pop right in" without dozens of clics at the start. -
Actually roundabouts
As a French, I love roundabouts! We have half the roundabouts in the world. I think the "roundabout" drag'n'drop design of cities:skylines 2 is pure UX genius. I will definitely steal it.
from egregoria.
- Terrain editing
handling 3D roads, buildings and such is really hard! How do you handle buildings placed on slopes?
Buildings could "cut and fill" the terrain where necessary ...
Before | After |
---|---|
For roads, you are already rendering slopes (down and up on to a bridge), instead of having the vertices up in the air you can "snap" them onto the ground.
- Better / Dynamic UI
As for the main menu, I guess it could be a special window for handling saves, but I really like the idea that you "pop right in" without dozens of clics at the start.
The main menu could be the "default" way, but by using some command line options (like the Minecraft 1.20 "Quick Play") you can directly hop into your favourite world or server. Then you could create a desktop shortcut to your favourite world or server.
- Actually roundabouts
As a French, I love roundabouts!
I seem to love roundabouts too. Just look at the number of roundabouts (or roundabout like shapes) in my [Minecraft City].(https://map.minersonline.tk) That page does take a few seconds to load correctly.
Also, once we are able to place our own trees / status we should be allowed to place them in the middle of roundabouts. Bridge pillars should be allowed in the middle if there is a bridge over the top.
-
Progression / unlock system
Once mods have been made this will be controlled by them. Before then, a "research based" progression would be more interesting than waiting for a certain population (which could fall after), -
Mod controlled UI
Again, once mods have been made, allowing mods to create their own UIs would be cool. Different mods with different progression systems would require their own UIs.
from egregoria.
3.1 Mods (Location?)
I believe mods should be placed entirely on the server side. Then when the client connects it will download anything it needs from the server (Maybe these downloads could be "cached"). Doing this would make it easer for everyone to play on multiple servers just look at how difficult Minecraft Mods are to manage, I have even created a separate sub domain to share mods with my friends . The client should be able to install mods if they want to have mods in their single player worlds, also if the mods are the same as the server then no downloads would be required.
3.2 Mods (Security)
Also if the client has mods that the server doesn't the server could either disable the mod ("Relax" mode) or disallow the client from joining ("Strict" mode). The server can choose which "mode" they want to be in. Maybe the server could configure a "blacklist" or "allow list" of the client mods they want to be allowed. I don't see many games with "security" like this. Before sending any assets from the server to client "hashes" could be made so the client can verify what they downloaded is what the server has, if not the download will try again.
4 Progression
What is the currency? Science points from some special buildings? Just inner currency? Making buildings (like a semi-conductor factory) to unlock more things? Maybe just based on pop. ? Lots of possibilites.
Once there are mods we can let the player decided what they want. Before then there should be something "simple". Letting the player decide will make them (probably) like the game more than others.
- Roundabouts
Very impressive save. Must have taken a lot of hours :D
Actually it's been going for a few months, since before September 2022. I play in Creative with the worldedit mod so its a lot of copy and paste (sometimes).
-
More road building "modes" and "management" tools.
Grids are very simple and to make. We already have the "snap to grid". Curves / diagonals are simple too. Maybe add a "parallel" mode, the Cities Skylines "freeform" mode. And maybe the Sim City Grid "mode". There could be "road guidelines" which will help to visualise where roads will line up. When bends are involved a way to see the angle in degrees would be nice. Additionally seeing the "distance" along with the cost would help. We can already control most aspects of an intersection but maybe you could port the Cities Skylines Traffic Manager, Intersection Marking Tool, and Node controller mods. Then we can make the best looking intersections anyone have seen. -
Server "permissions" system.
Having "permissions" on a server would allow servers to control "spam". You could take a look at the Minecraft Luck Perms mod / plugin. Permissions can control who has access to things (like buildings, props, ...). Maybe the "Progression" system can hook into this. Permissions could be stored in files or MySQL like Luck Perms can be. -
Multiplayer "land claiming" / "trading".
Maybe have a way for players to "claim" land. Players would have their own money / resources and they can trade (what ever they want) (similar to Sim City 2013?) with each other. Market prices would adjust themselves based on supply and demand. You could look at how Open TTD does their multiplayer (which seems to be similar to Egregoria). There could be a "chat" system which mods can add their own commands (with permissions) into. Maybe have a configurable world size / map types. Similar to Open TTD companies players could put a "password" onto their land so when they leave the server no one else can use it.
10 is a nice "round" number and probably enough things now.
from egregoria.
Good suggestions. I agree that a lot of them can be implemented through mods (a bit like Minecraft). I have to say Rust is much harder to mod than Java or C# since almost everything is static (which makes it much easier to code the base game).
10 is a nice "round" number and probably enough things now.
Indeed, ideas are great, implementing them is not easy. As a next step I'd like to see how I could refactor things to make it more modular. It's starting to be tangled, so many systems that can interact. Sadly, I only have finite time.
from egregoria.
Yeah the yielding is not great at all. When a car is stopped (and they should stop before entering the roundabout, it's a small bug I need to work on) they should yield much more aggressively than what they do now.
from egregoria.
I have implemented roundabouts, it was a fun weekend project. The UX can certainly be improved but the logic is there.
2023-08-13_18-01-06.mp4
from egregoria.
I have implemented roundabouts, it was a fun weekend project. The UX can certainly be improved but the logic is there.
2023-08-13_18-01-06.mp4
@Uriopass That looks cool, but it seems like the (some?) cars don't give way / yield properly yet. Lots of traffic is fun anyway.
from egregoria.
Related Issues (20)
- Tree impostors HOT 5
- Determinism HOT 2
- Asset Manager HOT 1
- Update README about required Vulkan. HOT 4
- coherent asset style HOT 7
- GPU Compression
- Building Models HOT 1
- Terrain editing HOT 2
- Multiple kinds of trees + Tree brush
- modularize things HOT 1
- Electricity/water/sewers etc (pipes/networks)
- In game chat
- Technological Progression
- Distance fog HOT 1
- Game crashes on startup HOT 1
- Refactor multiplayer
- create dedicated website
- Terrain beyond buildable area HOT 1
- Terrain Decorations
- Launching and crashing soon after HOT 26
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 egregoria.