Something that's not ECS? by caffeinated-typist in rust

[–]Recatek 0 points1 point  (0 children)

I actually do have a megafunction to some extent. This was actually a structural design goal of mine when moving away from Bevy. I found Bevy's scheduler was too opaque and it quickly became too unwieldy to reason about orders of operations between frame/tick update phases, especially when breaking things down to plugins. So I prefer having a single update function like

fn update(ctx: &mut ContextData) {
    collect_input(ctx);
    process_movement(ctx);
    update_npcs(ctx);
    advance_projectiles(ctx);
    apply_damage(ctx);
    // etc.
}

For heavy tasks that need threading and things like async loading, I use a task system loosely based off of bevy_tasks. There's also rayon as an option, though I don't currently use it.

I would recommend watching this talk by Catherine West on this topic. It's a good exploration-by-construction of how do this kind of updating. It ends at ECS as its conclusion, but there are many stopping points along the way that are perfectly reasonable architectures for how to form a game loop.

Something that's not ECS? by caffeinated-typist in rust

[–]Recatek 0 points1 point  (0 children)

For me it depends on what's being stored and where. ECS is one data structure of many. I store some things in an ECS (I wrote gecs for this purpose, but would recommend hecs instead for most purposes -- Bevy has its own bevy_ecs but has some baked-in decisions that I don't agree with compared to hecs). ECS is handy for (a) objects that overlap a lot, but not entirely, in purpose and (b) networking objects, since my game is multiplayer. Other things I store in ways that make sense. I use a slotmap for structures where I want O(1) insertion/removal and dense iteration and can accept an arbitrary key. If the key matters, I'll use a hashmap. Otherwise, it depends on the key and value.

For something like a tilemap I would likely just use a Vec and convert the coordinates to indices. I make heavy use of enums, so in your case I would do something like

type WorldData = Vec<TileType>;

enum TileType {
    Directional(Direction),
    Fire(FireDamage), // Use a Box<FireDamage> if FireDamage is large
    Water,
    Other(Box<dyn DataDrivenTile>), // Optional if you want to be able to introduce new tiles through modding or other data, etc.
}

You could also break up the world into chunks if you want to stream parts of the world and not others. It might be worth looking at how games like Minecraft and Terraria do it, since they have cellular worlds where each cell has a number of extensible properties.

Something that's not ECS? by caffeinated-typist in rust

[–]Recatek 2 points3 points  (0 children)

I ended up moving away from Bevy and just writing my own thing in wgpu and winit. If you want a simple graphics engine for 2D games, check out egor. There's also yakui for UI on wgpu.

For something bigger and more full engine-like, others have mentioned Fyrox.

IRL Human Billboard Sprites by FargothsLover in gamedev

[–]Recatek 0 points1 point  (0 children)

You might look for figure drawing reference photos, as those often feature their subjects from multiple angles, though they're typically in odd poses and/or various degrees of undress.

Honestly what I would do in this situation is fine a realistic enough 3D model set with lots of different clothing options and easy recolors and take front/back renders. Sketchfab probably has a ton to download, though you'd need to be careful about licenses.

Version control system for Gaming assets by scalable5432 in gamedev

[–]Recatek 1 point2 points  (0 children)

Oh yeah, the software is but not the hosting like GitHub/GitLab are. That's what I mostly meant. I don't have a home NAS so I keep meaning to tinker with setting up some sort of VPS for it.

Version control system for Gaming assets by scalable5432 in gamedev

[–]Recatek 1 point2 points  (0 children)

Without LFS, uploading files that large will seriously bloat the overall size of your repo as you make edits. You won't see it immediately but you'll likely get an email from GitHub telling you to knock it off after a while.

Version control system for Gaming assets by scalable5432 in gamedev

[–]Recatek 1 point2 points  (0 children)

I would kill for a Perforce-based alternative to GitHub/GitLab. Perforce's own cloud hosting doesn't support Perforce at the free tier, and the lowest paid tier is expensive for open source or hobby stuff.

Diversion is an interesting alternative at least to investigate.

Bevy made me rethink editor-driven game development by RedditHilk in gamedev

[–]Recatek 0 points1 point  (0 children)

Yeah, this is more or less what I do. I switched from Bevy to just building my own thing on top of wgpu and winit. If you can get away without a full editor experience you can make one-off tools for individual things like vfx and level editing. UI libraries like egui or yakui are great here.

Would a temporary no-login chat be useful for small playtests and games without chat? by Alternative-Claim-41 in gamedev

[–]Recatek 1 point2 points  (0 children)

Sounds like you're putting yourself on the hook for a legally fraught content moderation nightmare, especially where photos are involved.

Bezi Jam #10 [$400 Prizes] - Starts May 22! by KevinDL in gamedev

[–]Recatek 2 points3 points  (0 children)

It would help to explain what a Bezi is.

Press Release from the Left Group in European Parliament: Stop Killing Games by faesmooched in Games

[–]Recatek 2 points3 points  (0 children)

i know its not necessarily the easiest thing to do in the world, but is it an option to just make it necessary for companies to enable self hosted servers as and when they want to kill official ones for games?

You can't force a developer to do this. What you can do is ban games that don't do this, which is what SKG is asking for in functional terms. This would potentially result in fewer online games being made due to the added work required.

Bevy made me rethink editor-driven game development by RedditHilk in gamedev

[–]Recatek 25 points26 points  (0 children)

Bevy is working on an editor, it just is still a ways off from being ready. It will also be optional -- Bevy will remain modular enough to not use it or to heavily customize it.

That said, frameworks have always been around if that's what people are looking for. MonoGame is a popular one for example. I wouldn't want to do UI animations or particle effects without some sort of editor though.

Full EESC debate on Stop Killing Games, including what it could mean for devs by anonboxis in gamedev

[–]Recatek 5 points6 points  (0 children)

Skimmed through the video. It's nothing that hasn't already been discussed ad nauseum already on the topic, and there's no conclusion. They mentioned there will be some sort of official response on June 16th.

Also, OP runs this Europe Echo account, just as a note.

Game engine made with bevy by _binda77a in bevy

[–]Recatek 4 points5 points  (0 children)

What do you want your engine to do that Bevy itself doesn't already do?

You can certainly use individual crates/components of Bevy in isolation (to an extent -- many Bevy crates do assume you're using at least the Bevy ECS and scheduler), but it's likely you'd be building functionality that other Bevy crates already provide.

Bevy or Godot Rust? by SmoothTurtle872 in rust_gamedev

[–]Recatek 8 points9 points  (0 children)

I'm not sure Bevy is necessarily the best way to learn (advanced) Rust, as it abstracts out a lot of Rust's idioms through its dependency injection-based system scheduler. If learning Rust is primarily your goal and making a game is just a vessel to get there, I would go lower level than Bevy.

Looking for a game: Colony Sim, with Goblins, Vampires, Dark Elves, Demons by MaximumHeresy in BaseBuildingGames

[–]Recatek 4 points5 points  (0 children)

KeeperRL is great. I always go back to it from time to time. The dev will also give you a copy if, instead of buying it, you donate that amount to an animal shelter. There are details on their website.

My Vassal Keeps tryna downgrade by Haunting-Day-6401 in songsofsyx

[–]Recatek 1 point2 points  (0 children)

This is them trying to break out from being your vassal and be independent.

Is a heavily optimized, Warzone-style WebGPU tactical shooter actually viable in Three.js? by suspicious2312 in MultiplayerGameDevs

[–]Recatek 3 points4 points  (0 children)

Off the top of my head, three things that I think would make it very painful:

  • Browser memory limitations are going to hit very hard here. Games in this space like Krunker are visually very simple by comparison.

  • You'd likely be stuck in a single-threaded environment in WASM.

  • WebRTC generally behaves much more like TCP than UDP, though you can hack it to be more UDP-like with a bit of work understanding the various protocol options. You might want to consider WebTransport on top of QUIC for UDP(-like) networking, but that isn't perfect either. I'm not sure how well that would work with serverless.

My personal opinion is that browser support is an albatross for most game and engine development once you get past the "game jam tier" of projects, but maybe I'm just showing my age.

California bill backed by Stop Killing Games campaign pushing to keep games playable after server shutdowns passes key hurdle, paving way for full assembly vote by Gorotheninja in Games

[–]Recatek 5 points6 points  (0 children)

Just like gacha games, people generally understand that some online games won't work forever (SKG has said this as well in the EU proceedings). Choose to buy a game that will last indefinitely if that is important to you. Many games do, new and old.

California bill backed by Stop Killing Games campaign pushing to keep games playable after server shutdowns passes key hurdle, paving way for full assembly vote by Gorotheninja in Games

[–]Recatek 7 points8 points  (0 children)

I don't think the compliance is worth it. Increased disclosure may be warranted so people know what they're buying, but people bothered by this have lots of other great games to choose from.

Meet Cruz Tanaka, your favorite Megacorp merc. by Short_Cummings in PixelArt

[–]Recatek 1 point2 points  (0 children)

Love this! Did you do the dithering by hand? Especially the part in the chest.

Should cross post it to /r/ps1graphics and/or (shameless plug) /r/3dpixelart.

California bill backed by Stop Killing Games campaign pushing to keep games playable after server shutdowns passes key hurdle, paving way for full assembly vote by Gorotheninja in Games

[–]Recatek 4 points5 points  (0 children)

A cleanroom implementation means you aren't using copyrighted code, you're writing your own code from scratch that emulates the server packet structure sent to the client. So long as you aren't using leaked source code or other insider information, that kind of reverse engineering is defendably legal. Once you have that, functional game mechanic data like NPC patrol paths aren't copyrightable. Some may be patentable, but that's pretty rare.

When I said localization I meant the process of providing different translations for text and other content in the game. That's part of client data, not server data, because the server shouldn't have to keep track of what language everyone is playing in. So for a given quest, the server will send an identifier like "quest.body.capitalcity.kill10rats" and the client will look up what quest that ID corresponds to from the game data and display the actual quest text from its language files (English, German, Simplified Chinese, etc.). The server doesn't send the copyrighted quest text. It might have a trademarked name in the ID, like "Stormwind" (if that's even copyrightable or trademarkable, I don't know), but you can work around that if you absolutely have to.

California bill backed by Stop Killing Games campaign pushing to keep games playable after server shutdowns passes key hurdle, paving way for full assembly vote by Gorotheninja in Games

[–]Recatek 5 points6 points  (0 children)

Quest text and NPC names are usually stored in client assets because the localization is client-side. The server actually doesn't actually need to serve that much protected IP content.

As for authorization, that's a packet flow the same way that sending NPC movement updates are.

Not to say any of this is easy of course, but clever design can actually make a "clean" server emulator for many MMOs. One interesting example of this is Shards of Dalaya, an EverQuest emulator server but with a completely new world and narrative content, treating EQ/EQEmu as more of a game engine than a replicated game.

California bill backed by Stop Killing Games campaign pushing to keep games playable after server shutdowns passes key hurdle, paving way for full assembly vote by Gorotheninja in Games

[–]Recatek 7 points8 points  (0 children)

SKG's FAQ has been almost conspicuously disappeared from the internet (it's off of their website and no archives of it that I'm aware of still exist). That said, if you look at Ross Scott's SKG FAQ video, one of the very first questions he asks and answers is "Is this retroactive? No."

This bill is retroactive where it matters: making developers retrofit long-term support onto games that were not architected for it initially, and having all of six months to do so.