Comments (3)
The separation of engine/content would be completely orthogonal to client/server. The content files would probably land in the common library or server land, while the config files would apply to both client and server (probably need to be split into server config and client config).
from lambdahack.
Log of an initial design discussion:
10:47 < kosmikus> mikolaj: re client/server: very funny. back when I started LambdaHack as a student project, my
original plan was to make it client/server. but then I quickly abandoned the idea. I still think
it'd be better though.
10:50 @Mikolaj kosmikus: sure, it forces a better separation of concerns in code, better control of "cheating" by
AI, etc., not to mention PvP, etc., etc.
10:50 @Mikolaj no idea how hard it will be though
10:51 < kosmikus> the main issue is hammering out an interface
10:51 < kosmikus> the rest should follow from there
10:51 @Mikolaj bah
10:51 < kosmikus> :)
10:51 < kosmikus> one point to think about: you'll probably end up with some duplication between the two
10:51 < kosmikus> so you might as well still have a common library
10:52 @Mikolaj sure; actually I intend to have all: AI client, UI client and server in each exe and switch
components on and off on the fly
10:53 @Mikolaj e.g., put some party members under AI, or peak into AI party action via UI
10:53 @Mikolaj peak/peek
10:53 @Mikolaj so the interface between the components will be inside Haskell, first
10:54 < kosmikus> most of the things that are currently there are probably server anyway
10:54 @Mikolaj yes
10:54 @Mikolaj then, a version of the interface will be translated to a network protocol
10:54 @Mikolaj or something
10:54 < kosmikus> so it's really just the frontend stuff that isn't
10:54 @Mikolaj and AI
10:55 < kosmikus> well, yes
10:55 < kosmikus> although you probably don't want to end up having to run a client for each monster :)
10:55 @Mikolaj I will switch AI to think about a party as a whole
10:56 @Mikolaj but each monster will have a mind, too
10:56 < kosmikus> right
10:56 < kosmikus> swarm intelligence is certainly a nice feature
10:56 @Mikolaj then each party will have a AI "client"
10:56 < kosmikus> also, the game should still be allowed to cheat, within limits
10:56 @Mikolaj agreed, but I'd rather explicitly allow that by sendint cheating info within the protocol
10:57 < kosmikus> aha, but if you allow that via the protocol, then people can write cheating clients, too
10:57 @Mikolaj in the future authenticating so that only true AI can get that, not malicious players
10:57 @Mikolaj yeah :)
10:57 < kosmikus> I see
10:57 @Mikolaj well that's tricky
10:58 @Mikolaj perhaps the "authentication" will be just residing in the same exe as the server
10:58 < kosmikus> I think for starters you can just work with capabilities that the server can hand to the clients
10:58 < kosmikus> since the server will probably start the client for the AI
10:58 < kosmikus> it can grant more permissions to that one
10:59 @Mikolaj oh, shrewd
11:00 @Mikolaj anway, players disconnecting AI and posing as AI, etc., etc., if far future :), I'd love to get
there :D
11:00 < kosmikus> sure
11:00 < kosmikus> lots of fun
from lambdahack.
Rudimentary client-server is done in the dev version. Buggy, changing a lot and still could be more structured and more type-safe, but it works. No network in this version, but communication goes through channels, so it's transparent. To decrease network load, some work will be needed to send diffs of state, not the whole state (and only the diffs legally visible to the particular client). Anyway, the basic structure: player commands, server commands and client commands, where the latter two are sent as messages, seems to make sense and will probably stay that way.
from lambdahack.
Related Issues (20)
- dungeonFlavourMap could be self-documenting HOT 1
- Add a lore menu with all tutorial hints HOT 8
- How to avoid "dart is laying on faint fog"?
- Render the manual at the end of the help screens in proportional font
- Objects leave trails when they move HOT 13
- Detect forcible window resize and do something to compensate
- Split the long Content.ModeKind texts into lines HOT 5
- Default config file copied only partially HOT 4
- Deduplicate stub game arena elements in tests HOT 8
- Run tests only in -frelease mode (exposing internal operations)
- Keep epsilon when manually modified by the player
- SDL cursor over game window is not circular, but elliptic under Windows
- input doesnt work HOT 9
- Add a commandline option for RNG seed that is an arbitrary string
- Being able to preview a number of RNG seeds for drops, piped into a txt file
- Add more details to a highscore summary
- Set up Windows CI, with artifacts HOT 1
- base-compat-0.13.1 - ambiguous occurence `unsnoc` HOT 6
- Tests fail with GHC 9.4 HOT 2
- On a first run, the game sometimes saves a truncated config file on Windows 10
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 lambdahack.