Code Monkey home page Code Monkey logo

Comments (8)

Uriopass avatar Uriopass commented on May 23, 2024 2
  1. 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.

.

  1. 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 :)

  2. 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.

  3. 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.

  4. Mod controlled UI
    That's definitely on the radar, and should not be too complicated with the design of egui.

from egregoria.

Uriopass avatar Uriopass commented on May 23, 2024 1

Thank you for playing, and for the suggestions!

  1. 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.

  2. 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 do cargo 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.

  3. 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)

  1. 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.

  2. 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.

ajh123 avatar ajh123 commented on May 23, 2024 1
  1. 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
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.

  1. 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.

  1. 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.

  1. 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),

  2. 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.

ajh123 avatar ajh123 commented on May 23, 2024 1

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.

  1. 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).

  1. 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.

  2. 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.

  3. 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.

Uriopass avatar Uriopass commented on May 23, 2024 1

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.

Uriopass avatar Uriopass commented on May 23, 2024 1

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.

Uriopass avatar Uriopass commented on May 23, 2024

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.

ajh123 avatar ajh123 commented on May 23, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.