[a / b / c / d / e / f / g / gif / h / hr / k / m / o / p / r / s / t / u / v / vg / vm / vmg / vr / vrpg / vst / w / wg] [i / ic] [r9k / s4s / vip / qa] [cm / hm / lgbt / y] [3 / aco / adv / an / bant / biz / cgl / ck / co / diy / fa / fit / gd / hc / his / int / jp / lit / mlp / mu / n / news / out / po / pol / pw / qst / sci / soc / sp / tg / toy / trv / tv / vp / vt / wsg / wsr / x / xs] [Settings] [Search] [Mobile] [Home]
Board
Settings Mobile Home
/g/ - Technology

Name
Options
Comment
Verification
4chan Pass users can bypass this verification. [Learn More] [Login]
File
  • Please read the Rules and FAQ before posting.
  • You may highlight syntax and preserve whitespace by using [code] tags.

08/21/20New boards added: /vrpg/, /vmg/, /vst/ and /vm/
05/04/17New trial board added: /bant/ - International/Random
10/04/16New board for 4chan Pass users: /vip/ - Very Important Posts
[Hide] [Show All]


[Advertise on 4chan]


File: Cheese_Sun-17Nov24_07.00.png (82 KB, 1663x1008)
82 KB
82 KB PNG
/gedg/ Wiki: https://igwiki.lyci.de/wiki//gedg/_-_Game_and_Engine_Dev_General
IRC: irc.rizon.net #/g/gedg
Progress Day: https://rentry.org/gedg-jams
/gedg/ Compendium: https://rentry.org/gedg
/agdg/: >>>/vg/agdg
Render bugs: https://renderdoc.org/
Previous: >>103173072

Requesting Help
-Problem Description: Clearly explain your issue, providing context and relevant background information.
-Relevant Code or Content: If applicable, include relevant code, configuration, or content related to your question. Use code tags.
>>
So I tried lua out as a solution to wanting mod support and scripting and I realized 4 things that put a dent in using it:
1. No zero-indexing
2. Getting LuaJit to work as a dependency in cmake is a PITA
3. The syntax is alien to me; writing most of the game's scripts is gonna be a PITA
4.
So, I'm considering alternatives.
>WASM: has potential assuming there's a jit, but I'm not sure how to use it
>C/C++ DLL/shared-library plugins: Could be interesting because then modders can directly use the exact code I'm writing. However there are some drawbacks such as plugins being a potential security risk, and there's the possibility modders don't compile their plugin for all 3 computer platforms. Also, they might not like my API if it's too OOP-y or too ECS-y.
>Making my own scripting language: Not a chance. Parsing, lexing, and compiling/executing would take too long, and also I'd need to make a JIT if I want scripts in my 3D game to not be slow as fuck.
>Visual Scripting: Has potential as I can skip the text parsing step, but has similar problems to the above.
>Write the entire game in C#: People can mod it OOB. Would be the simplest solution. However, I'm not sure if .NET game engine development is any good, especially with Linux as my dev environment.
>>
>>103215814
>Parsing, lexing, and compiling/executing would take too long
Correction: Would take too long to develop code for. Ofc it should be fast at runtime but you guys get what I mean (I hope)
>>
>>103215814
all those options blow, just use lua
>>
>>103215814
Honestly I hate Lua, every time I have to interact with a program that uses it like mpv it's pure pain, the only arguments I've ever heard in favor of Lua is "it's small" and "oh all the games use it so I should use it too" like it's a fucking cancer infection, the language itself has no upsides
I would go for either C# or C++ plugins and if someone one day makes a stupid plugin that doesn't work or is unsafe, who cares, that's future you's problem to worry about, focus on getting shit done right now.
>>
>>103215814
Do you even have a game that players want to mod?
If the game is successful enough to have a modding community, you'll be able to hire somebody full time to make a scripting language. Actually, if the game has a healthy modding community, the community itself may work on some open source scripting language with you if you're willing to cooperate
>>
>>103215814
you don't need zero-indexing
luajit + cmake is trivial
the syntax is the easiest shit ever to use

you can use `teal` if you want types support in your scripting language with lua, it's the best option for embedding
>>
File: blueprint-from-hell.png (661 KB, 816x467)
661 KB
661 KB PNG
On second thought, maybe visual scripting is indeed a bad idea
>>
I'll just let RNGsus decide my fate. Probably (considering I doubt most people will play my game) should just not do mod support at all, but eh
>>
File: quest.jpg (379 KB, 1513x737)
379 KB
379 KB JPG
>>103216832
Depending on the game you're making, a visual editor becomes a necessity.
The Witcher 3 has such fleshed out quests because of its visual editor.

Blueprints suffer from either a lack of foresight, or just a lack of experience when developing them.

This is my system (based on flowgraph) for scripting quests in the game I'm making. While it is unreal, and I'm using the graph editor, these are not blueprints and the flow is much cleaner.
>>
File: cra.png (328 KB, 1192x251)
328 KB
328 KB PNG
>>103215814
I've tried lua too, but it's quite error-prone. For my next project I'm considering quickjs with Typescript as it is surprisingly comfy. Requires a bit more setup unfortunately.
>>
I'm a bit new: what's the difference between scripting and modding? how are they related?
Why do people say unreal suck for modding when it has blueprint for scripting?
If I'm only interested in 3D rendering do I have to know this stuff?
>>
I'm just curious: What's the best open source alternative to Havok? And does it have the same jank as Havok?
>>103217691
Unreal games are harder to make UGC for because of the way UE is and how games made in it are packaged, it's hard to explain
>>
>>103215814
>Lua
Overrated. But I think the reason it's used is because of how easy it is to embed the interpretter into your C++ code and call things. I was never found of the language itself but found of how quick it was to just use it to add scripting to something that other people can use. On a solo project where it's you and you don't like Lua, then don't use it.

>DLL/SO plugins
You can have a plugin architecture without requiring them to write shared libraries. Where the game/engine checks in specific mods/plugins folder relative to the binary for folders and loads each. To make modding easy, allow for some scripting via your favourite language. So it's some script files in the directory with some optional config (acting as a manfest/entrypoint). In an object orientated language, you can ensure that whatever main file they include implements some interface(s). So then your game code will call the methods its implemented. For ease of modding, people often embed the interpretter itself into their engine/game, so the modder only need provide script files.

>own scripting language
Don't. It's not worth it.

>Visual Scripting
I've always found that while it's intuitive for small scripts, and complete amateurs to build things with, it quickly becomes more difficult to use for more complex things. Higher level scripting languages is what you want.

>I'm not sure if .NET game engine development is any good, especially with Linux as my dev environment.
C# on Linux has come a long way. It's a lot better than it used to be. But I would only use it if you were very comfortable in doing so (if you know the language well and aren't just learning yet another language as a distraction from building your game/engine).
>>
>>103215814
Lua is easy to use, you just need to get used to it
You can check out some other scripting languages like Squirrel I think has more C-like syntax
I made my own scripting language once, took 3-4 months, more features than Lua but slower
>>
>>103217806
PhysX
>>
I'm writing my first non-trivial shader. I want to have visual effects that are only applied to certain things, should I:
>Create a new shader and bind it before I draw the thing what I want (I'd basically be copy pasting the generic shader and changing one line)
>Add a new property to my vertices then apply the different effects (or nothing) depending on its value
>Something else I haven't thought of
The second option feels like the obvious answer but I hear you're not supposed to do too much branching in shaders
>>
is it normal that I'm constantly struggling with developing a game from scratch? I'm using C and BearLibTerminal
sometimes I just fall into apathy and feel hesitant to write code
even after I reduced the scope and simplified the code it feels like in the future the code simply is not going to hold
I know Python and C but I have no formal education on the subject of CS, I'm also really nervous and get overwhelmed by the complexity of my own code which is especially bad for solodev, I'm supposed to maintain my own code

with that being said all I want is to ship a game and tell a story
I know game engines aren't favored here but /agdg/ is just too bad
is there an alternative to RPG Maker other than WolfRPG (it's free but has no scripting, somewhat limited and cumbersome)?
I know I could just pirate RPG Maker 2003 and go with it but idk
>>
>>103218269
try GameMaker or Unity
>>
>>103215814
There are lots of other scripting languages besides lua. There's quickjs as someone mentioned, angelscript - statically typed looks like C++ but interpreted. Also you can write your engine in C/C++ but have C# as the scripting language. It's been done in SpaceEngineers (in game scripting actually, not modding actually lol) and you know unity uses it.

Also imo eventually there may appear someone for whom the scripting API may not be enough. Having both scripting and DLL plugins could be useful, but you would only let users upload scripts to e.g. steam workshop and not libraries. I've seen it done once in garrysmod.
>>
Pursing scripting and moddability as an indie game dev is a colossal waste of time and will sabotage your project as you do immensely impractical things to try and achieve it
>>
>>103216915
why windows only for dll mod support? its just at easy to do on linux. Instead of LoadLibrary you use dlopen and instead of GetProcAddress you use dlsym.
>>
>>103218615
or oh I kinda get what you mean now. The issue is the distribution of the mods. You would need to provide two versions. Lua scripting for plugins sounds better desu.
>>
I like .NET/C# and I wanted to play around with Monogame Framework. Their resources for learning are kinda meh and they are just starting to make tutorials on GitHub so they are not ready yet.

Do you guys recommend some materials for Monogame?
>>
>>103215814
If you are using raylib, raylib-cslo is basically a drop-in replacement for C# and you can just effectively copy paste things across.
>>
>>103218269
>is there an alternative to RPG Maker other than WolfRPG
Have a look into the OHRRPGCE. It's completely open source/free. It has scripting if you want, with plenty of samples scripts for common things on their wiki and a helpful community (discord mostly, you'll also see people post their games to a forum called slimesalad, worth taking a look). People have made things like platformers or action RPGs with the engine too via scripting. But it was originally designed for RPGs and you can build full RPG with no scripting pretty easily. You might want to add some things like cutscenes, you can use their scripting for that. If 13 year old me with no programming experience can make cutscenes in it, you can too. The scripting language is weird but it's not hard to use. If you want to make a game that's like an early final fantasy game, it's quite suited for that. You'll find that the game editor has everything you could want for an RPG (NPCs, heroes, shops, maps, etc).

>>103218851
Monogame is just an open source implementation of Microsoft's XNA. You can even see the namespace reference XNA in the documentation:
https://docs.monogame.net/api/index.html

If you're really stuck, you can see if you can find tutorials on how to do things with that.
How I learned it (in the late 00s) was just find an open source game that's simple enough (arcade game) and just study the source, change some things and you'll eventually get the hang of things. If you search github you'll find sample code:
https://github.com/SimonDarksideJ/XNAGameStudio
>>
File: pits.png (360 KB, 1838x751)
360 KB
360 KB PNG
>>103218269
Nobody who isn't a retard is going to give you crap for using an engine. Everyone with even a little bit of professional experience knows that it's all about tradeoffs, and if you just want to make a game then choosing an engine (or a high level framework if you're going to just do 2D) is a solid choice.
The only people who will give you crap for using an engine are the same kind of autistic retards sperging out about OOP, ECS, indentation, IDE of choice, or any other thing.

Having said that
>sometimes I just fall into apathy and feel hesitant to write code
Has nothing, absolutely nothing, to do with making your game from scratch.
For example, one of the problems I have with 3D models in games is how bad the armpits look. Since I'm making a 3D game I said alright, let's have my game have proper pits. Pic related. Full custom armpit topology from scratch based on my knowledge of anatomy.
While making this, I felt that kind of apathy and not wanting to work many times, but that's just because it's hard work. It's not hard in the sense that it's complex, but when you're designing something new, it's an unavoidable feeling.

My unasked for advise is that you should definitely use an engine if that's what you want, and do post here, nobody who actually matters will give two craps. But, this feeling of apathy will come and come every time you're stuck on something hard. Using an engine won't make it an effortless process, it'll make it a faster process.

Also rate pits
>>
>>103219367
It's hard to do armpits because of the way skeletal deformation works in games, it's not simply a matter of the 3D modeller can't be arsed
>>
File: pits 2.png (91 KB, 739x709)
91 KB
91 KB PNG
>>103219398
No, I know enough about modeling to know that half the problem is proper topology.
The problem is that the industry is obsessed with cinematic meshes, so if you look for example at metahumans, or reverse engineer any AAA model, you'll see they use bad topology for games. I mean, bad in the sense of armpits.
What they do use regular, even quads. The problem with that is that it works for movies because they take that uniform mesh and subdivide it until they have massively dense mesh with millions and millions of polygons. Then it can handle literally any deformation you throw at it.

There's a problem with the way they're teaching this. Even really good character modelers like Tomas Sackmann are giving bad advise for games, because he tells his students to do even topology without adding loops for deformations. He's got a movie background so he's not wrong, but he also teaches how to make game meshes, and he's definitely wrong there.
A metahuman will never have good armpits unless you subdivide it so much that it'll run at 30 fps on a low tier PC.

The only way to get surface definition on a game mesh is to use edge loops to define shapes.

Of course you need morph targets to correct deformation at different angles but that's trivial work. What's not trivial is having a topology that supports such deformation with a sensible amount of polygons.
>>
File: watermelons.png (536 KB, 809x834)
536 KB
536 KB PNG
>>103219193
>Have a look into the OHRRPGCE.
I remember stumbling upon it when searching for an engine but I dismissed it because I thought it had 0 flexibility and support, didn't even download it
tried it now and it's kinda nice but quirky with all the editors being integrated in the game
probably a limitation of the time considering its roots
>>103219367
>But, this feeling of apathy will come and come every time you're stuck on something hard. Using an engine won't make it an effortless process, it'll make it a faster process.
it is I guess
I'm no a pit connoisseur but these look natural enough especially the smooth shaded one
maybe try draft texturing them to see how they look
>>
>>103219499
>it is I guess
You just have to work even when you don't feel like working. It's nothing but discipline. It's like the gym, most people quit when it gets hard because their brains are flooded with bad feelings.
The good part is that I learned that those bad feelings only exist during the expectation stage like "oh fuck I have to work on this or that" but if you man up and start working they disappear in a matter of minutes.
The expectation of having to do hard work feels way worse than the actual hard work itself.
>>
>>103219478
The main issue is that many games aren't using morph targets, they're just using skeletal animation, which fucks up the extremites of human motion
>>
>>103219499
>>103219193
I say this respectfully, don't use OHRRPGCE, there are better tools available
>>
>>103219534
Yeah sure, but even games using morph targets are using unrealistically high definition meshes.
I mean with further developments on meshlets, mesh shaders and huge VRAM accessible even to mid range PCs and new CPUs looking very good, then maybe they're right. Fuck optimizing, just throw a cinematic quality mesh in there. I just don't like that approach.
>>
File: showcase.png (1.46 MB, 2244x1314)
1.46 MB
1.46 MB PNG
>>103219553
Even a meme engine written in Rust has meshlets now
>>
>>103219553
The difference between real-time and offline rendering is always going to be significant, you can't use cinematic quality meshes in games no matter what optimizations are being applied
>>
>>103219584
I don't know about that. There's always going to be a lot of differences, but when it comes to mesh density games are getting real close. It seems there's a huge push toward distance streaming virtual geometry with super aggressive camera culling.
>>
>>103219603
Even if you have some super-sophisticated LOD system you still have to store all that geometry on the drive, imagine how much space a game would take up if some giant open world game had cinematic quality meshes for everything
>>
>>103219623
I don't mean for everything, but for hero characters I could believe it
>>
>>103199895
>>103204568
The glitchy grid is probably z-fighting. Kinda weird looking for z-fighting albeit, perhaps due to usage of GL_LINES.
>>
Say I'm developing on Linux. Should I be worried if my hypothetical game doesn't work on certain distros? What do I need to watch out for to make sure it runs on most distros? Am I supposed to target specific versions of glibc or something?
This realization that there might be some trouble here has made me consider the possibility of just developing for Win32 only
>>
>>103220531
nobody plays games on Linux
>>
>>103220541
Ok then, thanks for confirming.
I'm gonna switch over to my Windows install as the host (I was going to use Linux for cross compiling) real soon, and target only Win32.
>>
>>103220531
Wine runs games better than native Linux itself
>>
>>103220558
I'd use wine and still have linux as my cross compiler, but
1. I don't know how to set up wine for debugging windows programs and not wine itself
2. I was considering switching back to Windows anyway, as certain tools I need for assets (such as VSTs for music) are win32-only and don't work under wine.
>>
>>103220516
I HATE CORNER COLLISIONS
I HATE CORNER COLLISIONS
I HATE CORNER COLLISIONS
>>
i come here to look at the cool pictures and video
keep posting anons
especially lizard guy
>>
>>103220693
lol this makes me think of Glover for the N64, are you just playing around or will your game involve carrying and lobbing a ball around?
>>
File: 1715521034550509.jpg (71 KB, 647x594)
71 KB
71 KB JPG
>Say fuck it and switch back to Windows 10
>Somehow it autoupgraded to Windows 11 without any of my involvement or consent
how does this even happen
>>
Corner collisions are still fake and gay. I removed my assert in shame.

>>103220723
I'm making a jam game this week, that's basically the idea of it. I definitely see the similarity to Glover.
>>103220516
that's probably it. What's odd is that I can't choose at what y (up/down) position to place the grid in raylib. You'll get a grid at y=0 and you'll like it. So I was going to test slightly offsetting the grid but I guess I can't without moving my "ground" down.
>>
>>103220790
>windows
lol
lmfao
XD
>>
Is C# good for custom game engines?
Assume I'll be using Silk.NET to wrap to OGL, DX or Vulkan
>>
>>103221411
its acceptable, many games use it, mostly 2d from what ive seen
>>
My plan is to just make the game I want how I want it, I'm not worried about number of sales that would cost me
>>
Does Python make for a good embedded scripting language?
>>
>>103221513
this is a hobby development thread, such a plan is not some kind of amazing revelation.
>>
>>103221729
lua
>>
>>103218250
>I hear you're not supposed to do too much branching in shaders
The main thing you want to avoid is having a bunch of different branches being taken in the same warp/wavefront (basically a thread group). So if you have everything reasonably well batched by material, especially if they're being put into different multi drawcalls and just don't have a rebind between the calls, but share the same shader, then your first batch will probably all take the same branch, then your second batch will probably all take the same (different) branch, etc. So in that case there's no performance penalty plus you skip the bind.

If you aren't sorting, and you have lots of objects that use different shader branches scattered around between each other, you'll probably end up fucking up the GPU's parallelism. But this takes use back to the whole issue of batching/sorting being critical. So as long as you batch/sort (which you should anyways) then there's no problem using uber shaders or similar constructs where a logic branch somewhere takes you to a different "practical shader" within your uber shader.

In general you should avoid packing data into your vertices if it's per-object data, because stashing it in the vertices means that data occupies way more space (because there's a redundant copy of the data in every vertex) than if there was just one copy of the data per object.
>>
>>103221729
People will say lua, which is fine and no complaints that way. But I like python and you can try numba, pypy, cython or just async and threading if you actually get bottle-necked
>>
>>103215814
>no zero indexing
if you left this out the bait wouldn't have been immediately obvious.
>>
>>103222215
For some reason having to count from 1 utterly mindbreaks some programmers
>>
>>103217027
visual scripting is never a "necessity", retard cope.
>>
>>103217027
>>103222231
game designers used to get lua to implement quests and stuff they wanted to try
nowadays engines are so cumbersome they give them a click click editor because its too hard to teach someone how to make stuff in your codebase if you arent a core dev
>>
Did big rewriting for asset loading after getting better understanding how async works in Rust. Removed scene and moved everything related to rendering right into ECS side. And now I suddenly in state where I can make actual gameplay. I just need a good design for input system.
There are still some things that I need to implement like shadows, SSAO and bloom, but basic PBR with tonemapping is enough to get most of the graphics I want to see. There's no point to optimizing it, it's fast enough and gpu-bounded. And I have a few low-hanging fruits left just for that.
>>
https://github.com/Jenova-Framework/J.E.N.O.V.A

This looks cool, someone should try it and let me know if it's not shit
>>
>>103223025
It is written by 1 (one) Indian, has 0 (zero) documentation outside of YouTube, and, worst of all, it seems like an entire new shit API on top of Godot's. Look at the screenshot on that repo. Why does it even have custom functions for GetTree() and GetNode()? And they use a different naming convention than Godot which is the little shit cherry on top.
>>
>>103215814
Use Wren or Angelscript
>>
>>103217806
Jolt
>>
>>103221513
Sounds like a good plan. I keep moving between ideas. I'd be happy to focus on just one but it's hard.
>>
I've started working on a low-level rendering API to replace my multiple backends with a single "rendering library". Today I've created a custom shading language, with tokenizer, parser, and experimental codegen for Metal and HLSL.

This stuff is so much fun to design IMO:

Custom shader language:
struct VertexOut {
float4 position @position;
float4 color @color;
};
VertexOut vertex_main() {
VertexOut out;

out.position = float4(1.0, 1.0, 0.0, 1.0);
out.color = float4(1.0, 0.0, 0.0, 1.0); // red

return out;
}
float4 fragment_main(VertexOut in) {
return in.color;
}


*** AST Output:
Struct: VertexOut
float4 position @position
float4 color @color
Function: VertexOut vertex_main()
Body:
VariableDeclStatement: VertexOut out
AssignmentStatement:
Target: MemberAccessIdentifier(out).position
Value: FunctionCall(float4)
Arguments:
- Literal(1.0)
- Literal(1.0)
- Literal(0.0)
- Literal(1.0)
AssignmentStatement:
Target: MemberAccessIdentifier(out).color
Value: FunctionCall(float4)
Arguments:
- Literal(1.0)
- Literal(0.0)
- Literal(0.0)
- Literal(1.0)
ReturnStatement: Identifier(out)
Function: float4 fragment_main(VertexOut in)
Body:
ReturnStatement: MemberAccessIdentifier(in).color

*** Metal Code Output:
struct VertexOut {
float4 position [[position]];
float4 color;
};
VertexOut vertex_main(){
VertexOut out;
out.position = float4(1.0, 1.0, 0.0, 1.0);
out.color = float4(1.0, 0.0, 0.0, 1.0);
return out;
}
float4 fragment_main(VertexOut in){
return in.color;
}

*** HLSL Code Output:
struct VertexOut {
float4 position : SV_POSITION;
float4 color : COLOR;
};
VertexOut vertex_main() {
VertexOut out;
out.position = float4(1.0, 1.0, 0.0, 1.0);
out.color = float4(1.0, 0.0, 0.0, 1.0);
return out;
}
float4 fragment_main(VertexOut in) {
return in.color;
}
>>
I’m learning swift so my game runs responsively on iOS.
>>
File: 1627062774782.jpg (136 KB, 1280x1015)
136 KB
136 KB JPG
Hello /gedg/.
I have a game on itch.io and I use the Unity Application.persistentDataPath to store my save files which are usually below 1 mb in size.
However, when I reload the page all the files are gone. Google says this is only supposed to happen when you upload a new version of the game.
Anyone here have experience with this problem?
>>
>>103214753
best guys for sdl2 in c++?
>>
>>103224380
*guides, sorry i just woke up
>>
>>103223647
You kind of doing same work as SPIRV-Cross is doing.
>>
>>103220531
Best way is to package every dependency, including libc into an AppImage. It's gonna be a bit larger but no one cares, it's just download and run and no installing involved and runs everywhere.
>>
Really happy with the abstractions that have come to mind so far -- it's mapping pretty seamlessly for Metal and HLSL. I can almost start porting my 2D engine over at least.

struct View {
float4x4 view_matrix;
float4x4 proj_matrix;
float4x4 inv_view_proj_matrix;
float4 viewport;
};
struct ModelUniform {
float4x4 model_matrix;
float4 use_flags; // x = use texture
};
struct VertexIn {
float2 position @attribute(position);
float2 uv @attribute(texcoord);
float3 color @attribute(color);
};
struct VertexOut {
float4 position @position;
float2 uv @texcoord;
float4 color @color;
float use_texture @data;
};
VertexOut vertex_main(
VertexIn in,
View view @buffer,
ModelUniform model @buffer
) @vertex {
VertexOut out;

float4 pos = float4(in.position, 0.0, 1.0);
// ...
return out;
}
>>
>>103221729
Python has problems with sandboxing. There are lots of ways untrusted scripts can just access the filesystem or something.
If it's just you 'hardcoding' stuff then it doesn't matter. I think Worms3D iirc or something used it (in someway). Otherwise you wouldn't want blindly running scripts from a random mod.
>>
>>103221729
For some reason python is very common as a scripting language in desktop applications, but I've never seen it in game engines. Not that I know that many of them
>>
>>103224646
Unreal Engine uses Python, but only as an editor scripting language. You can't use it to program gameplay events.
I'm thinking this may have something to do with it >>103224642
Or maybe it's just way too slow. I'm not sure how binding to C++ functions would work
>>
Do engines iterate over the objects more than once each frame? Like, once for physics update and then another time for rendering?
>>
The way I'm thinking of moddability for my game is to make the game more data driven. Currently I'm working on building the roof colors from JSON files in a folder instead of hard coding them.
At one point pushing so much for moddability just makes your game an engine.
>>
>>103225513
You should only iterate over them once, for cache locality purposes.
>>
>>103224356
I figured it out. You have to manually flush IndexedDB after writing to Application.persistentDataPath.
>>
>>103225560
Good idea is to use spreadsheets. You can read data from CSV or directly from XLS/ODS. You might want to use it to balance the game and keep data organized anyway.
>>
>>103225606
I still need to solve physics before rendering, though.
>>
>>103225685
I can indeed see it as a good idea. imagine doing experimentation in spreadsheet and then export it to csv to be consoomed by the game to validate that the balance is alright. Instead of having to fiddle with values spread around in the code until it "feels" right.
>>
File: file.png (14 KB, 900x1000)
14 KB
14 KB PNG
https://pastebin.com/ryuMPsJX
any idea how to improve this sand simulation and make it easier to add new particle types? I followed https://blog.winter.dev/2020/falling-sand-games/ now want to add physics but it seems like a massive pain in the ass to do.
>>
>>103214753
kek didn't know there was another thread when I baked earlier. Sorry about that

>>103217135
I like lua just fine but I've found embedding lisps to suit me better.

>>103219569
I wanted to try out meshlets in my Vulkan engine but I don't have mesh shader support.
>>
>>103225606
Well trolled, throwing in the "cache locality" optimization buzzword is a nice touch

>>103225513
>>103225707
sounds like you answered your own question. You should read the source of some open source engines to get a better idea of how others have done it.
>>
What are some good examples/resources in C++ for Direct3D9?
>>
>>103226508
A time machine
>>
>>103225513
>>103225707
You should have update frames decoupled from render frames. For each render frame, you interpolate between the appropriate update frames.
>>
>>103225513
You could iterate through each object 100 times each and not really notice a difference
>>
>>103225513
yes
>>
>>103225513
the classic
for object of objects:
update_object(object)
draw_object(object)

vs
for obj_state of object_states:
update_object(obj_state)

for obj_draw of object_draws:
draw_object(obj_draw)
>>
>>103226591
Ok, what about 11?
>>
File: file.png (121 KB, 630x482)
121 KB
121 KB PNG
I thought frameworks and minimalism were the way? Is there even a reason to use love2d if defold exists?
>>
How versatile can the quake engine be? Can it be used for non-FPS games?
>>
>>103226885
>update frames
>>103228384
It feels like you should resolve all the updates first, in case they affect each other. Then draw everything after.
>>
>>103228808
I'm currently in the process of investigating quake mapping to use trenchbroom for my own game via func_godot because mapping in Blender takes forever.
Other than that I've found an amateur old hack n slash game in Quake engine recently:
https://www.youtube.com/watch?v=isUtmb80-dk&list=PL6ZGKs5aaTst-8S_5nDoRLho-xHVsCwde
>>
>>103228808
It's not very versatile
>>
File: 1731441423285629.png (113 KB, 640x797)
113 KB
113 KB PNG
>>103228787
>>
How hard is making a submarine simulation? I've mostly made 2d games, I guess the only 3d stuff would be the view through the periscope.
>>
>>103229879
You can always make it all 2D.
2D slice of the sub
2D surface which is spirtes of waves atop each other and ship silhouettes sprites scaled for distance.
>>
>>103215814
Maybe try embedding tinycc and have modders share their mods as source files and you compile it on first use and cache them using a hash of the files or something.
The bun.js devs added tinycc recently so people can embed C in their JS. It's unholy cool.
For wasm check extism.
>>
>>103230359
TinyCC's license doesn't seem permissive enough, sadly.
>>
>>103217806
Probably jolt.
>>
>>103230386
It uses the LGPL not the GPL. You can use the LGPL in commercial projects without it forcing you to GPL your own software.
>>
Which would take the least time to make? And which would take the most
>A 3D action platformer (ala crash, banjo, etc, but more linear probably)
>An FPS (ala quake or hl2)
>A sandbox RPG (ala morrowind or daggerfall)
>A "traditional RPG" (either like DQ or classic fallout, but in 3D)
>A simulation game (ala Maxis games)
>A survival sandbox (ala Minecraft)
>>
>>103230431
Oh, neat.
>>
Which has more/better learning resources or examples/samples available -- Direct3D or OpenGL?
>>
>>103230443
It really depends on the fidelity of the game, not the genre

>>103230461
OpenGL
>>
>>103230443
Depends on your experience, what things come ready to use in your engine and what do you expect each of those games to have.
I wouldn't expect an fps or a platformer to have fluid simulation but I would expect it for a sandbox game for example.
>>
What do you guys use for placeholders regarding graphical assets?
Simple shapes? Assets from other games? OGA shit?
>>
>>103230546
I just draw something myself
>>
>>103230443
Platformer would be fastest and the RPGs the slowest, though of course a lot depends on your goals and skillset. Rule of thumb is the more handcrafted content you need the more time it takes. Systems add multiplicatively to your game(positive or negative), but content only adds linearly. It takes more time to write good dialog than to read it, to make an image than to view it, etc.
As a "fun" example: my entire dialog system took less time than one single character portrait that isn't even finished yet. I'll be getting a lot of use out of that system, while players may just never talk to the character in question.

>>103230546
Simple shapes or in progress assets. I tried using AI stuff in the beginning, but I found it doesn't really help that much and I just get distracted trying to make it look good.
>>
File: mt_blockout.png (925 KB, 1859x941)
925 KB
925 KB PNG
>>103230546
Blockout shapes for buildings. Simple enough that I can work on them pretty fast, detailed enough to more or less know what I'm looking at
For generic assets like trees, either low res blockout meshes or something similar to what I want if I have old asset that I can reuse
For characters I like to go for more accurate sculpts, like a blockout but more detailed but that's just because I enjoy sculpting
>>
>>103230546
>Assets from other games
This, I love stealing shit
https://www.models-resource.com/
>>
File: chara1.jpg (397 KB, 1914x952)
397 KB
397 KB JPG
>>103230620
I only do that for hair, but simply because I haven't learned to make hair yet.
It works in the sense that it gives you an idea of the look that you're going for, but it sucks because you really can't show your work to anybody since they'll immediately call you out.
>>
>>103230558
> one single character portrait that isn't even finished yet
Bruh, it's all dependent on what you're good at. I participated in Visual Novel jam once (as a programmer), and our character artist was able to do some of the character sprites in a day or two. We've had quite a lot of characters so maybe some of their sprites were even drawn in the same day.
>>
>>103230654
>mosaics
>Those bulges
>that pelvis shape on the girl in the middle
F U L L Y M O D E L E D
>>
>>103220531
Valve has a distro that they say you should build on if you're releasing for their store; idk if it's good for games outside of steam or not.

>>103221729
Quake has some jitted C VM, might be a good choice. It's probably Open Sauce.
>>
File: chara2.png (711 KB, 1218x898)
711 KB
711 KB PNG
>>103230715
Actually they don't have nipples but I pixelated them just in case it was too lewd for the jannies
The two guys do have bulges though, I'm not into the castrated male models that everyone seems to make. Sure I get it not giving them an actual cock if you're going to release on Steam, but at least give them a bulge
>>
>>103230748
Neat.
What kind of game are you making? Are you making it from scratch? What are you making it with?
>>
File: loadingsystem.png (77 KB, 911x916)
77 KB
77 KB PNG
>>103230874
RPG with a hybrid action combat in the sense that it's based on animations like action games but also reliant on rolling against stats
I'm making it in Unreal, right now I'm working on saving and loading character builds and inventory
>>
>>103230910
Is modern Unreal any good for UGC/moddability yet? Main thing stopping me from making Unreal games. That and the engine all around being overkill for most ideas.
>>
>>103230940
Unreal has a pretty modular approach to content chunking, you can let the engine do it or you can have custom chunks.
You can absolutely let users package their content as individual game feature chunk .pak files

The problem is that if you want to give them access to the same tools that you use as a game designer to make the game, you have to release the source code to modders.
I know it's possible to compile the code and give them a barebones editor, but I have no idea how it's done since I'm not all that much into modding support. You should check out the Unreal Tournament repo if they haven't taken it down, because the official UT distribution was just the editor with the code compiled but inaccessible.

All that applies of course if you want to keep your code secret. If you don't then it's easier.
>>
>>103230940
I forgot to mention, game features in Unreal work via a dependency injection method. Actually, the whole asset registry is reliant on dependency injection.
What this means is that a modder creates a game feature and injects the assets into the asset registry via a hook.
So suppose a modder adds a new item, the new item will get automatically picked up by your system. Of course you do need to make your system play along with the asset registry, if you hardcode all your items like a caveman then that won't work. You get support for mods out of the box, but you don't get them for free, you have to design your game around dependency/asset injection points.
In the same way, you could add a "story" or "map" asset type so that modders can inject their own custom modules. I doubt you've ever played it, but it would be a bit like modules in NWN

If you want to know more just ask, I have a 110k LOC codebase just in the unreal project, I'm pretty familiar with it.
>>
https://github.com/UnrealSharp/UnrealSharp
This looks interesting.
.NET/C# in Unreal
>>
>>103231088
Is this better than C++ in Godot?
>>
>>103231010
I'm curious, generally speaking what's your workflow like? Like where are you writing code, how are you interacting with your program, etc
I tried Unity a long time ago but quickly gave up since they really wanted you to do everything through their own editor, that experience is what put me off engines in general. But I get the impression UE gives you more freedom in that regard, I think you can even use it as a pure library, I've been wanting to at least take a look at it for some time now.
>>
So awesome. My lower level rendering API's "hello triangle" demo is working. It's so simple, I can't wait to start integrating this in my game engines. Also, custom material support will be so easy to implement now.

// Custom shader language:
struct VertexIn {
float2 position @attribute(position);
};
struct VertexOut {
float4 position @position;
};
VertexOut vertex_main(VertexIn in) @vertex {
VertexOut out;
out.position = float4(in.position.x, in.position.y, 0.0, 1.0);
return out;
}
float4 fragment_main(VertexOut in) @fragment {
return float4(1.0, 0.0, 0.0, 1.0); // red
}

// C++ code
struct Vertex {
float x, y;
};

VertexLayoutDescriptor layout;
layout.stride = sizeof(Vertex);
layout.add_attribute(
VertexAttributeSize::Float2,
VertexAttributeType::Position,
offsetof(Vertex, x)
);

RendererInitDescriptor init_desc;
init_desc.view_width = 1280.f;
init_desc.view_height = 720.f;
init_desc.native_handle = get_platform_native_handle(window);

Renderer renderer;
TRY(renderer.init(init_desc));

RenderPipeline render_pipeline = TRY(renderer.create_render_pipeline(
"default_pipeline",
SHADER_SOURCE,
layout
));

std::vector<Vertex> vertices = {
{0.0f, 0.5f}, // Top vertex
{-0.5f, -0.5f}, // Bottom-left vertex
{0.5f, -0.5f} // Bottom-right vertex
};

Handle<Buffer> vertex_buffer = TRY(
renderer.create_buffer(vertices.data(), vertices.size() * sizeof(Vertex))
);

while (running) {
RenderPassDescriptor render_pass;
render_pass.add_color_attachment(RenderTarget::SCREEN);

RenderCommandEncoder& encoder =
renderer.create_render_command_encoder(render_pass);

encoder.set_pipeline(render_pipeline);
encoder.set_vertex_buffer(vertex_buffer);
encoder.draw(0, 3);

renderer.render();
}
>>
File: code style.jpg (1.38 MB, 2205x1355)
1.38 MB
1.38 MB JPG
>>103231499
Workflow is
>come up with system requirements
>design in Miro and pen and paper
>use Obsidian as a digital notebook
>code framework in Rider
>test in the Unreal Editor

Now, I like to split my code into
>pipeline
mostly asset management and tracking, mostly completely outside Unreal, this is for 3d assets
>framework
generic library code (saving, abilities system, movement, rolls, stats, things like that)
>editor
extending the editor with custom visual graph editors and things like that, see >>103217027
>game
in the Unreal Editor, with the Epic and my own tools, make the actual actual quests and program the individual abilities, etc.

As far as I know, in Unreal you're also interacting through the editor. I don't think anyone is using Unreal without the editor. It would be a pretty strange thing to do so. The thing is, everything that is done with the editor can be scripted via python, so in theory if you make say a map in Blender you could just turn it into a .umap asset without even opening the editor via Python scripting, but I've never seen anyone work like that
From my experience it's very much like any other engine in that regard
>>
Lots of quality posts in this thread, keep up the good work
>>
File: pipelinecode.jpg (1.43 MB, 1475x1871)
1.43 MB
1.43 MB JPG
>>103231499
For pipeline code I use a combination of Python, C# and F#
This is mostly to enforce naming conventions, manage git automatically via the command line (since I've got a lot of repos and typing commands manually into the terminal is error prone), instantiating workspaces, etc. Pretty standard pipeline stuff. It's not very common with 2D games but it's a must when making a 3D game because assets go through a lot of stages and you need to keep everything tidy.

For scripting the editor I use Python exclusively, with USD as a format to bring maps in. Actually you were talking about not using the editor, well I don't use the level editor all that much. I don't like it, so instead I make the maps in other apps and use USD to bring them into the engine. Pic related.
>>
>>103231642
where? all i see are unreal fags and some idiot thinking his pathetic macfag abstraction and transpiler is anything close to a 3d api and material pipeline despite not even having input bindings. i dont see anything in here that would require an iq higher than the average sdl+rayshit+imgui larper
>>
>>103232213
If you have something better to share by all means post it
>>
>>103232238
"reeee why wont you eat my dogshit? if youre such a chief, go into the kitchen and cook for me" t. faggot.

nobody gives a fuck about your unrealisticly primitive macfag abstraction that is so utterly worthless it cannot even describe blend states, depth merger descriptions, or input bindings. nobody in this thread has bothered replying to your stupid triangle that for some reason needs an update post every few hours
>>
>>103232267
If you have something better to share by all means post it
>>
File: 1711305883252667.gif (2.72 MB, 450x337)
2.72 MB
2.72 MB GIF
>>103232213
>>103232267
peak schizo hours here
>>
>>103224380
Lazy Foo is the go to guide for C++/SDL2.
>>
bump
>>
File: 2024-11-19_07:10:37.png (65 KB, 782x350)
65 KB
65 KB PNG
>>103228903
Sure why not? Or call them steps. Calling them frames is easier because it makes it easy to visualize update frames and render frames side by side pictorially. The fixed time-step loop where you interpolate between render frames.

>>103225513
>>103228384
Here is a fixed time-step loop.
const F64 frameTime = 0.016;
const F64 maxFrameTime = 0.250;
void UpdateApp();
void DrawApp(F32 L);

void RunApp()
{
F64 lag = 0.0;
F64 previousTime = GetTime();
F64 currentTime = 0.0;
while (!WindowShouldClose())
{
ProcessKeyInput();

currentTime = GetTime();
F64 dt = currentTime - previousTime;
previousTime = currentTime;
dt = dt < maxFrameTime ? dt : maxFrameTime; // prevent 'spiral of death'

for (lag += dt; lag >= frameTime; lag -= frameTime) UpdateApp();

DrawApp(lag / frameTime);
}
}

DrawApp also takes in an interpolation factor L that you need to use for interpolation (LERP and SLERP). For example, you will want to lerp the translations (and scaling) of your game models, and slerp the rotation quaternion before building an interpolated transformation matrix.
>>
>>103235391
*interpolate between update frames/steps to get data for render frames
>>
>>103217806
physx has been open source for the last three major versions
>>
>>103235391
nice game loop but imma stick to my delta time game loop. I like to live dangerously, thank you very much.
>>
>>103218280
>try GameMaker or Unity
No, don't try GameMaker. It's so bad you'll troon out and cut your wiener off, like your father before you.
>>
>>103218280
>GameMaker
more like
GAYMaker!
GOTTEM!
>>
Is writing your game in C# (or Java) the best/easiest way to make a game moddable?
>>
>>103236152
No
>>
>>103236172
Then what is?
>>
>>103236194
To not worry about moddability.
>>
File: seinfeld1[1].jpg (32 KB, 442x480)
32 KB
32 KB JPG
>>103235391
No! it's not a frame, if it's not drawing!
Because what are you framing? What's in the frame? Where's the picture? Where's the picture frame?
I don't have the time for this!
>>
What are some good learning resources and examples for the following graphics APIs:
>OpenGL3
>Direct3D9
>Direct3D11
>>
>>103236228
That's not a good answer.
>>
>>103236152
Depends on what you mean when you say moddable. Language shouldn't matter so much as this layer should be a definition format that you prefer and not code directly. And maybe a scripting layer for custom events if needed. But maybe you mean moddable as in you want them to have untethered code access without the source code? Like reflection or hooking?
>>
>>103236778
Yeah, reflection/hooking I guess.
>>
>>103236152
The easiest way to make your game moddable is to write it in existing engine that is highly moddable. Not a single one of modern general purpose engines (Unity, UE, Godot) has that properly. Older UE like UE1, UE1.5 were hyper-moddable, a lot of completely different games were made in them and those games were also highly moddable just because they used those engines. Like for example, did you knew 3rd person slasher games like Rune and Rune Halls of Valhalla were written in UE1.5? And they had huge mapping/modding communities.
>>
>>103236808
Adding to that: google UE1, U1.5 concepts of packages, mutators, etc. They had so much for modding on the binary level built-in into engine it's crazy. Those were the days. Modern UE is trash.
>>
>>103236808
Is it still possible to make a commercial game in UE1.x then? Probably not. Maybe it could be possible to make one in an open source "old engine" such as the Quake engine, but you'd have to GPL your code iirc
>>
>>103215814
>cmake
ngmi
>>
>>103236829
A lot of modern commercial boomer shooters sold on Steam are made in old engines.
Like Selaco is GZDoom engine, Ion Fury is Build Engine, Wrath is Quake engine, to give a few examples.
> Is it still possible to make a commercial game in UE1.x then?
Sure it is.
>>
Idea: Modify the quake engine to make it general purpose and give it modern features like reflection and scripting
>>
>>103237215
Congrats you created the Source Engine!
>>
>>103236276
It's like a virtual frame :D

>>103236152
>>103236194
Open source, well-written code is the best kind of moddable game you can make, friend.
>>
File: xarbon.png (33 KB, 1172x1060)
33 KB
33 KB PNG
>>103214753
Work in progress dump, unrelated to Chinese image forum topic.
>>
>>103237215
The Quake engine isn't good by modern standards
>>
>>103237215
doesn't the quake engine already have that shit?
>>
>>103220531
USE SDL2 dynamically and try to compile with the least dynamic libraries possible (bundle them with the game otherwise).
Compile on the oldest distribution possible (debian 10 even 11 is fine).
By doing this your game will not only run on 99% of linux users' pc but will also be pretty future proof, i would argue that the linux base ABI is way more stable than people think it is.
Proof: https://youtube.com/watch?v=3uVmUCuJpF4&pp=ygUMc2RsMTItY29tcGF0
>>
>>103238681
>future proof
I mean you're probably right, but last time I heard someone go on a rant about how future proofing is so important and how his design made sure the system would work forever, etc. two years later an update to the way numpy handles jagged arrays completely boked his whole future proof system.
There's no such thing as future proofing. There's only degrees of certainty
>>
>>103224585
DONT LISTEN TO HIM PACKAGING LIBC WILL BREAK EVERYTHING SINCE IT'S SPLIT ON SEVERAL .so AND THE RUNTIME LINKER IS PART OF IT
ALSO DONT USE APP IMAGE IT ALSO BREAKS AS WELL BECAUSE THEY STILL HAVEN'T FIGURED OUT HOW TO NOT RELY ON UNSTABLE API (for example modern ubuntu cant even launch them by default)
JUST PACKAGE YOUR GAME IN A .tar.gz WITH A SCRIPT TO LAUNCH AND THE EVENTUAL DEPENDENCES
>>
>>103238734
Future proofing for games is pretty easy, encapsulate and abstract all the I/O stuff behind an API, in the future you only need to update that part
>>
>>103238734
i mean you are right, what i meant was that linux binaries are way more stable than people give them credit for if packaged correctly, sometimes even more than windows, because on windows there's tens of DLLs (shit like directshow and so on) while on linux you are basically forced to bundle everything and the only thing that should be left exposed to the dynamic loader is sdl, glibc, opengl/vk
>>
>>103238772
i say future proofing in the sense that you might die someday and you get buried with the source code BUT the binaries does still work
>>
File: 13550__96383.jpg (86 KB, 500x500)
86 KB
86 KB JPG
>>103214753
Frustrating... I have so many ideas for a game, but I fail to connect the dots.
>>
>>103239322
you have to be 18 to post here.
>>
you linux devs are weird fuckers
look at all those words
>>
>>103238757
Just do both. If appimage doesn't work, then there is also an archive, a bit more annoying to use but more reliable.
>>
>>103239753
it's confusing but i cant stop you
>>
>>103239729
i'll never understand where linux gamedevs come from, i've never even seen a linux system in real life
>>
>>103239839
I see so many gamedevs talk about linux in this general that I thought it must be a really popular OS for gaming.
I decided I might as well treat myself to a new gaming pc with this os if it really is such a big deal.

So I went down to my local best buy and asked them to show me their top of the line linux gaming desktops. They had no idea what I was talking about.
After a while, they told me that no one sells ps3s anymore.

It was a really embarrassing experience, I thought this was a place for serious gaming discussion not fantasies.
>>
>>103240002
Let's try to keep the thread quality up by having productive discussions and posting interesting information. This website has hundreds of other threads to post inane jokes and spam in, I personally recommend >>>/vg/agdg
>>
>>103240085
I am trying to have productive discussions, which is why it's so frustrating to me that you all are pretending there's some other OS that games are commonly developed on.

You expect me to believe there are actual developers wasting time writing games for an OS used for business servers?
Please be more respectful of my desire to have serious game development discussion with other developers that ship their games for real OSs.
>>
>>103240640
Developer using Linux doesn't mean he develops a game specifically for Linux. Some tools like cmake and various c/c++ libraries are legitimately easier to setup and use on Linux, and any modern C/C++ compiler can cross-compile from Linux to Windows or MacOS.
>>
>>103241188
You're replying to a dishonest shitposter, but the whole gamedev ecosystem is on Windows
>>
>>103238506
If you want to make a game like Quake or Dusk or Wrath or in general any PS1-looking shooter, it's probably the best choice.
>>
>>103241336
Yeah, the Quake engine is good if you want to make a Quake clone, if you want to use it as a general purpose engine then no
>>
I'm making an android game, just a little dumb rpg, I already accomplished a lot actually, I just need to start mapping and such. I'm still looking for a hook, something to make you want to keep playing, battles are fun and such but the overworld is really boring, was thinking of going the horror route, maybe add some jump scares if you lose or something, at least it will give me an excuse to have ads on game overs and have people pay to evade them... Or maybe I could sell it for a few bucks, what would you rather?
>>
>>103240002
Kek this needs to be a pasta.
>>
Gentlemen I regret to inform you

corner collisions
>>
File: 2024-11-19 23-17-40.webm (1.65 MB, 804x562)
1.65 MB
1.65 MB WEBM
I added static bodies yesterday and tonight I was trying to get the one box to be able to come to rest on the static one, with some success but it's still jittery and the gravity is floaty.
>>
>>103242443
Is the collision shape a sphere or a polyhedron?
>>
File: 1706797840168931.png (4 KB, 620x575)
4 KB
4 KB PNG
Anyone here work with quadtrees/octrees? Am I doing this right?
>>
>>103243614
looks right
>>
File: ygg-112024.webm (1.26 MB, 1366x768)
1.26 MB
1.26 MB WEBM
subpixel animation is cool
"shoot bow": {
"right hand": [
{"x": -0.5, "y": 0, "rotate": 8, "duration": 10},
{"x": 0.5, "y": 0, "rotate": -8, "duration": 10},
],
"right item": [
{"x": 0, "y": 0, "rotate": 8, "duration": 10},
{"x": 0, "y": 0, "rotate": -8, "duration": 10},
],
"left hand": [
{"x": -6, "y": 3, "rotate": 0, "duration": 12},
{"x": 6, "y": -3, "rotate": 0, "duration": 12},
],
},
>>
>>103243770
thats cheating
>>
File: ygg-112024-2.webm (2.33 MB, 1366x768)
2.33 MB
2.33 MB WEBM
>>103243772
Maybe so, but subpixel is good for zorder too
>>
>>103243770
>>103243961
>rixels
disgusting
>>
File: ygg-100924.webm (2.86 MB, 1366x768)
2.86 MB
2.86 MB WEBM
I'll show you the horrors that Tesla was talking about
>>
Been fiddling around with C++ trying to make a runtime reflection system ala C# (so modding will be easy, and also so I can easily get a structure's members for things like ImGui inspectors), but this just made me realize I should make my game in C# or Java in the first place.
>>
>>103245094
You can also try dynamic linking and having a simple consistent abi between components. Like, everything can be a dll with uniform interface and mod can supply its own set of dlls for player controller, ui system, main menu and whatever imaginable.
>>
Try just making a game instead of fucking around doing stupid shit trying to make it moddable
>>
Fuck it
Might make a FOSS game or engine
>>
How do I go about making a general purpose game engine?
What language should I make it in? What should I do for scripting and editors?
>>
>>103245534
If you have to ask the question, you're not ready.
>>
any significant performance differences between clang and msvc for windows dev (c++)?
>>
File: 1628430110812.png (309 KB, 785x847)
309 KB
309 KB PNG
>>103245534
SAAR USE JAVA! JAVA GREATEST LANGUAGE! VERY MODDABLE TOO!
>>
File: defold_engine_logo.jpg (13 KB, 640x336)
13 KB
13 KB JPG
>>103218269
>know Python and C but I have no formal education on the subject of CS, I'm also really nervous and get overwhelmed by the complexity of my own code which is especially bad for solodev, I'm supposed to maintain my own code with that being said all I want is to ship a game and tell a story I know game engines aren't favored here but /agdg/ is just too bad

R U me? I was in the same boat but I just picked up Defold. Can't say anything good or bad about it yet.
>>
>>103245830
Don't know about performance but Clang usually shits out slightly smaller binary with equivalent settings in my tests. And I mean "slightly".
>>
>>103243279
sphere
>>
File: letter.webm (15 KB, 366x350)
15 KB
15 KB WEBM
programmed this handwriting effect, it's very simple but I like it
>>
File: quest definitions.png (58 KB, 690x774)
58 KB
58 KB PNG
Finished the first pass of the quest system.
There's automatic quests and static quests. Static quests are managed programmatically via scripting. Automatic quests are fire and forget.
Automatic quests have support for multiple phases (linearly) with main and side objectives for each phase.
Supported objectives
>random fact
>kill count
>picking up item
>reach place
Static quests are for arbitrary progress conditions, and you trigger each phase manually. They support nonlinear phases but you don't have automatic objectives.
>>
File: questgraph.png (162 KB, 1223x759)
162 KB
162 KB PNG
>>103246255
And this is how it looks on the actual quest graph
>>
>>103246197
That's really cool, can it handle any letter or do you have manually specify the strokes for each character?
>>
>>103246531
The shader uses a smoothstep function so it needs a gradient map. But I have a Houdini tool that builds the map automatically with support for custom timings (multiple letters in a word starting at the same time)
The biggest issue I'm facing is that I can't seem to be able to get rid of 8bit compression artifacts. I'm not sure if I'm going to use 16bit HDRs or if the artifacts are insignificant enough that nobody would even care
>>
>>103246564
By artifacts do you mean the stray pixels that pop up before the stroke actually reaches that position? It's noticeable in the video because the of the size of the text, but I don't think it would be at lower point sizes.
>>
>>103246637
Yes. It doesn't matter how clean the original gradient is it gets fucked by compression. I also don't think it matters but I'll have to wait until I see it in game
>>
>>103246564
Even going 32-bit wouldn't be unreasonable since that's just RGBA.
>>
>>103218269
You said that you know Python and C, and worried about lack of "formal CS education", and somehow worried about spaghetti code due to this? Doesn't make sense to me
>>
>>103245988
I didn't switch to an engine yet, just have to power through the initial hard stuff
>>103246925
I don't have a CS degree which is what I meant
It does make sense, knowing a language and some high school math with the concepts of IT isn't nearly enough to build a sufficiently large coherent system
It's not impossible but without industry experience it's certainly harder
>>
>>103246964
Knowing a programming language and learning a dozen patterns as you go is enough so I just disagree
>>
>>103246996
it's inherently hard to build stuff from scratch
but it is enough it's just that I feel it's too much for me
passion matters too
>>
>>103218269
>no formal education on the subject of CS
CS is about as relevant to programming as set theory is to accounting.
>really nervous and get overwhelmed by the complexity of my own code
It's called "refactoring" and "go to definition," neither of which should be a problem since C isn't a scripting language.
>>
>>103214753
dont concatenate strings like that in lua. each concat operation re-hashes the whole string. use string.format instead
>>
File: 1726779174814881.png (520 KB, 807x490)
520 KB
520 KB PNG
>>103245830
compiled raylib 5.5 with clang and msvc, results were identical for whatever that's worth
>>
I've been spoiled by BYOND
Anyone else?
>>
>>103219569
that looks disgusting for overdraw
>>
>>103247551
why doesnt the language automatically convert this kind of thing
>>
Gonna make a post apocalyptic CRPG ala Fallout.
But I don't wanna just do "nuclear apocalypse", I wanna try something different. Anyone got any cool suggestions on a post-apocalyptic CRPG setting?
My brain's currently fixated on
>world long invaded by demons or otherwise monsters from another dimension
>world that is now a "high fantasy" world, but used to be our world until a great calamity
But I can't think of any cool CRPG stories to design with these settings.
>>
>>103247551
If you're using LuaJIT, I doubt that's an issue.
Maybe even the vanilla interpreter wouldn't have any issues with that, because it's a fairly low hanging fruit for optimisations.
>>
>>103249475
cause it fucking SUCKS
>>
>>103249475
because:
- operators are just syntax sugar for function calls in lua, they can be any function that does anything, and change all the time at runtime
- one of lua's top priorities is low latency compilation of new code, which means not wasting time on robust optimization analysis

luajit's inliner MIGHT fix it for you, but i've never seen that happen in the wild.
lua is a very simple language and is intended to have a very simple implementation. it's not (and nor should it be) a huge runtime ecosystem with a complicated compiler.

shit like libllvm and mono/cli are embeddable runtimes that give you that kind of "tooling" for runtime code processing, and they're a nightmare and a half to work with compared to lua, on top of having much worse latency for code generation.
>>
>>103249618
puc-rio doesn't do any optimization passes at all.
luajit doesn't do traditional optimization either. it just inlines things if it thinks it can get away with it. i think it can reduce some of the overhead here, but like I say in the other post i've never seen that happen.
>>
>>103249409
anyone?
I doubt no one here heard about it
though it's more of an /agdg/ thing but I don't want to spoil them with it
it contains an all-in-one package to make a multiplayer tile-based game with a comfy cpp-like internal language and an OOP hierarchy system that even a child can manipulate
if you've done something in it you'd understand
>>
>>103249691
>>103249475
you know that you can just defer hash computation until you need it right
>>
>>103249816
not true, see the definition of lj_str_new
every time you create a new string, it's hashed and interned.
>>
>>103249881
i said 'can', theoretically
its not like hashing strings is expensive anyway
>>
>>103249928
not without making your own lua implementation.
anyways it adds up, and not doing it also saves you allocations and string intern table trashing.
it's typical coming from another language, doing formatted strings like this is the first thing you reach for and it just works. most don't realize there's a better alternative. i just thought i'd share the knowledge with you anons.
>>
>>103250052
you were talking about compiler design, im just saying if the cost of hashing strings was an issue you can just defer it to when you actually check the hash
>>
>>103249498
CRPG Doom could be fun aka diablo but with guns
>>
File: stresscat.gif (466 KB, 220x220)
466 KB
466 KB GIF
>Can't decide whether to make a general purpose engine, a 2D sandbox rpg, a 3D CRPG, or a simulation game
I HATE DECISION PARALYSIS SO MUCH
>>
>>103251160
>general purpose engine
https://geometrian.com/programming/tutorials/write-games-not-engines/
>2D sandbox rpg
sounds ok
>a 3D CRPG
you'll probably be overwhelmed by the additional complexity of the third dimension, not this
>simulation game
we need more games with deep systems, make a systems game
>>
>>103251217
>you'll probably be overwhelmed by the additional complexity of the third dimension, not this
I've done 3D programming from scratch before. Don't assume I'm a retard who can only make slop in an existing engine (i.e Unity, Godot, Unreal). I just can't decide on a *game* project idea to make.
>>
>>103251362
well you sound pretty retarded so I think my assumption was based on good data
>>
File: 1731971231318072.png (331 KB, 530x424)
331 KB
331 KB PNG
>>103251381
Savage
>>
>>103251362
Making a 3D game is literally 10 times more complicated than a 2D one
>>
>>103251381
>>103251470
crabs detected, (subjective; me being "retarded" in your warped eyes is *subjective*) opinions rejected
>>
>>103251582
telling you something is complicated isn't being a crab
>>
>>103251596
It is when you think I can't handle it (I can; I've done 3D programming before)
>>
>>103251621
Just because you've done 3D programming doesn't mean you can handle it
>>
File: 1725105919493102.jpg (121 KB, 1080x919)
121 KB
121 KB JPG
>>103251470
There's nothing complicated in a 3D.
This nodev trope needs to die.
>>
>>103251632
>just because you've done it doesn't mean you can do it
>>
>>103251636
>There's nothing complicated in a 3D.
Yes there is. The asset pipeline is insanely complicated. Physics is much more complicated. Animation is much more complicated
>>
>>103251217
>make a systems game
what is that
>>
>>103251660
I don't know the best way to describe it, but a game where the appeal lies in interacting with complex gameplay systems.
Games like Factorio are probably the best example but I don't think it's limited to that kind of game.
For example I would say deeper RPGs like D&D 3.5 and games utilizing a large portion of that ruleset can have a systems appeal.
Other simulation or sandbox games can be appealing mainly because of their deep systems.
>>
File: 1680266816969220.jpg (47 KB, 585x749)
47 KB
47 KB JPG
>>103251654
Oh no importing a mesh with cgltf and slapping on a texture is so fucking HARD!
oh no the same physic as a 2D game is so fucking HARD!!
Oh no the same thing 2D gamedevs bitch about is also HARD in 3D!! even though some 2D guys also use bones for their animations.

Man go fix your limiting beliefs.
Big NGMI energy
>>
>>103251699
I have literally made a 3D engine
You have not
>>
>>103251706
Proof?
>>
>>103251706
And you found it hard?
Tragic
>>
File: game.jpg (561 KB, 1920x1080)
561 KB
561 KB JPG
>>103251714
Here's an old WIP RPG I was working on
>>
>>103251734
Anyone's gonna find it hard, there is so much ground to cover it'll take you years to learn everything
If you want to get anything done in time you should go the middleware route where you plug libraries into each other which is what games like Kenshi did but if you're doing that might aswell just use Unity
>>
>>103251745
Looks neat. And you did it from scratch? Why did you scrap it? You were onto greatness!
>>103251759
>middleware route
Not entirely bad, unless you're using absolute messes such as Raylib or OGRE
>just use Unity
No LMAO
>>
>>103251759
Gamedev is hard Boohoo.
>>
>>103251745
This unironically looks kino, such wasted potential
>>
>>103251775
>And you did it from scratch?
Yes
>Why did you scrap it?
The tools I made just weren't good enough to make the game. My engine sucked, eventually I got to the point where I knew enough to make a good engine but 3D development is just so fucking complicated for a single developer, I'm probably going to restart this as a game with 2D graphics when I've finished my current project

>>103251799
You can achieve anything given enough time and effort. Question is do you want to spend two decades working on a single game
>>
>>103251831
You won't spend 20 years on a 3D game just because it's 3D. You can as well spend 20 years on a 2D game.
You realize that what takes time in a game is gameplay and content and not your graphic / art pipeline or whatever.
At that this point you're just coping of your skill issues.
>>
>>103251892
>You won't spend 20 years on a 3D game just because it's 3D.
You will (unless you use middleware), because it's insanely complicated
>At that this point you're just coping of your skill issues.
I've literally made a 3D engine, have you?
>>
>>103251892
>You can as well spend 20 years on a 2D game
This. Dwarf Fortress has literally been in development for 20 years.
>>
>>103251919
I don't make engine. I make game. And I don't whine.
>>
>>103251929
Where's your game?
>>
>game engine development general
>"I don't make game engines"
>>
>>103252055
>game engine development general
>"I don't make anything"
>>
>>103251933
3D is not hard

>>103252055
>game AND engine development general
>>
>>103252089
where are your animated characters
>>
>>103252100
coming soon (tm)
>>
>>103252123
Exactly
Pile on all the shit a typical game has and you discover how complicated it becomes
It's good when you have some hard constraints but if you want to make a 3D RPG you need everything at the kitchen sink
>>
>>103252089
>hurr I sniped the op to edit the name so I can pretend I belong here
go away
>>
>>103252135
meh there's plenty of resources on skeletal animation. I'll be just fine.

>>103252147
kek been here longer than you buddy.
>>
3d is hard

>>103251775
>>middleware route
>Not entirely bad, unless you're using absolute messes such as Raylib or OGRE
raylib is cool and made for cool people
>>
>>103252163
I'm not trying to say you can't do it. If you want to make a retro 3D game that looks like the sims it's easier
If you want to make something that looks like it was made after 2005, it's not so simple
>>
>>103252135
>if you want to make a 3D RPG you need everything at the kitchen sink
No you don't. You can get by without shit you don't need. Physics, etc. You don't have to make your engine a general purpose engine.
>>103251831
>The tools I made weren't good enough
You don't need to make every tool for your engine. Hell, you can use Blender to make shit like levels.
>My engine sucked
Dude, that screenshot looked soulful. The fact you scrapped it and now are on this "making a 3D engine sucks, do 2D or use Unityslop" breaks my fucking heart.
>>
>>103252203
I'll give you that the ceiling of 3D games is way way higher than a 2D game. You have to know your limit and lean on art style.
>>
>>103252218
RPGs are a genre of video game that mix a whole bunch of other genres of video games, so you do kinda need everything
Tried making levels in 3D authoring tools - it sucks, I made a level editor (that wasn't particularly difficult). When I say tools I'm talking about the engine I made
Do you really think it would be that much worse if I used prendered 2D like Diablo instead of 3D?
>>
>>103252271
>Do you really think it would be that much worse if I used prendered 2D like Diablo instead of 3D?
Yes.
>>
>>103251745
What graphics API were you using btw?
>>
>>103252302
Why? Its basically isometric anyway, I can still have a 3D world with just using 2D graphics
>>
>>103252336
openGL
>>
>>103252339
prerendered sprites have their own difficulties. I know that
>>
>>103252384
Prerendered sprites are really easy to do, both to make and to render
>>
>>103252391
you have to deal with a depth map, rotating them is more complicated than just slapping a rotation matrix on it, mipmap if you have multiple zoom levels or smooth zooming. There's nothing free in gamedev.
>>
>>103252419
You don't rotate prerendered sprites, you export seperate rotation frames. You just need to set up a script in Blender to render out all the angles along with a depth map and that's it
Mipmapping is designed for perspective rendering, it's unneccessary for orthographic, all you need is a scaling algorithm that works on the entire image. I think I tried to explain this to you when you were trying depth mapped sprites
>>
File: 1645711335730.gif (1.47 MB, 448x640)
1.47 MB
1.47 MB GIF
>>103252449
Yeah you did, and I didn't really understood it at the time, sorry. I still think you need mipmaps (at least I found that the sprites that I generate at different size were better than scaled ones), but you were right that scaling the full image instead of letting opengl do it per sprites is/was the better solution. Oh well
>>
>>103252583
Mipmaps dynamically adjust the resolution of a texture. You need this with perspective rendering because some things will be further away from the camera than others, so they'll be bigger or smaller. With orthographic, everything is the same size, so everything will be the same mip level. So you can just draw one large image and downscale it using whatever algorithm you prefer
>>
>>103252612
you can make things smaller or bigger by playing with your left, right, top and bottom. And I found that simply downscaling sprites gave worse result than generating smaller sprites in blender.
>>
Everything you never cared about anti-aliasing: https://blog.frost.kiwi/analytical-anti-aliasing/
>>
>>103252892
Is it bad if my engine/game doesn't have anti-aliasing?
>>
>>103252661
I don't know what you mean by that, if objects can independently scale in your game then you have a use for mipmaps. I'm assuming things in your game don't scale though because it just looks like you're stitching tiles together

A prerendered sprite is going to look better than one that has a realtime scaling algorithm applied to it, but we're talking about realtime scaling here. A fullscreen downscale is simple and will give you a consistent, smooth result. But mipmapped textures on polygons will perserve hard polygon edges if that's what you want
>>
>>103252945
No. Just render at a higher resolution if you can spare the framerate and that'll work better than any antialiasing available
>>
>>103252984
i thought games were rendering in 360p and upscaling with ai now
>>
>Cultic dev mentioned /agdg/ in podcast
Erm, what da banana
>>
>>103253142
>Cultic
What game is that?
>>
>>103252892
That's only good for shapes though. Extremely good maybe, but I'd like to see it done on arbitrary 3D models. Apparently it could work with SDFs but an SDF is always lower res than the model itself. Not sure how that would work
>>
is redot an actual thing? don't want to give my money to cucked operations
>>
>>103253201
those are just regular anti-aliasing algorithms
>>
File: DarkReflection.png (71 KB, 939x747)
71 KB
71 KB PNG
Got my custom json decoder mostly working today.
Now I have full control over my data. Everything is just tokens.
>>
>>103253777
but why do you need that
>>
>>103253805
simplest way to do it without relying on functions I don't understand.
Things were getting annoying when unmarshalling abstract types.
And maybe one day I want custom logic like : "if reading this specific type, put these fields in this struct, but put these fields in this other struct"
>>
File: 1713043528518622.png (37 KB, 499x322)
37 KB
37 KB PNG
>raylib
>framerate uncapped
>vsync on
>sprite moving at 1 pixel per update
>about once every 6 seconds it moves 2 pixels in a single frame
>>
>>103254303
Windowed mode on Windows? If so it's going through composition which can do weird things. If it's happening in FSE then there's some underlying issue with your code or the library.
>>
It happens from rounding the decimal point of the sprite's position. Even with integer math, this can happen, too, unless 1 unit = 1 pixel. In Super Mario Bros (NES), what you're describing happens as well. I think every third frame or so, Mario moves an extra pixel on the screen because his running speed is 2.5 pixels per frame.
>>
>>103254384 is intended for >>103254303
>>
>>103253019
Render at normal res, scale down for the AA then scale up with AI.
>>
Making my project clang compliant makes me want to blow my fucking head off.
>>
>>103254332
>>103254384
definitely something weird going on with raylib, whenever it happens the frametime spikes, using a release build so it's not some debug issue
>>
File: ygg-112124-1.webm (1.66 MB, 1366x768)
1.66 MB
1.66 MB WEBM
So previously I showed both hands animating the bow here, now I added functionality to also apply the animation to the left hand item, to keep it in line with the hand. I debated "hiding" the shield during said animation, but this is better.
>>
>>103254598
Also since I can define zorder and animate each piece separately, instead of just mirroring the sprite (and moving the bow the the visible left hand) I opted to leverage this and keep it in the right hand. And in the future if I add sprites with the back facing, I can even draw that and put the weapons and hands behind the sprite for posterity.
>>
>>103220693
what algo do you use?
>>
I want to make a cataclysm DDA / rimworld style roguelike. I made this prototype back when the unity pricing thing happened

Basically I want to finish a minimum viable product as fast as possible. then keep working on it and updating for years. Is it fine to just keep using unity which is what Im familiar with or should i switch to something else
>>
>>103255642
>s it fine to just keep using unity
yes, dont believe the sensationalist bullshit



[Advertise on 4chan]

Delete Post: [File Only] Style:
[Disable Mobile View / Use Desktop Site]

[Enable Mobile View / Use Mobile Site]

All trademarks and copyrights on this page are owned by their respective parties. Images uploaded are the responsibility of the Poster. Comments are owned by the Poster.