a93cd6 No.16666818
"Game engines are not games, where is your game?" edition
Resources
>>>/agdg/
>>>/vm/
>#8/agdg/ @irc.rizon.net
>http://8agdg.wikidot.com/resources
Links
>Wiki: http://8agdg.wikidot.com/
>Beginner's guide: >>>/agdg/29080
>Previous thread: >>16629802
Announcements
>QUARTERLY DEMO DAY SCHEDULED FOR August 8th (08/08)
>Please contribute to the wiki if you can
Demo day is just five (5) weeks away, use your time wisely
26b7c8 No.16666844
>Game engines are not games
Well shit, I'm out of here.
On topic though, how do anons here work around OpenGL's limitations of Z-buffering with transparency? I have some ideas but they'd only work with my game, not anything more broad.
How do modern games work around them? Is it just because they all use DirectX instead of OpenGL?
And most curiously, how did old games work around them? Just a quick look shows that Spyro and Mario 64 had no problems with it. I don't know much about Spyro itself, but the Nintendo 64 was designed largely by SGI, so surely it should be similar in some ways to older OpenGL versions, right?
a93cd6 No.16666848
>>16666844
Sorry, I always feel like the thread topic is always a fun little joke to play with. I'm pretty bad for enginedev too.
26b7c8 No.16666849
>>16666848
Hey, no worries anon. Enginedev being a black hole impossible to get out of isn't too far from the truth.
998efb No.16666908
>Game engines are not games
I'll finish my "game" any year, I swear!
>>16666844
Older games can sort the polygons correctly using a BSP tree for example. In areas where it is not possible to sort two polygons, the BSP tree will actually cut the polygons up until they can be sorted.
Games like to deal with transparent polygons by rendering them separately from the rest of the scene without any Z buffer active, in a specific order. There are also techniques like this: https://en.wikipedia.org/wiki/Order-independent_transparency
But they don't really work on older hardware. You also don't need to split polygons if you manually ensure that there are no sorting issues.
228367 No.16666949
Enginedevs of today, AAA studios of tomorrow
b3b46c No.16666995
>>16666844
When deferred rendering hit, transparency disappeared from videogames. Blending is just something you don't do in deferred rendering.
Modern games first draw all opaque objects (front to back, minimizes overdraw), then apply some of the deferred rendering post processing techniques, draw the transparent objects (back to front, accurate transparency) and lastly apply the remaining post processing effects.
As a result of this, transparent objects run into limitations that opaque objects don't; most prominent one being that only a limited amount of lights can affect them.
The work around of old games is generally "put triangles in such an order that they're not likely to cause issues, and just hope the GPU batches them in a way that it doesn't fuck up".
The same issue actually exists in modern games within objects (as individual triangles don't get sorted, objects do), but to get around that developers simply don't make models with lots of transparency.
There are solutions to achieve order-independent transparency, like fragment sorting. Shadow of Mordor actually has it, and it's the first thing you turn off if your game doesn't run fast enough because it's expensive as shit.
a93cd6 No.16667023
>>16666995
What makes it expensive? Is it just the sheer amount of tris you'd have to sort every frame? With models with 12k tris, I can see why it'd choke up the GPU, but surely someone is working on optimizations for that sort of thing
Do games still use depth stenciling, or is that an old technique now?
8808e2 No.16667035
Engine dev is way better and more productive than supposed game dev.
Retards who fetishize game dev like to think games are an art form or something gay like that. An engine dev idealizes the true form of a game, and that is a program that entertains the user. He understands the technological aspect of what a game is.
It's the under lying problem here that autist gamers are slaves to their own hedonistic desires, ultimately funding and supporting the semitic control of their own infrastructure.
a93cd6 No.16667037
>>16667035
I spent literally all week trying to optimize my AABB Rectangle.Contains() code.
b3b46c No.16667045
>>16667023
AFAIK the technique they use involves putting the fragments into a linked list and sorting them at the end. http://www.elopezr.com/the-rendering-of-middle-earth-shadow-of-mordor/
It's expensive because GPU's are bad at that kind of thing.
b094c8 No.16667051
998efb No.16667057
>>16667035
This is the real truth. The medium is the message- the game play and game feeling is just as much a product of the tools and engine used as it is a product of the game-specific work. A creator can only create their own game feeling by creating their own engine feeling- and this is only realized by people who are making their own engines, or could make their own engines if they wanted, but would rather gut an existing one for their own purposes.
b3b46c No.16667064
>>16667057
>>16667035
You are only correct once you've released a game.
f945b1 No.16667067
>>16667064
Sigma dev has released a game. That's why his engine is sigma 2.
a93cd6 No.16667119
>>16667067
What game? Is he Speebot dev or am I retarded?
1c7c5d No.16667135
>>16666844
The modern solution is to use forward+ or clustered deferred shading. There's a presentation on nuDoom how they did it there for example.
>>16667035
>larping
701c46 No.16667158
>>16667057
Are those mice?
9e6a89 No.16667237
>>16667119
How new are you?
b3b46c No.16667295
>>16667273
is this the new dorf fort
b3527a No.16667296
I found out why the functions glGetProcAddressARB returned were segfaulting. I read a lot of old discussions and one thing that kept coming up was that it's not good to have a function pointer variable named the same thing as a function. I didn't think I had OpenGL 2.1 functions available, but I try it without the loader and I do. I look up why and it's because Linux Standard Base 5 says the OpenGL ABI should support 2.1 and that must have finally found its way into my distro. Currently thinking about how to support the old abi and the new. I think I might have to compile two versions, but that is not ideal.
b9c984 No.16667308
>>16666818
4chan /agdg/ demo day today, go test their stuff and bully them. Some of the demos look pretty neat, I'm submitting ANUBITEK today but will be updating it for 8ch's demo day.
998efb No.16667324
>>16667064
I have released a game. Unlike someone's mediocre project in unity, my incompetence has seeped through my work onto every single level of the creation, giving my game a completely unique set of flaws that could not be produced in any other way.
https://ika.itch.io/redsky
683259 No.16667331
>>16666844
hand sort, draw back to front, design fairly simple transparency objects that minimize artifacts - depending on how you sort & batch: by tri or by object.
b3527a No.16667348
>>16667296
I don't know what I did, but now the functions no longer segfault when called from pointers with the same name. I must have done something truly retarded last night. I hope some of you will test the Linux version on demo day.
b3b46c No.16667458
000000 No.16667484
just bought rpg maker 2003 on sale for dirt cheap during the steam sale, i'm thinking of making a gen 1 pokemon old gameboy or gen 3 pokemon gameboy advance looking game.
got any ideas for cool mechanics or maybe even story ideas i could add into my doujin soft rpg maker game? it's going to be an original work and not based on anything but inspired by stuff like anime and manga and other games in a few ways.
b9c984 No.16667612
>>16667484
Turn based but you can do more than one attack, or if you are being attacked you can defend if you time a button press right. Add parrying. Make an action points system that resets on that player's next turn which is also used for defense. No action points, can't defend.
d65ea5 No.16667652
84c1c3 No.16667696
>>16667677
Go back faggot.
4ae59b No.16667700
>>16667484
Should've got XP and Pokemon Essentials. If your doujin soft RPG Maker game and Pokemon were the same game, there's only one other game that does that well.
26b7c8 No.16667704
>>16667677
Cuckchan's a shithole, but mostly everyone here have known that for years. The fact that you've stayed there until now says more about you than anything. We've had enough problems with cuckchan wojaks in these threads as it is.
9f974b No.16667711
The soyim are trying to get GIMP renamed again.
https://gitlab.gnome.org/GNOME/gimp/issues/3617
000000 No.16667723
>>16667612
sounds like a cool idea i'll keep it in mind
>>16667700
is that so i actually own every copy of rpg maker now also own a copy of xp, vx ace, and mv on steam (though i never know which is the best rpg maker to use to make a game, so what do you think is the best?) i have just been holding out on buying 2003 because the original price is to much for an old version of rpg maker.
i'm not necessarily making a pokemon fan game as i will be making all of my own sprite art so i don't know how useful pokemon essentials will be to me, but rather i'm drawing inspiration from pokemon a long with a bunch of other stuff to make my own doujin soft game that plays completely different.
b68bb5 No.16667727
>>16667711
>For the sake of productive discussion, I'd like to ask non-contributors not to comment if they are not suggesting a name. If you would like to express approval or disapproval use GitLab's reactions, not the comments.
>I'm not interested in hearing anyone's arguments against why we should have to do this. Just downvote it goy.
GIMP is kind of a shitty name, but I'd leave it just to spite these people.
26b7c8 No.16667729
>>16667711
I completely forgot gimp was even a word until this. Well, if they decide to change it, I'll just stop using it and pirate photoshop instead.
26b7c8 No.16667755
>>16667751
>How do i post anonymously? I don't want an id next to my posts and i'm too lazy to use tor.
Go to a board that doesn't have IDs.
44ef66 No.16667812
>>16667677
>>16667751
Piss off we don't need or want you here you faggot.
b3b46c No.16667816
>>16667751
>How do i post anonymously?
By not posting here at all.
41cd50 No.16667822
>>16667677
>goes to new board
>acts like a nigger
>doesn't even post progress
Get out.
e30752 No.16668001
>>16667711
>We don't like it being called GIMP
<So fork it and give it a different name
>IT'S NOT UP TO US TO FIX IT WHY ARE YOU BEING LAZY AND STUPID
These fucking faggots.
dc7c00 No.16668008
One day I will stop coding UI and start posting progress again
But not today
9f974b No.16668040
>>16668001
>ban the monkey emoji
>not the wheelchair and clown emoji
412998 No.16668065
>>16667727
GIMP has had its name for over 20 years. These people don't care. It's about feeling powerful in the most petty of ways.
361328 No.16668075
>unity 2019.3.0a8 crashes when creating a new project
Why would they release a broken version
9f974b No.16668081
>>16668075
Because even with Mike Acton and the DOD fags trying to salvage shit, they're still Unity.
dc7c00 No.16668109
>>16668075
If I sneeze unity crashes.
I live that they are setting a target wait time after changing code to 0.5 seconds. Too bad they are still at 15 if it does not crash
2b6f45 No.16668142
>>16667711
>maintainer tells them to fuck off
>um actually you don't you realize this is really bad why don't you take my anecdotal evidence as gospel while i put words in your mouth
it's fucking free software and none of the people who care about the name would ever donate after using it. why would they listen to what some stupid university cunt thinks about it
304f60 No.16668165
>>16667711
>>16668142
What the fuck are they complaining about? The ONLY other use of the word gimp in common modern usage is to refer to a type of bondage fetishist. I don't think anyone has used gimp to refer to cripples in 30 years or more.
13885c No.16668175
>>16668001
>>16668142
Best part is how fucking petty and useless this whole issue is. Complaining about the name 23 years after release, like you couldn't stick up your nose for a more worthless reason if you tried, yet these people think they're some fucking saints out saving the world from evil.
My dream is to one day make a program that's so good it makes every competing software obsolete, so good that if you try it using anything else will be agonizing, and then give it some outrageous name that offends all the cucks and SJWs. Like Storm Studio and the logo looks like Schutzstaffel, or call it TIAMID and say it stands for "Transgender Is A Mental Illness, Duh".
a93cd6 No.16668241
>>16667237
Been here since day one, people keep hopping projects or disappearing, so i stopped paying attention a long time ago
9f974b No.16668247
Are visual novels welcome here too?
412998 No.16668250
>>16668142
Such a weasely, fake niceness to them.
414b6a No.16668411
Could I get some opinions on the ideal input buffering window for action games? I'm redoing mine currently and figured I might as well get the timing right, too.
304f60 No.16668416
Is Godot something that's good to start with if you have little to no programming experience? Could you start with it and learn while you're going as needed?
54397c No.16668438
>>16668142
Interesting how SJW go from "ban these fuckers" to "let's brigade this issue" to passive-aggressive comments that boil down to "the name may offend some very small, insignificant to the point of non-existence people, so you need to change it because those 3 people won't use the program because of its name. Fuck the current userbase, they don't need documentation or google search results."
It's great that the project maintainers are just telling them to fuck off, we need more projects that are like this instead of appeasing these faggots.
96274b No.16668443
Dialogue system is up and running but needs more work and some polish. Items are can now be stacked.
f6169a No.16668467
>>16668444 (checked)
What kind of game do you want to make?
d0b506 No.16668473
>>16668467
a baseball game.
b3b46c No.16668480
YouTube embed. Click thumbnail to play.
>>16668473
What kind of baseball game?
f6169a No.16668481
d0b506 No.16668489
>>16668481
I can't say exactly or you will make fun of me.
>>16668480
3d. Would that be harder?
b3b46c No.16668496
2b6f45 No.16668504
>>16668489
>I can't say exactly or you will make fun of me.
i'm going to assume it's a baseball mascot themed furry vore game until you explain otherwise
281185 No.16668505
>>16666844
>Well shit, I'm out of here.
NO, STAY
8b68d2 No.16668551
>>16668416
if you have zero idea how stuff "works" sticking to one of the general purpose tutorials is a safer bet. godot/unity/gamemaker etc require at least some basic understanding.
just grab any beginner book for the language you want, or heck simply use something like turtleacademy.com which exists specifically for this reason also prevents any language shitflinging that might occur depending on what people recommend
>>16668247
>Are visual novels welcome here too?
it's not like the thread is running super fast, and even ren'py still requires some logic to do stuff so don't see why not.
dc7c00 No.16668562
>>16668489
>implying we won't make even more fun of you if you refuse to say
How insecure can you be? That is pretty pathetic.
f6169a No.16668569
>>16668489
3d will generally take longer. You'll need to learn how to model, rig, animate, uv unwrap and texture 3d models. You should learn how to use a game engine that has a focus on 3d, like Unity or Unreal Engine. Godot would work too but the community doesn't have quite as much helpful stuff as the other engines.
Plan everything out well in advance and figure out the order you want to work on things. Generally you want to get the core gameplay loop working as soon as possible, and you can add secondary loops, mechanics, and features on top of it. The core gameplay loop is what the player is doing moment to moment, while the secondary loops are things that support that core loop. In Doom the core loop would be moving and shooting, while the secondary loop would be navigating the levels, getting pickups, and figuring out which enemies you should target first.
In a baseball game I would assume the core gameplay loop would be the bare minimum for a baseball simulation. Hitting the ball, catching the ball, throwing the ball, running bases, while the secondary loop would be placing the players on the field strategically, picking the right players to go out, changing what kind of pitch the pitcher throws, keeping score, and so on.
d0b506 No.16668581
>>16668569
That's what I figured. I can already model and program a bit, so I'll probably go with unity. Thanks for the advice.
f6169a No.16668584
35fafc No.16668672
>>16668581
<what a minute, that .jpg
d9a133 No.16668933
>>16667273
wew, how long have you been working on this?
56dedd No.16669179
>>16668075
>unity 2019.3.0a8 crashes when creating a new project
>Why would they release a broken version
>unity 2019.3.0a8
Anon, that is an ALPHA build of Unity. 2019.2.0b7 is the current BETA build. 2019.1.9f1 is the current STABLE build. The "a" means alpha, "b" means beta, and "f" means it's finished and getting just bugfixes at this point. If you want the most stable Unity, you need to get on the LTS releases. Most recent LTS release is 2018.4.3f1, and the most mature LTS release is 2017.4.30f1.
https://unity3d.com/unity/qa/lts-releases
392541 No.16669323
>>16668933
started about 4 weeks ago but this is the third iteration of a year old concept
a93cd6 No.16669398
>>16667273
Ganbare anon, this looks like it could be fun
f7b469 No.16669405
I had a wee bit of an idea for an upcoming project and I'm curious what you think. I'm considering doing music first. My reasoning there is it may help get over potential mental blocks, perhaps even be inspiring instead.
f6169a No.16669471
>>16669405
"doing the music first" isn't so much an idea for a project as it is a loose plan of action. If it works for you go ahead, but I know that plan wouldn't work out well for me since I prefer to have a strong set of mechanics to work from and build the rest of the game on top of. No harm in trying it, though. If nothing else you'll get to practice your music composition.
ab89f2 No.16669480
>>16667711
>nigger that created all the drama openly admits he's an autistic tard
lol
3f5934 No.16669581
>>16669480
He got BTFO for getting caught red handed asking his faggy friends to flood his posts with upboats. Everyone sane can see he and his SJW friends are doing this in incredibly bad faith.
412998 No.16669717
>>16669323
Oh I remember those cutout ship experiments. Didn't know you were the space gondola and the star trek simulacra dude. Cool beans.
412998 No.16669722
>>16669480
>Let's not debate terms
>I prefer these terms
In the same paragraph…
f1cb68 No.16669738
>>16668142
>looked up the person
It seems to be a mentally ill dick-chopper. What a fucking surprise.
3370f5 No.16669753
>>16669480
>gitlab activity
>scroll down
>adding the cock to a GNOME project
>scroll down
>adding the cock to another GNOME project
I wonder how long until they try to use that as justification to have a GNOME-wide cock, because "so many projects have been super accepting of it, it's already widely used, why not just ratify it as a global document, it'd be really inconsiderate not to".
17ac89 No.16669795
>>16669480
>>I'm autistic
>lived with a bunch of autists for a few years
>one of the most common sentences in the house was "stop acting so autistic you retard"
It's amazing how these idiots always assume that just because their feelings get hurt over the use of a fucking word, everyone must hate it and it should be banned.
c7a185 No.16670302
>>16669480
OH FUCK! I can't believe I recognize that user. He's a nice guy. The issue is that he's with a bad crowd. He frequently talks with delusional trannies on Mastodon (Think ResetEra, but 10x the lunacy) and often parrots their batshit insane views.
If he's with a better chill group, then he'll become a better person. People need to ward him away from that crowd first.
998efb No.16670503
>>16670302
Maybe you should be hanging out with some more "nice guy"'s like your subhuman friend instead of posting here you delusional retard. Go be a faggot somewhere else.
9f974b No.16670603
Reminder to any Godotfags here that they're holding the anonymous community survey right now.
https://docs.google.com/forms/d/e/1FAIpQLSd1FKIWcRDil70cV1hk1wLuRJS9jeVAZuiGUSyiEmBOQywHcw/viewform
b1fa83 No.16670671
41cd50 No.16670694
>>16670613
>5 weeks left
What do you think?
385b15 No.16670842
>>16669471
Suppume I should have been more clear there, it's more about doing music before assets. It's in a placeholder state regarding assets, music and sound end up being my biggest worry through all that so I figure I'll save myself some stress later on.
f6169a No.16671055
>>16670842
Working on the sound before you work on other assets sounds perfectly fine.
b3b46c No.16671069
>remember someone talked here about an online conference two threads ago
>go look it up since it actually happened now
>all the videos, both youtube and their own website, are down
>googling the name of the conferences fills results with articles shilling rami's name
What a fucking joke.
2e274a No.16671187
>>16670613
like 25% the way there on my demo, how long is there left to demo day?
b3b46c No.16671194
>>16671187
It's on hitler day, so a bit less than 5 weeks.
13885c No.16671491
>mfw autistic and doing some really esoteric mess of arrays and gotos just to avoid recursion
Someone tell me recursive function calls are a-okay
b3527a No.16671518
>>16671491
anon what the fuck are you doing?
dc7c00 No.16671529
>>16671491
>Someone tell me recursive function calls are a-okay
they are super A-OK, especially when dealing with hierarchical structures
2b6f45 No.16671536
>>16671491
as long as you've got a clearly defined exit condition, recursion is perfectly fine to use, and sometimes it's easier to read than a bunch of nested loops if you're doing what i think you're doing
70a140 No.16671538
>>16671491
why the hell wouldn't they be?
13885c No.16671564
>>16671518
>>16671538
I have PTSD from running into recursion overflow in some world generation thing and having to rewrite that entire system.
This wasn't that complicated before but I'm adding significant improvements and it suddenly became a lot less straightforward.
f6169a No.16671602
>>16671491
Recursion is awesome. If you are traversing something like a tree data structure recursive functions should be your first choice.
https://en.wikipedia.org/wiki/Tree_traversal
t. lisp programmer
dc7c00 No.16671684
>>16671538
Cache misses. Which is why it's almost impossible to use octrees in Unity's ECS.
Supposedly, cache misses are the biggest performance bottlenecks nowadays, thanks to everyone using OOP.
Functions that access the memory linearly can deploy some tricks to avoid most if not all cache misses, but if you do any random access (which recursive will inevitably do), there's a high chance of a cache miss
2e274a No.16671686
How much players could godot handle for a 3D game?
f6169a No.16671767
b1565e No.16671841
>>16671686
As many as you want, it just tanks in performance whenever you use multiple shaders and materials. It's only limited in maximum lights as it's a deferred renderer.
f36ef9 No.16671857
>>16671684
>recursive = random access = cache miss
Not really.
a93cd6 No.16671896
>>16671841
>It's only limited in maximum lights as it's a deferred renderer.
How does lighting interact with deferred rendering, so as to create a limit?
52c039 No.16672637
>>16671896
It isn't a hard limit,but rather an issue of frame timing.
To simplify it deferred rendering has a runtime of (Pixels on screen x Amount of light sources)
Which is way better then most other methods but still means that adding another light is similar to doubling resolution.
Eventually you will just become unable to catch up to your frames.
8808e2 No.16672663
>>16671686
Multiplayer hasn't really been tested, but theoretically is alright as long as you optimize it.
8808e2 No.16672666
>>16671491
Recursion is why lisp hasn't been relevant since the 70's and why every scheme iteration is either built into C or Java like Racket and Clojure, respectively.
9f974b No.16672668
>>16671841
>>16671896
>>16672637
Godot uses forward rendering, faggot.
52c039 No.16672680
>>16672668
I didn't mention Godot,fag.The question was about how deferred lightning is affected by the number of lights in a scene.
412998 No.16672939
>>16672668
>>16672637
Is there any reason why engines would prefer forward rendering? Multiple separate passes sound exciting to me, and more versatile especially for post-processing effects. From what I'm reading, deferred lighting (an elaboration of DR) solves the possible cons of DR. Am I missing something?
9ce8be No.16672944
>>16666818
Game engines are the skeleton and organs of games. Everything else is just a mod / level pack and added resource.
41cd50 No.16673009
>>16672939
The big issues are memory and transparency. Deferred lighting alleviates the memory issue partially but you still have to do fucky workarounds for transparency. Games that really need transparency tend to go with Forward+ these days from what I know.
a93cd6 No.16673016
>>16673009
>>16672939
>>16672668
>>16672637
So then how does forward+ rendering work?
41cd50 No.16673034
>>16673016
It's nothing special, you just introduce light culling like you would for a deferred renderer. Research seems to have stopped at clustered light culling (https://www.researchgate.net/publication/289301155_Clustered_deferred_and_forward_shading) but I think it's still relevant.
c86083 No.16673166
>>16670613
Not yet, but it absolutely has to be ready by 08/08. Hard deadline.
>>16672637
>Which is way better then most other methods but still means that adding another light is similar to doubling resolution.
Small mistake you made there. It's not similar at all to doubling the resolution. In fact, it's A LOT better than that. Sure, if you had one light and add a second, then it doubles. But if you add a third, you don't double again. Deferred does lighting in linear time or O(n). Doubling every time you add a light would be exponential or O(2^n) which would be so much worse than forward.
52c039 No.16673253
>>16673166
> Doubling every time you add a light would be exponential or O(2^n) which would be so much worse
My apologies,the sleep deprivation is starting to get to me
c86083 No.16673278
>>16673253
>sleep deprivation
What's it with amateur devs and fucked up sleeping schedules anyway?
2e274a No.16673297
>>16671841
>>16671767
>>16672663
Thanks, couldnt really find any solid info on multiplayer for godot
d9a133 No.16673312
>>16670613
the noose is still loose, right?
The method of jumping-for-a-few-minutes-at-a-time-and-trying-to-fix-and-hack-in-what-I-can didn't quite work for the item name display. Too much spaghetti. I think this will get a total rewrite for timotei. Here are some of the recordings.
683259 No.16673325
>>16671491
One thing I do remember after reading K&R is how C functions work. The return address and calling parameters are pushed onto the stack. Any variables created in the function that aren't explicitly allocated on the heap are (if you're lucky) in data registers or allocated from the stack (the compiler figures this out and plans for it when compiling).
When you recursively enter a function, you do so before returning from the old function. As you continue to recursively call functions, you continuously use up more of the stack without calling return.
Obviously, there is a practical limit to the depth of recursion you can use, based on the size of the stack you have. If you are recursively processing a dynamic data structures you need to determine what your maximum level of recursion depth could be and size your stack accordingly. If not, your program WILL crash.
683259 No.16673334
>>16672663
Is everyone using the improved Godot DAE exporter for Blender? I tried using 2 different branches of their Godot Scene exporter for Blender but both were pretty badly broken. They don't even bother to mention what version of Blender they developed/tested for in their readme, so my thinking is that they really don't give a shit about actually making it useful.
764701 No.16673410
>>16667035
I was a smug engine dev like you, until I realized that game dev or modding will improve your engine. You need to figure out what you want in order to remain focused, otherwise you'll be cloning other old engines with obsolete practices.
805a80 No.16673480
>>16669398
On the chance this is an honest mistake, "ganbare" is used when referring to yourself. "Ganbatte" is for another.
f37169 No.16673524
>>16673480
No, it isn't. Ganbare is just much more direct (and by extension ruder) than ganbatte.
a851b5 No.16673544
>>16672944 (checked)
If that was the case then a lot more games would be modifiable by your definition which is do not, where is the evidence that supports your theory?
412998 No.16673557
>>16673544
Game engines being the infrastructure is self-evident. The game being a mod is inaccurate, but anon was making a point so exaggeration is fine.The modifiable part is an assumption on your part and it depends on how the engine integrates the game built on it.
a93cd6 No.16674231
>>16673524
>>16673480
>I can't learn japanese
a93cd6 No.16678427
What's the preferred tool for spriting? Is Aseprite still the gold standard?
Specifically, I know the SNES uses 15-bit colors, or has 65,536 valid colors. This is too larger to be indexed. However, Aseprite uses RGB color mode which is 16 million colors. Is there a way to clamp or limit Aseprite to a 15 bit mode?
I already made an image to select colors from, but this is cumbersome and I can't visualize color ramps very well using this sort of display
abd779 No.16678605
Attempt at a hacking game is now functional. "Fixed" a lot of shitty code and made four levels.
8566ab No.16678615
>>16678605
nice
tfw I never got the E.Y.E. hacking game
abd779 No.16678647
>>16678605
https://files.catbox.moe/j83dy2.7z
link
>>16678615
It isn't the best minigame when being attacked from outside but has fun consequences
8566ab No.16678662
>>16678647
>wrong font
TRIGGERED
a93cd6 No.16678677
Since I started my engine over (it's better now), I figured I should remake some placeholder sprites so I can focus on the programming
2e274a No.16678678
>>16678615
>I never got the E.Y.E. hacking game
All you do is spam mask to take away their attack power then boost up your own, they cant do shit with 0 attack so they end up killing their shield, you then just attack them untill they die
e30752 No.16678687
>>16678677
>Since I started my engine over (it's better now)
d9a133 No.16678744
The music I was listening to just fits this little bug
send help
49558a No.16678956
>>16678744
right now looking at loot seems like a mess, i recommend making those white highlights on the item be of the same color as the rarity they have, also did you fix the bug where you can get black rarity loot?
15df98 No.16679105
>>16679095
Nice inflation pump, really gives "blow it up your ass" new meaning.
b3527a No.16679122
>>16679095
yer shoota needz mor gubbinz an dakka ya git.
cc40c4 No.16679139
>>16679095
We all start somewhere.
Speaking of guns. Does anyone who has Subdivision Surface Modelling experience know how I can unfuck this? I just want the thing to stick out of it without any pinching but don't really know how.
49558a No.16679177
>>16679095
nice ketchup dispenser very nice
04b9d9 No.16679185
>>16679095
I'm not a /k/ommando, but I looked at some photo references of basic rifles you were basing them off of. The magazine part (or whatever the circled area is called) looks off because of the sharp angle, most magazines have curved shapes like in the 2nd pic.
As for the design, I can't really say until I've seen the textures in place. But the end part (the part where the bullets come out) concerns me because of how unfitting it is compared to the overall design silhouette/shapes. The cylinder opening feels too big, and making it dead center is too off-putting. Also the huge cylinder the connects the end hole feels 'unsatisfying' because of the thin handles it has- I can't really pin point it because of my lack of experience though. Learning how to balance the shapes/parts of the guns would help. I'm not sure how things like rule of thirds or silhouettes is used for designing weapons or other objects- but its probably out there.
But good job on finishing the model- I can't even bring myself to finish a simple 3d object yet, its better than what I can do in a long run.
7a951b No.16679230
>>16671491
This guy (>>16673325) is basically correct, and his post explains the potential negatives of recursion. The main thing to think about is how likely it is that you will run in to these problems.
Ask yourself:
>What will be your maximum recursion depth?
>How performance critical is this part of the code?
>What will I gain from a non-recursive version?
If you see a serious potential problem you can solve, then do it. Chances are, it is going to be a bit ugly, but gotos and arrays are probably a mistake. If you make your own stack data structure you can usually simulate a recursive function and also have more control over its execution. All-in-all it is hard to say if you are being retarded. If you give more context we might be able to find a better solution.
412998 No.16679244
>>16679139
Arrimus 3D makes useful videos on modeling and basically only talks about unfucking topology. Recommend you watch anything from him.
d9a133 No.16679361
>>16678956
>right now looking at loot seems like a mess
they don't overlap anymore though
>making those white highlights on the item be of the same color as the rarity they have
I'll look into doctard's outlines. with the shader setup I have now this will be hard to do
>did you fix the bug where you can get black rarity loot
yeah, at last we can get golden items. It wasn't a bug as rare as I thought it was.
cc40c4 No.16679420
>>16679244
Thanks, I will check that out.
412998 No.16679430
>>16679361
Oh hey dude. That dungeon generator is coming up.
392541 No.16679679
>>16678744
beautiful
>>16679139
brainlet coming through you could try marking the seam as sharp and edge splitting before subdividing
d84e6a No.16679698
>>16678427
I would like to know too.
cc40c4 No.16679731
>>16679679
Doesn't work. The whole point of Subsurf modelling is that it's smoothed out. It actually does look ok from the bottom except for a small crease which is barely noticeable but the problem is at the top.
cc40c4 No.16679822
>>16679679
Fuck it, after asking some friends they told me to do this and don't care about details. Nobody is gonna see it that close up anyway.
2681fe No.16679834
>>16679731
>>16679822
Is that even visible in-game ?
If you have to put the camera into the exact spot you have in those images then id also call it a non-issue.
cc40c4 No.16679848
>>16679834
>Is that even visible in-game ?
No, I'm just autistic.
2681fe No.16679939
>>16679848
Yeah i know that feeling. You want every single detail to look properly even when working on something unimportant.
That really messes with my productivity sometimes.
I always just try to think of some of the weapons in even in AAA games that seem to be made by people who dont even understand how guns work to snap out of it.
a93cd6 No.16679947
>>16679848
>>16679939
If time isnt an issue, its still a good way ti practice for when it does actually matter
3aaaac No.16680323
Went back to it with a different method and achieved a much better result. At least I learned something new.
505b4d No.16680445
She can take pictures of you now.
26b7c8 No.16680455
>>16680445
What does the picture look like? Does it use your Webcam or something?
392541 No.16680462
Heres some planets and how I made them:
Started with a height map generated using a program called Wilbur which I mapped to a sphere in blender. The map was then baked to a low poly inflated cube to minimise texture distortion, especially near the poles. Using the sphere and some basic 3D noise I generated a ‘biome’ map. I also used a subsurf and a displacement modifier to bake some ambient occlusion. 2nd pic is final combined image, red for height, green for biome, blue for ambient occlusion. I also made a normal map from the height map.
In engine the planet is made from three spheres, the terrain, clouds and atmosphere. In the terrain shader, the temperature is calculated using a variable sent to the shader combined with the dot product of the position of the surface and the rotation vector of the planet (assumed to be perpendicular to the sun). The relative humidity is calculated using the biome map. Both of these values, temp and humidity, are altered by the height at that point. Using these, the terrain colour is defined by another texture lookup. 3rd pic shows the planet biomes which I tried to model after real world biomes (desert, savannahs, steppes, broadleaf forests etc. There are 18 biomes ripped straight from wikipedia). The bright colours on the planets are the ‘life’ on that planet (trees, grass, whatever). Each planets ‘life’ has its own quantity, hue and desired temperature that it thrives at. The ocean is defined by a water level variable which is sent to the shader, the colour of the ocean is defined by the planet's atmosphere. All of this is combined with some atmospheric variables and sent through to the lighting function for final mixing and to slap some specularity onto the water.
The cloud layer uses 3D simplex noise sliding through the fourth dimension for animation. The input is distorted by sending the function through itself a few times which makes some nice swirls. The clouds need some work though, when sped up the animation looks more like dropping rocks into a pond rather than looking like flowing water.
The atmosphere is just a transparent bubble with some fading on it. I made the edge between night and day invert and then pitch towards red slightly when the atmosphere is thick enough to show off sunsets. Of course the inverting doesn't happen irl but I thought it looked cool.
The spheres that make the planets are actually incredibly low poly but Im using some voodoo magic to make the silhouette really smooth.
The colours aren’t true to life, especially the ‘life’ on the planets, but I think it’s a nice mix of reality and fantasy.
If you read all that you might be wondering what, if any, of this has to do with the gameplay. It doesn’t. thanks for reading my blogpost
a93cd6 No.16680480
>>16680462
It's nice to read technical stuff like this though, so I can have loose ideas how I'd do something similar on my own one day.
505b4d No.16680483
>>16680455
Its just your floating hands since you dont have a player model yet.
a93cd6 No.16680491
>>16680455
>>16680483
Your game should take a photo through the webcam and share it with FBI-kun
26b7c8 No.16680493
>>16680483
That's what I was wondering about since I remember there only being hands. Will there be some ability to make a custom player character, or will it just be an as-generic-as-possible bald guy with no real features, like an anon or something?
505b4d No.16680520
>>16680493
Havent given any thought to that yet.
683259 No.16680548
>>16680462
That's really cool. I'd be curious to hear how you made the silhouette smooth. The final result looks good. It's always interesting to hear about these types of technical experiments.
a93cd6 No.16680552
>>16680462
Actually, with that biome map, it looks like there was a voronoi diagram involved. Or am I mistaken?
4ff135 No.16680787
YouTube embed. Click thumbnail to play.
>>16676743
Preview of demo:
https://anubitek.itch.io/anubitek-v-001-benchmark-demo
Check the readme
A: Suicide/Restart
S: (Hold) Run
D: Jump
F: Activate (there is nothing to activate in demo)
Plus or Minus (+, -): Hotkeys 1 and 2
Arrow keys: Move/Move UI
Escape: Main Menu
Tilde (`) (~): Open Terminal
Known bugs:
Not a bug, you may fall out of map, not every mesh has collision and each mesh that has collision is a separate collision object.. I plan to reduce collision objects total and elongate them to account for the collision of multiple meshes.
Holding run and resetting may disable run, this is a controller script issue.
Key input for Terminal may be disabled suddenly. Fixed by starting new game from Main Menu option.
Suicide button restarts game if held. Controller issue. Also Terminal open toggle suicides if using a button it shouldn't.
8808e2 No.16680977
>>16680787
I really like the sprite billboard character in 3D. It's pain rigging and creating shit in blender so this is super cool looking.
8566ab No.16681064
>>16680787
nice to finally get a feel for it. I think you should still go with 3d movement instead of a side-scroller. After all your vids that's what I expected.
You might wanna look into using Corel Draw or Adobe InDesign and try making vector graphics for the character instead of scanning lineart.
The gib was pretty cool
4ff135 No.16681239
>>16680977
I really like billboarded sprites, it is sad to see it restricted to Doom wads.
>>16681064
3D movement is planned for the next room. I plan to make a room with a pit in the center, above the pit a moving platform on a track with security cameras at each stop on the track. If the player can press 4 buttons before security cameras register the player, a door opens on the other side of the pit. If the player is seen, they fall into the pit. After that is the stealth/RPG combat room.
02789a No.16681289
progress on some Source mapping!!
a93cd6 No.16681290
>>16681239
>>16681239
>I really like billboarded sprites
Not Doom, but for me, it was Might and Magic 7: For Blood and Honor. I've always liked that style of sprites, too. Oh, and Hexen.
But, I am shit when it comes to 3D, so I haven't attempted it in a long long time, I always figured it'd be a lot of effort to make one animated sprite. But maybe if I ever do get to 3D games again, I'll do that
4ff135 No.16681328
YouTube embed. Click thumbnail to play.
>>16681290
Mine has to be Xenogears, if not Doom.
683259 No.16682771
>>16680787
I really like the UI and all of the features you've already put in. Looks like it's coming along nicely.
2603b1 No.16683321
Shmup anon here,
Last time I fixed the bone location for dynamic animation, when I wanted to add more turrets to be controlled and it didn't work.
Turns out I was modelling wrong and took some notes for next time: 1 mesh (set of vertices) <=> 1 armature and then set multiple bones
I was putting 1 armature per turret and this has to be managed differently, but I feel it's the wrong way so I'm leaving at that. I was also thinking about switching weapons models for the player but I feel it's slightly tricky since I have to also add some additional model management, not impossible to do, but I'll put it on a "maybe I'll do it at the end", or reserve this for if I ever do an Armored Core like game.
So that's done, continuing making boss script and fixing a few bugs, and a few usability problems since I need to have at some point syncing between animated node and weapon orientation.
At least I feel my code base was structured well enough since a few workaround I did was deprecated just by arranging my data structure a bit, it's working in a more general way.
Anyway, currently on improving script while working on boss behavior.
26b7c8 No.16683337
Part of me dreads getting something to work, because this means I have to move on to the next big feature and in most cases, I have no fucking idea where to even begin with those.
Anyway, here's a proto-camera, currently only horizontal. Took me way too fucking long to get it to center around the "character" properly when rotating, made me feel like a fucking retard when I figured it out.
8808e2 No.16683701
Is this a good UV unwrap? This really isn't my forte so I don't know. This isn't my model so the topology is really bad.
a93cd6 No.16683704
>>16683337
How many vertices can you throw at it before it dips below 60 fps?
26b7c8 No.16683827
>>16683704
On my machine? 120k tris makes it sit right above 60. The framerate dropped in half because of recording, it's usually around 4k with 250 cubes, 12 tris each, which is the scene rendered there. I'm not doing culling of any kind yet because I want to iron out and optimize draw calls as hard as I can first, this is a good way to test that.
a93cd6 No.16683838
>>16683827
>120k tris makes it sit right above 60
My machine isn't shitty, but I feel like some combination of what I'm doing to generate my 2D quads and using C# and SFML instead of writing shit directly to the graphics devices in C++ is going to impact me significantly
26b7c8 No.16684076
>>16683838
I'm trying to make mine compatible with as old a OpenGL version as possible, and so far, 1.2 (or possibly 1.1, can't verify yet) is what I'm with.
I don't do anything fancy, really. It's just very simple stuff.
glPushMatrix, glTranslatef, gluLookAt to set the view (which had next to no performance impact), followed by the actual rendering, which is just a bit of
glBindTexture, glBegin(GL_TRIANGLES); glTexCoord2d, glVertex3f
What really fucked with me at first was how I did calculations. My very first script for drawing vertices did the transformations (scaling, rotation, movement and so on) to every vertex, meaning every calculation was done several times over. I now do the calculations first, so it knows what to multiply every X, Y and Z vertex by, and only multiply the vertex itself by that.
When rendering 1000 cubes (12k tris), it raised my performance from 30 to 600 fps. I could get it even faster with a batch-draw function, where I calculate a triangle and draw it in all the places it needs to be, but again, I'm trying to optimize draw calls first and foremost, that kind of stuff comes later.
I also precalculate the texture coordinates, just to squeeze as much out of it as possible. I can't really speak for what's doing it for you. I'm just sticking to OpenGL, GLU, GLEW, GLFW.
a851b5 No.16684164
>>16683337
>Koshka Palpha 1.5
What kind of game are you planning to make?
26b7c8 No.16684413
>>16684164
It's not a name. That stands for Koshka Engine Pre-alpha. For the game itself, it's a 3d platformer about lolis
7d2a95 No.16684781
Got a basic minimap working but framerate took a beating.
6661bb No.16684806
>>16669323
>Gondola Cameo
Day one purchase.
038ed4 No.16685963
My Mkb42/CETME abomination is moving forward nicely.
1d3727 No.16685986
>>16680462
neat shit. Just a guess: Is the voodoo magic just doing a sdf sphere inside the shader?
3f5934 No.16686609
>>16684781
Why should something as simple as a minimap affect framerate noticeably? Which framework/engine are you using?
a93cd6 No.16686620
>>16684781
>>16686609
inb4 he's doing something incredibly fucking stupid, like treating the minimap as a render target and the main window as a render target, and swapping between them for each tile
a93cd6 No.16686832
My pace is glacial, it feels like I did a bi-weekly quick pass to check my existing codebase and implement a dozen new lines in that time. However, I set aside a week and a strict, thorough comb through my stuff and found a few sneaky bugs
df3daf No.16687336
I want to get into godot and gaming dev generally. I want to make a 2D chess game for the beginning.
looking into these demo project but don't understand shit
https://github.com/godotengine/godot-demo-projects/tree/master/2d
any beginner tips or tutorials?
883caa No.16687343
90fc79 No.16687352
>>16687336
Can't help with Godot specifically, but can give general gamedev tips. Chess might be difficult to start, but a reasonable goal. Start with Pong and other 1st/2nd gen era games, then work up to chess. Hardest part of gamedev (and programming is general) is managing complexity, so start as simple as possible.
17ac89 No.16687364
>>16687336
Beginner tip: don't try to make a chess AI, just make it 2 player. AI is way too difficult for a first project.
You probably want a manager object with a 2D array to keep track of piece positions, and 6 individual piece objects which define an array of offsets for movements (like [0, +1] for pawn or [-1,+2] for knight, plus being able to substitute a valu like -1 for infinite movement like the queen)
4abcc8 No.16687371
>>16687336
>any beginner tips.
Literally just start making a game, experience is the best teacher.
>tutorials?
you can find a crap load of programming and drawing tutorials all over the internet.
df3daf No.16687384
>>16687371
I rather meant Godot specific 2d tutorials
4abcc8 No.16687390
YouTube embed. Click thumbnail to play.
>>16687384
again you can find a ton of that stuff on the internet. You just need to search for it on a search engine that doesnt censor search results.
df3daf No.16687395
HookTube embed. Click on thumbnail to play.
>>16687336
just found this which fits perfectly to the demo project
damn I just had to search a bit, I feel stupid now
412998 No.16687487
>>16687336
>any beginner tips?
Yeah, don't mock my dude Ulillillia. He's a model of overcoming difficulty.
56dedd No.16687498
>>16687395
>I feel stupid now
Then you're on the right path. If you go a week without feeling retarded, you are probably missing something important.
df3daf No.16687516
>>16687498
I'm a software developer so I feel stupid 24/7
26b7c8 No.16687538
>>16687498
>If you go a week without feeling retarded, you are probably missing something important.
dc7c00 No.16687604
>>16687336
>I want to make a 2D chess game for the beginning
You will get nowhere with this mindset
You gotta try to make the biggest ultimate supreme VRMMO with professional voice acting :^)
6f482c No.16687680
>>16667035
You can really make bank in a big company being an engine dev. But I dare you to ever release a good game.
1f2607 No.16687927
>>16686609
no engine, i'm winging it from scratch starting at 0 experience so it's not the most efficient.. I was wrong the mm wasn't the reason for the frame drop.
>>16686620
no_
a93cd6 No.16688291
>>16687927
Then how the fuck should it slow down? You're at worst, doubling the number of draw calls, and even then it should be negligible
26b7c8 No.16688811
The "player" now moves based the directions the camera's looking, rather than the tank-esque way that's fixed on the X and Z axes. The cube also faces in the direction you're moving, meaning that I can now also rotate 3d models. I thought I knew trigonometry well enough, but what wizardry atan2 actually is, I doubt I'll ever understand.
Implemented extra checks for controllers too, since I finally have a use for them. The game swaps between the currently active device automatically, and I have one command that retrieves the required input from whatever said active device is. Means that I can punch in one value and the engine takes care of the rest, so that's neat.
In some cases, that's not really possible, however. For camera rotation, for example, the camera rotates based on how much the mouse moved since the last frame, whereas with a gamepad, it rotates based on how much the stick is tilted at all times. For cases where the implementations have to be so different, I just have to do a manual check.
Now, either rotating the camera vertically is going to be much easier than I think, or much harder. After that, loading in actual .obj models. That shouldn't be too too hard.
26b7c8 No.16688820
Here's some videos of things not working.
1d3727 No.16688857
>>16688811
it's just arc tangent split into 2 args. atan2(y, x) is the same as atan(y/x)
you're just giving it a ratio, and it just gives you the angle that would give that ratio if you plug it into plain old tan
c43298 No.16689268
>>16687336
Reference to useful GDScript functions:
file_exists( var)
get_tree().root
get_node( var)
load( var)
preload( var)
instance()
new()
add_child( var)
remove_child( var)
get_tree.get_nodes_in_group( var)
front()
back()
pop_front()
pop_back()
"if node is Spatial:"
> node is a variable referring to a node instance
connect()
set_process( bool)
set_process_input( bool)
set_physics_process( bool)
func _ready()
func _process( delta)
func _input( event)
func _physics_process( delta)
yield( get_tree(), "idle_frame")
queue_free()
free()
weakref( var)
get_ref()
typeof( var)
a546d8 No.16689741
I finished up a KS23 model I've been working on
4931fd No.16689760
55821c No.16689878
d9a133 No.16691196
>>16689956
>>16690056
blender game engine?
b3b46c No.16691210
>>16691196
That was removed in blender 2.80.
b69db5 No.16691312
is it worth putting grass in my game if it nearly tripples my polycount?
too little and it's obviously out of place
enough to look normal and framerate dips to 40
dcc487 No.16691318
>>16691312
Have u tryed making beter grass?
b69db5 No.16691324
>>16691318
it's just the density though
the grass could literally be a green rectangle and i'd still have the same issue
13885c No.16691325
>>16691312
If it doesn't run at 144 FPS then it's shit. Anything you can add within that, feel free to.
2e274a No.16691326
>>16691312
no, dont sacrafice performance for grass of all things.
26b7c8 No.16691337
>>16691312
You can always try making it a flat textured quad, or perhaps 3 tris to make it more animated. Something to where it doesn't have to be as detailed and resource-intensive.
4931fd No.16691352
YouTube embed. Click thumbnail to play.
>>16691312
The grass should be textured planes with many blades per plan, organized in a way that hides their true nature.
a93cd6 No.16691358
>>16691337
>Every grass blade is a quad
>The bottom vertices are placed manually
>The top vertices are billboarded
dc7c00 No.16691626
>>16691352
baby grass for baby developers
>>16691358
>Every grass blade is a quad
I literally see no problem with that
You can even cut it at different heights and watch as it grows back
a93cd6 No.16691635
>>16691626
Oh no, the quad part is fine, the shitpost was the semi-billboarding
683259 No.16691653
>>16691312
For grass, use hardware instancing
https://learnopengl.com/Advanced-OpenGL/Instancing
>Say you have a scene where you're drawing a lot of models where most of these models contain the same set of vertex data, but with different world transformations. Think of a scene filled with grass leaves: each grass leave is a small model consisting of only a few triangles. You'll probably want to draw quite a few of them and your scene might end up with thousands or maybe tens of thousands of grass leaves that you need to render each frame.
ac1eab No.16691869
How's that procrastination treating ya?
a93cd6 No.16691941
>>16691869
3 weeks and 5 days until demo day, lots of time left!
26b7c8 No.16692081
>>16691653
Doesn't seem like instancing will play nice (or work at all, really) with older version of OpenGL, will it? It's a massive pain in the ass, every tutorial is written with at least GL 3 in mind, so most are borderline useless to me.
I suppose I have plans for batch draw functions already, so I'll be fine either way, but better optimization is always a great thing.
56dedd No.16692169
>>16692081
If you are making your own game engine, why are you limiting yourself to an outdated version of OpenGL? Too far along and don't want to change now, or do you have specific hardware requirements that aren't compatible with OpenGL3?
26b7c8 No.16692193
>>16692169
I'm making a game styled after late 90s-early 00s 3D platformers, and there is no reason in my mind why such a game should be unable to run on hardware at least close to that time. Perhaps not 2000 exactly, but I have a test rig from 2004 with some parts from as early 2002, if I recall correctly.
The way I see it, if it will only run on modern hardware, then it might as well be running on fucking Unity or whatever other shit engines are out there. You can call it a personal challenge, I suppose.
3e9c06 No.16692256
>>16692193
>OpenGL2
Does that mean it'll compile on a Raspberry Pi? I was tossing around some ideas for an RTS or 3d action RPG using n64-esque graphics on the Pi, since I love low-poly stuff and the Pi. Something functionally fluid (full 60fps, smooth action) but looking like a game from the 90s.
56dedd No.16692269
>>16692193
I see nothing wrong with aiming for old hardware. Then again, I'm the kind of retarded fuck who would rather learn Motorola 68000 ASM than use C on the Genesis. Will be nice to see an indie game that isn't pixel art graphics that requires Win10 and 8GBs of RAM to play.
26b7c8 No.16692326
>>16692256
OpenGL 1.2, actually. I have absolutely no experience with Pis or other microcomputers so I really couldn't tell you. It's something I can certainly look into, as I will be making Linux and Mac versions as well as Windows.
>>16692269
Wouldn't running an "actual" language, if you want to call it that, on one of those old consoles cost a lot in terms of performance, or would a compiler take care of most of that?
d17ec5 No.16692458
>use a goto statement within an if/else branch
>performance goes to absolute shit
what the fug
56dedd No.16692503
>>16692326
Probably, but the C compiler/SDK for Genesis is pretty damn good. Unless you are pushing the limits of the console, ASM isn't really needed for Genesis programming. I just went that route since I prefer ASM to actual languages. I'm a control freak and only ASM gives me that direct hardware access control.
26b7c8 No.16692535
>>16692503
From what little I know of ASM (mostly relating to the NES), that's the route I'd go too if I was making a console game. Shit seems fascinating, if complicated.
fb247c No.16692731
>>16692503
Aren't you the guy porting Undertale to the Genesis as a shitpost?
a93cd6 No.16692744
>>16692458
Is this within a tight loop? If so, it might fuck with the compiler's ability to auto optimize things
a93cd6 No.16692882
My engine allows only one SFML.Window object at a time. I cannot think of a single situation where I'd want to have more than one OS-level window for a game. I've seen really shitty shareware games from the early 2000s that did, though.
This isn't something I should put on a list for a future todo is it?
5d2ed1 No.16692889
>>16692458
Might be blowing the branch predictor. Or maybe your code is just wrong now, gotos are easy to fuck up.
13885c No.16692894
>>16692882
Might as well add support for it while you're early in enginedev.
b3b46c No.16692899
>>16692882
Ignore what >>16692894 says and keep your scope reasonable. It introduces a whole bunch of complexity in regards to sharing resources, doing efficient draws, vsync, etc..
As for a situation where you would want it; think of editing tools. For those its very convenient to have multiple windows that you can use your OS hotkeys to switch between.
a93cd6 No.16692909
>>16692899
>>16692894
Well, within a game context, I can't think of a reasonable use, unless you're trying to be one of those meta memefag 2deep4u style games.
If I'm creating an editor for my game, it would either be inline to the game proper (eg using only one window), or else an entirely separate app using normal Windows shit, because as shitty as that is, it's still more robust than any elaborate thing I'd implement though I wouldn't mind making a simple UI stack for my game projects, but that's another project down the line
13885c No.16692964
>>16692899
I don't know about vsync but how is sharing resources hard? And if you're concerned, you could just design it so that with 1 window it's the same as now, but with more windows it gets less efficient. At least the option will be there.
>>16692909
>unless you're trying to be one of those meta memefag 2deep4u style games
Maybe some day you'll get a cool idea involving multiple windows and want to try it. Or maybe you want to do something that isn't a game, not that unusual for enginedevs I think.
a93cd6 No.16692978
>>16692964
Well with SFML its just a light media wrapper over OpenGL for simple 2D games; for more elaborate projects, I'd probably want to work with it directly because every layer of abstraction kills performance. For example, I'd never be able to make something like Sigma anon with my current setup.
But for what it's worth, it wouldnt be too much effort to enable multiple windows in this case, most of the heavy lifting is done by SFML or thr client code
998efb No.16693040
I have a serious problem in my code, this image shows it but it's hard to explain, basically my bounding boxes which I use to derive portals from are derived from the polygon leaves of my BSP tree, however now that I can compile more complex geometry I have leaves that do not contain any polygons. So the portals are not generated, and so the PVS generation, which uses the portals to build the PVS, now crashes. I have to derive bounding boxes from the planes in the BSP tree, so i'm working on an algorithm for that, it's very inefficient the way I am thinking it up, but that's OK because it's an offline process. It essentially becomes an O((n^3)!) algorithm for determining the smallest possible bounding box (which is the correct one) that involves eliminating planes as long as that makes the bounding box smaller, until the bounding box no longer becomes smaller by eliminating planes. (this is the O(n!) , generating the bounding box is O(n^3) because I have to test every combination of 3 planes for a point intersection) Then add on the time it takes to generate these lists of planes from the BSP tree (which is only an O(2n) at least but obsessively calls the allocation functions)
>>16692326
>>16692256
There are a bunch of ways to do this, you'd really have to write the setup for grass several times and in several ways to target all generations of hardware though. In OpenGL 1.1 you can just make basic billboard grass, it's going to be slower inherently though, because plain OpenGL 1.1 is so barren, but it shouldn't be that bad… you can batch "patches" of grass and speed this up with VBO's, if you don't want the grass to be very interactive (but a basic level of interactivity can be achieved by using a matrix to "shear" the model when the player walks over patches of grass)
In later cards, like 1999-2003 you can use the ARB assembly language shaders to achieve per-blade interactivity, with the vertex shader, it should be doable, past that you have OpenGL 2.0 and GLSL shaders which are kind of self explanatory,
In OpenGL 3.0 instanced rendering is useful and should save memory, but largely remain almost the same, but with anything from OpenGL 3.2 and up you could generate the grass itself in a geometry shader. There's no need for an actual model of the grass at all. The vertex format can no longer describe an actual model but rather the position of the grass and other things to construct a matrix describing it, that you can then feed into the geo shader (and certain info related to the player can be derived in the vertex shader, so you can leave it out of the format)
Beyond that there are tessellation shaders and stuff now in OpenGL 4.0 and Vulkan, you could do a whole lot of things with that, and that has got to be the most modern way but I don't understand enough about tessellation yet to know how to use it.
So, there are really 6 ways and probably a lot more to do this, it just depends on what hardware you're the most interested in to see what you want to implement, really
>>16692978
I'm just using a simple 1 window setup right now. I think you'd be able to do the same thing, but the problem is SFML does something weird behind the scenes setting up OpenGL that gave me issues when I used it once, but I don't know what you're up too. You've probably got it all working.
b69db5 No.16693049
So what do you do about health visualization?
i've got healthbars and i can't decide when/how i want to show them
13885c No.16693053
>>16693049
I think you should reconsider if gamedev is what you should be doing.
b69db5 No.16693058
>>16693053
i dont even like video games
998efb No.16693230
>>16693040
https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_pixel_buffer_object.txt
Thinking about it you could even use the method they describe: "Render to vertex array" to run an ARB/GLSL fragment shader into a VBO. That would mean you can generate all of the geometry on the GPU…. this is almost as good as a geometry shader… it would be interesting to see the differences between those two methods in hardware.
b3b46c No.16693383
>>16693344
do it faggot I dare you
56dedd No.16693538
>>16692731
No, I've never even played Undertale. I picked up 68k ASM because I wanted to make an RPG-ish version of Outfoxies with robots. Think a 2D version of Armored Core. I got deep enough into it to make it boot on real hardware, and even had it detecting which controllers were plugged in, then I abandoned it to make something people are actually likely to play in Unity. I thought that guy was using the Genesis C SDK?
>>16692535
ASM is fucking awesome. The complexity is two-part. On the one hand, you have to manually do everything you would normally do in a single command in C/C++, meaning you are writing five pages of opcodes to do simple tasks. The other half of the complexity is you need to do all your own memory management down to the byte. You forgot you were using 002000E as a counter? You are proper fucked now mate. The main complexity of programming for an old console like NES or Genesis is needing to keep track of your program cycle by cycle. You only have so many CPU cycles until you are on the next frame, and there are no exemptions. You gotta cram your entire game loop including reading controllers and drawing the screen within the cycle limit. Genesis makes this a bit easier since you can just dump all the data onto the VDP and tell it to handle it, but you still need to make sure you are filling the VDP during the refresh period.
You give up ease of use, quick code, and easier debugging in exchange for absolute control of the console down to the register level. For 90%+ of people looking to make a Genesis game, the C SDK will handle it just fine. For control freaks like me, ASM is the only option.
As a side note, digging out information on the Genesis VDP led me to discover the Genesis was built to accept twice as much VRAM as the console came out with. The VDP actually has registers for dealing with the additional VRAM, and some hackers out there have actually managed to modify a Genesis to have double the VRAM. This is more useless than you can imagine, since the additional VRAM breaks the original memory mapping and makes all Genesis games not work. Only a game programmed to use this additional VRAM would work in that config, and not even the most accurate Genesis emulators bother to emulate the unused VDP registers, meaning you couldn't test without a modded Genesis. Yay for useless info!
683259 No.16693579
>>16692081
No, you're right. I don't know when the instancing extension was added, but certainly after GL2 (I think).
Batching all your grass draws will really help. So that sounds like a good plan.
If you used GL4 you could do it all in a shader, generating the vertex geometry there too. But that's out of the question if you are using older GL.
683259 No.16693591
>>16692964
OpenGL cannot share textures, VBOs, etc. across GL contexts. Each window uses a separate GL context. You also have to be careful calling GL functions - being sure you have the correct context active. You may end up using 2x the VRAM if you need to use all assets between both contexts. I've managed it using GLFW and GLEW but it is a pain and you have to be careful and it's messy.
206d36 No.16694838
>>16694788
How did you do this?
281185 No.16694847
>>16694788
Are you making a shootan game anon?
a192ef No.16694919
>>16694847
It's a stealthan game, I'll nerf the swinging power based on distance from the bottom of the rope and also restrict reel use. I'll throw the unaltered version into a blank project, it definitely has potential for a different kind of game.
>>16694838
It's standard fps movement, expect when you're grappled. If the player is further from the grapple point than the initial grapple distance, I slide their velocity vector along the normal pointing from the player to the grapple point, and move them back in range of the grapple.
f320e3 No.16694942
>>16694788
Physics are pretty wonky. At 20 seconds you come to a corner and just stop for no explicable reason. Then the next big swing at 24-28 seconds from almost a dead stop ends up putting the character higher than their starting point which I think is impossible.
1a99a5 No.16694959
>>16693593
Jesus dude I remember seeing this when I was still in goddam college. What are ya making one wall per year?
392541 No.16695395
>>16680548
>>16685986
The voodoo magic is culling pixels based on how close the normal is to being perpendicular to the view direction. Since normal interpolation isn't perfectly spherical it estimates a perfectly smooth surface using the distance from the pixel to the vertex.
>>16680552
Nope, just did it by hand in what I thought would be the most logical way. On a related note I originally tried using a voronoi diagram for the humidity map but it looked terrible
>>16694788
fantastic
998efb No.16696022
>my recursive function doesn't work
>it has nothing to do with my memory allocation or anything, but a fucking namespace collision the compiler didn't notice for some reason
At least I can use the debugger again. My program was causing the debugger to crash for several months (I forget how long) but now it is able to work correctly, so that's good. Maybe I can even upgrade the compiler on this project to Pelles C 9 without crashing the compiler anymore.
d17ec5 No.16696209
>>16692744
yeah it's in the main loop
>>16692889
i'm using the gotos right but yeah it's definitely the branch prediction, just doing another if/else yields better results
Got to remember that the compiler can only do so much but can also get in the way.
d9a133 No.16696309
>>16694788
>no Tarzan sfx
missed opportunity
I want to rappel into windows with those ropes
26b7c8 No.16696444
Does anyone know if there's a way to track how many faces GL culls with glCullFace? Or more specifically, how many it actually renders after culling? Either way.
b3b46c No.16696844
>>16696444
If you accept inefficiency and just want to count triangles that are facing away from the camera and thus would be culled:
>Disable culling
>Give each triangle its own id
>In fragment shader; read "gl_FrontFacing" to determine whether the triangle is facing the camera
>Write to an SSBO with index[triangle id] that that triangle is front or back facing
>After the draw completes, read SSBO data and count the amount of triangles that are front or back facing.
>Triangles that don't enter rasterization wont be written, so be sure to initialize the SSBO with a third "non-visible" variable.
There's no easy "get triangles culled" function/query. Probably because culling relates to the more complex task scheduling stuff and adding overhead to that is a really bad idea.
a93cd6 No.16696849
>>16696209
Gotos are really great if you're working within nested loops and neat to exit, though.
eb927c No.16696864
>>16696849
You could just return, exit, or break the uppermost while loop instead of GOTO.
I'm not part of the "never ever use GOTOs" party, but loops already are checking to exit some other way. This is like jumping out the window instead of opening the door.
b3b46c No.16696872
>>16696864
He said "nested loops". Sometimes you want to break out of multiple loops in one go, and goto is the best way to do that in most languages.
a93cd6 No.16696880
>>16696864
Not necessarily. If you have a tile grid or something and you're iterating each XY value, and the break condition depends on a tile, you couldn't know any tile values with just one loop.
Pic related is 3 different ways to write nested loops. Let's say it's a performance-critical map generator. Those things can take a while so we want it to be as fast as possible.
The first is awful because it involves three checks to exit, as well as writing a variable (sentinel). The second may be the best, because it has one check and exits immediately. I've used the third method a few times. It depends on what you need to do, and how your other code is set up. Generally way slower because of the indexing math required, but if you store your shit in one big array, rather than multiple grid-like arrays, your code might look like this
(In practice, I'd usually continue to the next tile rather than exiting the loop early, depends on what you're actually doing)
13885c No.16696946
>>16696872
It's amazing that languages still don't let you give arguments to "break" to define how many layers to break out of. For example break(2); Seems like such an obvious feature to me.
a93cd6 No.16696961
Goddamn, SO is so fucking useless
https://stackoverflow.com/questions/682615/how-can-i-get-every-nth-item-from-a-listt
>Just use a LINQ query!
>Involves two static classes
>No just use a for loop
>Yeah but you'd have to duplicate it everywhere, just use (the same length) LINQ query!
eb927c No.16696968
>>16696880
Those nested loops should be in a function, which returns the needed information. When you reach the needed information, just return(x) instead of fucking around with exiting.
And besides, all for loops get compiled to while loops, which get compiled to an if and a goto. Any good compiler will optimize runtime if you work with it, so that exit variable will disappear if you try debugging the optimized version.
a93cd6 No.16696974
>>16696968
>Those nested loops should be in a function, which returns the needed information
Like I said, it depends on what you're doing. I wrote in the mindset of performing an operation on everything, rather than searching for a specific value.
b3b46c No.16696984
>>16696968
Using a goto instead of a separate function is cleaner. It's also the standard solution in practice.
a93cd6 No.16697221
>Asks specific question
>Umm, that won't ever happen though heh heh :)
b3527a No.16697544
I thought everything was working as I had it in fixed function just now with programmable pipeline, but it looks like something is different I just copied the projection matrix from gluPerspective, but the teapots don't look the same. I didn't do any version control so I probably changed something else because it is definitely doing perspective projection. This is the first time I've actually gotten working 3D math in my engine. I've done 2D before because the matrices are easier. I have gotten to this point and given up before, but having a bunch of platform stuff written was actually a motivator to work through the 3D math stuff. I understand it much better now.
998efb No.16697621
>>16697544
https://apitrace.github.io/
Post your apitrace, what matrix operations are you doing? You should just be translating the teapot in front of the view frustum, but it looks like you're translating it up as well
a93cd6 No.16698194
Actual progress post for a change. I finished my a simple pass of my "engine" layer that's build on top of SFML, so now I have about 3 weeks to work on game specific stuff for my game/demo day.
I'm not sure which approach to my game state is better. The first way is to shove all my game data on one monolithic object called GameState, then create specialized Controller objects with methods to modify the state, and these would contain all the operations and logic. The downside is an extra layer of abstraction (eg going state.whatever for every variable) and potentially large amounts of exposed variables
The second approach would be to make GameState rather small and contain only simple things, like references to the controllers and the elapsed time. The downside here is that accessing some data might be unintuitive. For example, if an Actor wanted to check for collisions it wouldn't check the Actor Controller's data, it would have to check the Map Controller, because it maintains the contents of each tile.
442347 No.16698305
>lose progress because of a powercut
How do you recover from this, I mean in terms morale, I'm just going to go straight in and rebuild my work from scratch, but that's still a lot of work.
8566ab No.16698308
>>16698305
so your data got corrupted? Because if it was just you neglecting to press ctrl+s every few seconds, I have bad news for you
442347 No.16698315
>>16698308
I should have stated that it was only 3d work, but still, that represents a lot of work, since the assets are highly detailed.
I save regularly, the actual files have been corrupted, for some reason blender also corrupted the backup it generates.
8566ab No.16698320
>>16698315
>for some reason blender also corrupted the backup it generates
oh boy, sorry to hear that. I'd say get an UPS, it should allow you a few minutes to save your work and wait out the brownout. I got one and it's been a great boon. A simple 400 watt should be enough, there are some inexpensive ones.
About the lost morale: work on something else for a while, then switch back to remaking what you lost.
442347 No.16698323
>>16698320
I just went straight back into rebuilding my work, now I'm just seething while redoing it, thanks I guess.
8566ab No.16698329
>>16698323
so what were you making?
442347 No.16698332
>>16698329
Top Secret, I was hoping to meet demo day, to show what I'm working on, but that's not going to be happening, at least I don't think so.
640dc2 No.16698333
>>16698194
the second one is way better and will perform faster
412998 No.16698355
>>16698194
Second one approaches ECS and is superior, if you're willing to step away from the "simplicity" of OOP.
442347 No.16698442
>>16698305
Accidentally clicked the wrong menu and found that Blender keeps a large array of backups from former sessions, and managed to recover my work. Kind of wish I new about this earlier. Just a heads up in case others don't know about this functionality.
683259 No.16698484
>>16698194
>extra layer of abstraction (eg going state.whatever for every variable) and potentially large amounts of exposed variables
If you're accessing member variables to do the work, it really isn't abstracted, is it? Not your fault really. Failed promise of OOP. The 1990s Java cancer isn't dead yet.
Consider a third way. Do not associate any of your data with your logic using classes. Do not use a single class. How would you do it? How would you do it using only structs, arrays, and C?
b3527a No.16698600
>>16698332
turns out I didn't copy the perspective matrix correctly. the thing on the diagonal was cot(fovy/2) and I had it as cot(fovy). This is what I deserve for copying blindly.
>>16698332
Worried someone might steal your super secret ideas guy idea?
b3b46c No.16698658
>>16698332
Post your idea so I can steal it and provide no credit.
d02695 No.16699648
After a gorillion years I've finally done something new, I was having a lot of percision problems on my older physics engine so I remade it focusing only on AABB/plane/sphere collisions, and I've finally been able to stabilize my system a bit.
I can finally do something else besides physics thank god
d174f1 No.16699668
>>16699661
I won't idolize your ass once Mark and Pewter are through with it.
a93cd6 No.16699783
>>16698484
But the data has to be kept "somewhere". I don't want statics all over the place
a93cd6 No.16699793
>>16699648
So how does the AABB collision stuff work? Do you just maintain a simple rectangle, for example, then preserve some kind of transformation matrix associated with it?
b094c8 No.16699892
Engine is ~33% done.
Weighted for a demo: 66%-ish.
Take that niggers.
442347 No.16700098
>>16698600
>>16698658
My ideas are good, but I'd rather have something to show before I really talk about it.
fa9721 No.16700103
This post is mostly a rant. I'm disappointed with myself. Everything has been a struggle, between an awful machine, shitty internet, and other personal bullshit, I dropped this hobby for months. Checking my last project, I've forgot everything. I've never finished a single game or demo. I am 27 yo. I started this passion when I was 16. Toying with various languages, frameworks, and engines. Not a single project was finished. It doesn't help that I forget stuff so fast I have to relearn shit from scratch every time I stop programming. Not to mention that when a project gets bigger than my small memory can handle, my brain just crashes and I get immediately demotivated. It doesn't help that my life is in such I state I can't commit to anything. It hurts bros.
What's funny tho is that I finally solved something that bothered me for so long. Which is sprite masking. You know that effects which makes a body part flashes white or red on hit in 2D games? or making a sprite fades based on the values from another image? Yeah, something as easier as that is no simple task without shaders, or doubling the sprite count for the flashing effect. I despise shaders because my machine is stuck in the old ages of openGL 1.1. I used software openGL for a while, which made running engines like Godot and shaders possible. Needless to say it way slow. 3D was impossible of course. But 2D was serviceable, as long as I used a really small resolution, which isn't bad if the game uses pixelart. Needless to say, it wasn't enough. I grew to despise it until I dropped it. I was working on FTL clone at the time. I wanted to make a game that I can actually run on the most outdated machine.
For anybody who's curious about the solution, it was simply blend modes. SDL2 and openGL support custom blend modes. With a bit of tinkering, you can make a texture use the alpha of another sprite by blitting the mask with a blend mode that ignores the color of the mask. Of course, I never found this solution anywhere in my long search, the answer is either a shader or doing it pixel by pixel.
I still have other problems to solve, like syncing sound with gameplay and providing modability through shared libraries alone. I'm trying to learn pixel art while I wait for Nim libraries to catch up to the current version. There's nothing worse than finding a language you're comfortable with only to find that almost every library is deprecated. But hey, at least the update SDL2.
b50d07 No.16700253
>>16700103
Damn, it sucks to hear that. Have you been doing everything on your own so far? It kinda sounds to me like you tried to do a bit of everything instead of focusing on a specific discipline. Nothing wrong with that but it sounds like you need a team.
a93cd6 No.16700257
>>16700103
I can relate. I've been devving on and off for about 10 years and have nothing to really show for it, no demos or interactive projects, period. Every time I start a project, it has a certain theme in mind, then I drop it at some point and start over.
About 2-3 years ago I got the smart idea to make my own engine so even if I keep restarting, I can add it to a carefully curated engine and use that as a sort of checkpoint
b50d07 No.16700304
>>16700257
I guess I was lucky enough to look in the right places. I've been doing art stuff since I was 16 and decided to learn modelling about 3 years ago but most of it was on or off with very slow progress. Helped a few people I met but nothing came out of it really. Then around 2017 I joined a "collaborative project" with a bunch of other /v/irgins. Project died but we stuck together. Now two years later I've gotten much better at art and learned a bit of programming. One friend swore to become my blood brother and continues to do general devving and music, another one gruaduated as programmer and all of us have sworn to dev together. I can say that all of that helped me in my life.
I guess what I learned is that true friendship exists if you're looking for it and that humans work best as a pack.
998efb No.16700309
>>16700103
>I despise shaders because my machine is stuck in the old ages of openGL 1.1
What graphics card only supports OpenGL 1.1? What's your GL_EXTENSIONS string like? It's possible that you're missing out on features that can make your life easier while programming this stuff.
b69db5 No.16700315
>>16700309
>What graphics card only supports OpenGL 1.1
my 8 year old laptop with a built in intel gpu for one
still surprised it could even run unity
a93cd6 No.16700345
Speaking of potato specs, what sort of technologies work on WinXP? I've sort of entertained the idea that my game would be good enough to be played by Russians and Japanese players on way old system, even though thats less than 0.11% of the PC market, according to Steam
https://store.steampowered.com/hwsurvey/Steam-Hardware-Software-Survey-Welcome-to-Steam
a851b5 No.16700366
>>16700315
Unity has a support for OpenGL 1.1? I guess I need to stop wasting my time learning C and use Unity instead then :^)
>>16700103
>Not to mention that when a project gets bigger than my small memory can handle, my brain just crashes and I get immediately demotivated. It doesn't help that my life is in such I state I can't commit to anything. It hurts bros.
It might help if you keep a note somewhere lying around either in paper or in computer form that you frequently visit where you gather ideas and add or remove new ones as you see fit, and maybe try prioritizing a certain feature over other so that you at least do 1-2 small/minor task a day or something if you are still motivated enough for it which is several times better then not having made any progress at all even when it is just fixing a bug. Rome hasn't been built in a day and your game idea is not much different that it takes a lot of time to do something great.
Unless as you have mentioned that you have too much personal issues that keeps you motivated enough to keep you going, well that sucks to hear and I can only hope it will get better for you soon.
b69db5 No.16700374
>>16700366
>Unity has a support for OpenGL 1.1
no, i just meant that i was surprised i could run anything 3d related, not opengl in particular
998efb No.16700386
>>16700315
No, I mean that seriously, because so few hardware is actually limited to OpenGL 1.1. It makes me think that it's more capable than you think it is. I have an 8 year old laptop with a built in Intel GPU, and it supports OpenGL 2.0 (granted it's a slow card and I would rather have more speed than features). I have a laptop from 2003 that has a vertex and fragment shader using an ATI Radeon Mobility 9000.
I think you have been getting stuck by a lack of resources, and you probably have shaders… although to be fair you can do quite a lot without them. I have a special rendering path in my game that can do everything, just restricted to OpenGL 1.1 only, no extensions at all. (Of course behind the scenes the driver just optimizes this to use the hardware features I have. It's not that slow)
What does this say? It should give a summary of all your card's OpenGL capabilites: https://a.cockfile.com/lgoIxQ_OpenGL_hardware_test.zip
>>16700345
You just have to make sure that all of your libraries are compiled to not call into OS features that don't work on WinXP. The main problem is when something expects a function in system32 that only exists on windows 7 or higher. It's the same situation with versions of windows lower than XP. For example windows 2000 doesn't have the raw input API, so you have to check if the dll file (I think user32.dll?) contains the API or not, and have a code path that doesn't try and use it. That's all there is too it really.
b69db5 No.16700409
>>16700386
i already have a computer and don't feel like turning the laptop on just for this, but a year or so ago when i checked it lierally only supported OpenGL at around 1.something
specifically remember this because i was trying out a demo day game that wasn't working
998efb No.16700486
>>16700409
The problem is that OpenGL version doesn't tell you a whole lot. OpenGL in 1996-99 is very different from OpenGL in 2004, but it still says stuff like "1.1" and "1.3", and people kind of lump them together even if the cards are pretty different. Mostly because the majority of new features existed in extensions that don't come up on the newest version.
c7df42 No.16700513
>>16700409
>>16700486
One should also keep in mind that if you use old or the default drivers that come with Windows it might not support all the features of your card. So your OS might report only GL1.X compatibility whilst in fact the card might actually support newer versions of GL with the correct driver. Always use the latest driver from your graphics card manufacturer website.
235328 No.16700722
>>16700486
This is what I have, surprisingly I've forgot about the exact version. I see GL_ARB_vertex_program and GL_ARB_fragment_program, but I honesty never worked with extentions and I don't think I have the capability to go that low for something that will certainly be slow. From my experience running old games, using the directX renderer was always better than openGL one, the later kept lagging especially when any shadow or lighting is involved.
I happen to be unlucky with the intel integrated graphic card I have, as they never bothered to update the driver for windows, somehow the same card supports openGL 2.0 on linux alone, but not without countless bugs and crashes.
Minor rant: I'm sad that I can't play agdg games even with software openGL because my machine is 32bit. It seems that a lot of people don't bother to compile/export to 32bit. I don't understand why would anybody do that when they have the option. Is there any benefit at all for most games to be only on 64bit?
b3b46c No.16700788
>>16700722
>Is there any benefit at all for most games to be only on 64bit?
Yes. There are benefits. It's the exact same story about only targeting certain OpenGL versions, which is that you're guaranteed to have some features and have an overall simpler to develop and maintain project.
So what features does amd64 have over i386? The obvious first one is that you wont run out of memory space. On a 64-bit system with swap spacing, your only cost of using excessive amounts of memory is a slowdown, and not the terminal error of running out of memory space.
The second feature is that amd64 requires SSE and SSE2 to be present. This actually has way more benefits than you would immediately expect.
For starters, compilers will output SSE/SSE2 instructions for amd64 by default, but output x87 for i386. x87 is a REALLY FUCKING TERRIBLE floating point instruction set that suffers from a myriad of problems, which means you have to fuck with FPU registers to produce deterministic results. SSE on the other hand has well defined floating point arithmetic that "just werks". In other words, if you require a deterministic simulation, like RTS games or replays, then an easy way to accomplish this is to just not make a i386 build, no further effort needed!
Is it true that a developer can tell the compiler to assume SSE and SSE2 instructions are present for i386? Sure. But how much does this change the situation?
Truth is, not that much. Every processor that supports SSE2 also supports amd64. You might be running a 32bit OS, but chances are your CPU actually supports 64bit fine. This technology is also turning 19 years old this year, which means that processors not supporting this are actually so fucking ancient that it draws serious questions about the actual performance.
At the end of the day, you have the weigh off the advantage against the disadvantages. My project relies on a deterministic simulation and since I want to be able to ramp up the entity count, also needs some performance. I could put in the extra work and get it to use x87, or I could enjoy the no-effort speed benefits from SSE and all its variations. I chose the latter, and tossed out 32 bit builds. I'm already requiring OpenGL 3.3+, so this is completely reasonable for me to do. Also saves me the extra work of setting up and maintaining another compilation target.
26b7c8 No.16700801
>>16700309
A GeForce4 MX440, for one. Not quite 1.1, but it is 1.2. That's what I have on my potato test build, a graphics card from 2002.
https://en.wikipedia.org/wiki/List_of_Nvidia_graphics_processing_units
This is pretty useful if you need something of the sort.
>>16700486
https://www.khronos.org/opengl/wiki/History_of_OpenGL
This is pretty helpful, I find.
998efb No.16700887
>>16700722
The thing about it is that the slowness is deceptive. If you optimize specifically for your own hardware, you should get some good results. Have you ever tried running some old demos on your machine? It's probably a lot faster than unoptimized games targeting modern hardware make it look.
Have you tried to run my demo? It's not much of a game but it does specifically target low end computers. It should be able to run quickly on your machine.
>>>/agdg/33719
There are also other very optimized engines and demos, like this one:
http://advsys.net/ken/voxlap/pnd3d.htm
It has a specific rendering path for ARB assembly shaders.
>>16700801
I use that a lot, too… it is very useful, but also misses pre-GLSL shaders. My most difficult graphics card is an Nvidia Vanta (a TNT card with half the bandwidth, lower clock speed, 16MB VRAM…) which can't even run my engine at 60FPS consistently. I'm still at a loss for what to do about it…
a0822a No.16700949
So which game engine is good for someone who can code but can't art for shit?
d174f1 No.16700954
>>16700949
No game engine will compensate for bad art. Even newer 3D engines will only look good if you know what you're doing.
b69db5 No.16700989
YouTube embed. Click thumbnail to play.
>>16700954
just steal every bit of uploaded art you can find
4b2957 No.16701212
>>16700788
That was informative. My dual core CPU certainly has SSE and SSE2. I think it's safe to assume some features will exist even in old machines. I never knew about deterministic behavior and floats problem. But it still baffles me to see some text adventures and single player games that aren't simulations going the same route.
>>16700887
>http://advsys.net/ken/voxlap/pnd3d.htm
Crashed with an exception. Using the software openGL DLL, it worked, so that certainly is the problem. Surprisingly it ran at a quite decent FPS, over a 100.
>my demo?
I had to tinker with the cfg of your engine since it started on a really low resolution. At first, it was running at an odd FPS, it was stuck on 33 with few raises, but never lower regardless of the resolution. Messing with the FPS in the config however changed stuff, after testing with 30 and 120 max FPS, it turns out that it always runs at a fraction of the max FPS. At 120 it ran at a solid 60 FPS, the controls where smooth and all and the texture was pretty crisp on 1280x1024.
However, when I used "r_fps 10000000" to see how far it can goes, it caps at around 110 FPS, the weird thing is that keyboard input had a huge delay, like 5 seconds or more, while mouse input and movement itself was smooth.
I've spent some time looking how to activate the editor before realizing i wasn't there.
Avast had a false (?) positive on the x64 build and deleted it, but x86 was fine
Definitely interested in seeing more of your project, 3D games that work on my machine without being buggy unity games bring tears to my eyes.
8808e2 No.16701253
Why does the AnimationTree node in Godot not loop animations as well as make the character/amature two times bigger when at half blend amount with a blend2 node?
AnimationTreePlayer didn't do this shit, but since that's deprecated I wanted to move over to AnimationTree.
6910c2 No.16701260
>>16701253
Animations that loop need to be end with -loop in your 3d modeling software. You can also edit the animations and add looping there, but then you'll need to do that every time you reimport the model
For incorrect scales, you might need to check or uncheck the "bones in world space" option in the skeleton parameters.
If you're still having problems, try a different export format. I've had varying results with GLTF 2.0, collada, and .escn (the Blender to Godot export plugin).
998efb No.16701271
>>16701212
If you're interested, this is the most recent build, it should have fixed some of the issues you were having with it.
https://a.cockfile.com/DJ0K1N_sigma2_71719_test.zip
Just run it with -map hall2.sw4 , some of the maps in there are bugged and you shouldn't expect anything with a recent timestamp to work at all (i'm trying to fix some bugs in the map editor, pic related). Also in the config file change gl_ext_multi_draw_arrays and gl_arb_vertex_buffer_object to "1", I had them turned off testing my OpenGL 1.1 only path recently, and those two extensions help performance a bit.
You're experiencing bugs that I fixed since last demo day, for example what you were seeing there was a problem with the client and the server going out of sync at really high framerates, currently the engine uses uint64 timesteps instead of floating point which I was using during demo day for certain time calculations, I think that was the issue with it.
Did you try the /arbasm and /cpu paths for VOXLAP? The reason it runs so fast is because the code is very optimized, a huge portion of it is written in massive blocks of inline assembly.
8808e2 No.16701283
>>16701260
OK, looping now works fine, but the size issue is still a problem.
I can't find "bones in world space" anywhere.
998efb No.16701498
http://www.pouet.net/prod.php?which=467
This is a cool demo that is made for the Pentium II. It's fully raytraced with reflections and per-pixel lighting, all in software, I think there is some way of turning off the rails and just flying around the level as a free camera, it's a real graphics engine… I think it's great.
>>16700788
SSE2 is supported on everything since the Pentium 4. You should be setting up your compiler right…. as long as you aren't writing x87 code, not a big deal… although if you were targeting such a slow CPU, you would have to write it… but that literally means you would have to be targeting a Pentium II, because the P3 has SSE… so you still wouldn't have to use x87! Although if I was targeting a P2 I would try and use integer coordinates and the MMX extensions, and see what could be done with that.
I can get your idea about not caring because you're using OpenGL 3 and don't want to write another rendering path. That makes a lot more sense.
4b2957 No.16701506
4b2957 No.16701523
>>16701271
Sorry for the empty post.
It seems that the FPS bug still persists (running at the fraction of the cap), but using a huge number works fine.
I failed to notice the difference when turning those options on and off, the FPS hovers between 140 and 80, depending on what's rendering on the screen.
Do you have any debug mode with precise timers to spot the difference?
>Did you try the /arbasm and /cpu paths for VOXLAP?
I'll look into it.
dc7c00 No.16701570
Which looks better, right or left?
red = bad, white = neutral, yellow = average, green = good
2d05fc No.16701597
>>16701570
I'm not entirely sure what it is I'm actually looking at, but the right picture makes it astoundingly clear which parts are "good" and which parts are "bad." The left just makes it look like 90% of the bar is "average" and a small bit is "bad," while on the right I can clearly see that some parts are "good."
Not sure how it would be for colorblind people. They might actually get more out of the left one, as far as I know, but for someone with regular vision the right is far clearer.
998efb No.16701605
>>16701523
If you're not seeing a difference, I think it's probably because an intel integrated GPU doesn't have seperate video memory, it's just system memory, so it literally doesn't matter. The optimizations there are just related to memory locality.
I guess that is the limit for such a trivial scene, but, I hope that you can check out the engine a little later once I have to do stuff that pushes the hardware a little more. I did have to look it up and Intel does confirm that it uses the same memory here: https://www.intel.com/content/www/us/en/support/articles/000020962/graphics-drivers.html And so this is an interesting situation, because what if you used the CPU to do shader effects on textures and stuff? In fact I think that is how these GPU's implement the programmable pipeline, because it's shared memory they can just execute them in software… so "features" are cheap. It's just a question of speed. If you could map the memory for a texture onto a pointer, you could easily do your own fragment shader, whatever effects on it. The only downside is that if you cant map it , you would have to do a copy. If you wanted to streamline that, you could even create one texture space, and then map the UV coordinates from visible polygons on the scene into this texture space, having one texture for all normal maps or whatever that gets applied onto everything else. An interesting idea… but probably not as fast as playing intel's game.
b3b46c No.16701613
>>16701498
>SSE2 is supported on everything since the Pentium 4.
Pentium 4 also supports amd64, so it can run 64 bit builds just fine. Just not on a 32bit OS.
>P3 has SSE
SSE doesn't include double-precision floating point.
I'm not doing anything like writing instruction set specific code. I'm just trying to keep my project into reasonable scope so I can keep my productivity going. Excluding 32bit, and by extension, x87 with all its headaches, helps a lot with that.
Yes, I can configure the environment and produce a 32bit build that uses SSE & SSE2. Yes, I could just make x87 work by fiddling with the FPU registers. Shit, I could even use integer coordinates and do fixed point math instead.
But I have to put the cutoff somewhere, and I decided to put 64bit & OpenGL3.3 as a requirement. If you have a system with an OpenGL3.3 compliant card, chances are you have amd64 CPU in there as well.
998efb No.16701624
>>16701613
For you, it's totally reasonable. But P4 is not one platform, only Pentium 4 CPU's after 2004 support 64 bits. But i'm not saying you should bother compiling for old hardware. Just bothering about the specifics.
>SSE doesn't include double-precision floating point.
Why would you ever use double-precision floats in a game?
3e8cb6 No.16701626
>>16701570
Is the gradient necessary? It makes shit look incredibly unclear. Why not just separate the bar into different, distinct parts? If it is green > yellow > white > red, why do the bars look like they transition from white to yellow to green back to yellow back to white and finally to red?
If you have four separate things indicated, stuffing them into a single bar is probably a bad idea. Is this four separate things? It seems like you could indicate this with a single bar that fills and changes color, and you could actually tell what the fuck is going on.
b3b46c No.16701658
>>16701624
>Why would you ever use double-precision floats in a game?
So you can be lazy and be less likely to run into precision problems. I've ran into a few before, and upping precision is an easy solution to it.
If you want to support large gameworlds (e.g. Minecraft infinite worlds) and high framerates (e.g. 240Hz) then single precision tends to run out pretty quick.
dc7c00 No.16701659
>>16701626
>Is the gradient necessary?
unfortunately, yes
The "score" for a taste is a curve, so we need to show both time and value, where time is left to right, and value is red to green
dc7c00 No.16701713
Which makes more clear which part is covered by green, neutral (white(left) or brown(right)) and red?
26b7c8 No.16701714
>>16701659
I get what you're going for, but are you sure there's not a better way to portray that? Because the fact that you had to explain it probably means it's not really good. Perhaps make it a graph instead?
In general, I guess the second looks somewhat better but it's still a bit too bright and contrasting. Try using less bright colors, something a bit more pastel.
I do have an idea of something that could work: It could be a spinning clock that changes color as it spins to portray the same idea. It, however, immediately explains how the flavors change based on time, something your graph doesn't portray in the slightest from just looking at it. Pic related is a quick shitty mockup I did. I think it would work better. I made them huge but you could easily get away with something small and still be quite understandable, so it shouldn't take up that much more space, either.
13885c No.16701732
>>16701570
>>16701713
That seems pretty awkward to read. Is there a reason you can't just go with a line graph?
26b7c8 No.16701735
>>16701732
This was my initial idea too. Could work as well, though having seven graphs may be a bit hard to read as well unless you have a toggle.
a851b5 No.16701736
>>16701713
go for banana brown
dc7c00 No.16701741
>>16701714
>>16701597
>>16701626
I will explain what my autistic brother is trying to convey, the system we use to score the tastes of a recipe follows a graph of taste intensity x score, the bar length represents the intensity and the color the score
Example, the salty taste on soup follows:
>0 score at 0 intensity
>1.6 score at 0.6 intensity (max score for the salty value, green color)
>0 score at 0.85 intensity
>-1 score at 1 or higher intensity (max penality on the salty value, red color)
This is the sample UI planning i sent him, i have no idea where the yellow or the white parts came from, he makes up this kind of shit and complains to me it looks like shit later
>>16701732
Using seven line graphs are bothersome to read, the bar idea will make easy for the user to know if his current ingredient combination will hit the green mark
13885c No.16701743
>>16701735
Hide the other graphs when you hover mouse over a name from the right.
3e8cb6 No.16701750
>>16701735
Just do a filling graph, like my CPU graph here that sits on my desktop. Small but still very visible and readable.
3e8cb6 No.16701757
>>16701741
Ah, that makes more sense. It would probably be more intuitive and easier to tell seeing it in motion. Still images of the bars aren't very indicative of what it's supposed to be.
13885c No.16701760
>>16701741
That makes more sense in terms of design. You could draw a single line graph over the gradient bar, color gradients just aren't as easy to read, can you for example tell where the 50% point in that gradient is?
26b7c8 No.16701763
>>16701741
I got what you're going for, yeah. The UI you have seems much more readable than the initial proposal, so that should be fine enough.
I'm not sure if this is something you're planning on doing or not, but the whole reason I initially suggested my idea was because I thought that you had to balance all seven tastes in one cook. So for example, you could go for max spiciness and mintyness but then the rest would only be average, or if you tried going for max savoriness, spiciness and mintyness would go into the red.
I suppose it's hard to say how cluttered it will look with all seven, but if you're only using green and red, that looks fine enough as is, I think.
>>16701760
This is a good idea as well.
3e8cb6 No.16701837
>>16701760
Red/Green colorblindness is also the most common kind.
dc7c00 No.16701871
>>16701760
This is a good idea too, we could add that
>>16701763
For a maxed score you will need to match every taste to their green part, this would be a 5 star gourmet meal, NPCs won't expect much more than a 6/10 score when you cook for them
>>16701837
This is why i want to use red and green with different saturations, but my autistic brother wants both bright as the sun
2e274a No.16701913
>>16700989
>RPG game
<has massive bugs as enemies
Why do alot of RPGs do this?
dc7c00 No.16701934
>>16701913
Why not?
Bugs are cool
2f453a No.16701937
>>16680787
A week later, cracked open some old code I downloaded to start adding control rebinding and audio/video options. Shoot me dead, another English-is-my-second-language template project.
e3ab40 No.16701955
>>16701913
We as a species subconsiously want to exterminate all insectoids and arachnids.
d174f1 No.16701960
>>16701913
>his game's enemies aren't actual bugs that corrupt or crash the game if touched
a851b5 No.16701983
>>16701913
>>16701955 (checked)
I really enjoy building sand- castles on freakers territory.
2e274a No.16702003
>>16701955
>We as a species subconsiously want to exterminate all insectoids and arachnids.
So why not make the enemies chinese?
>>16701983
>sand
e9148c No.16702054
>>16701913
Giant versions of tiny animals are standard low level enemies in D&D and the like.
a93cd6 No.16702102
>>16702054
>>16701913
And then, when you get strong enough, you fight palette shifted versions of them
a93cd6 No.16702530
>>16698194
I remember why I was having so much difficulties before. For the sake of replays, I wanted everything to be deterministic, so no floating points, the main game logic for each map would be a state machine etc etc.
Specifically, it was figuring out where each data where that was causing me confusion. For example, if there were two players, each one would need an input and an inventory, as well as score and gems collected. So it makes sense to put this into a Player object. But then, level goals are based on a combined gem quota, so I need a third gem tracking variable
And then, the timer for the level belongs to a StatusController object, but it would make sense to put the Player objects in here. But then when I get to my ReplayController, it's not an immediate part of the gamestate, so it shouldn't be present here, but I still need to track input and record it, so I feel like I should move the Input to this controller instead, and then with the combined score and gem shit above, there's not enough stuff to support a separate Player class, then it all goes in Status controller, then it feels weird to work with and I keep going in circles
b69db5 No.16702866
>>16701913
i needed something non-humanoid to test how easy i can make new characters and the spider was free, so yeah
998efb No.16703016
>>16701658
This is really supoptimal because double-precision is only really used in scientific computing. Unless you have a workstation GPU like a Tesla or whatever you're not going to have good double-precision performance. If you want to support large gameworlds you need to support multiple coordinate systems.
>high framerates
It's true that float32 timesteps aren't big enough, but why are you supporting high framerates like this? Can't you just run the physics engine at 30Hz or 60hz and then lerp between the points? You can clamp the interval in uint64 time between zero and one so that the lerp happens even at very high framerates, because it's no longer trying to divide too much.
3e8cb6 No.16703031
>>16703016
> is really supoptimal because double-precision is only really used in scientific computing
Doesn't a lot of scientific computing use fixed precision, or precision taking significant digits into account?
b3b46c No.16703219
>>16703016
>This is really supoptimal because double-precision is only really used in scientific computing
Anon, you are being fucking retarded. Do some actual research before you say stupid shit like this. Every fucking scripting language out there, like Javascript, actually defaults to a double precision floating point. Almost every god damn web page on the internet runs scripts doing double precision floating point arithmetic.
>Unless you have a workstation GPU like a Tesla or whatever you're not going to have good double-precision performance. If you want to support large gameworlds you need to support multiple coordinate systems.
I don't use double-precision for rendering. That issue can be solved entirely by calculating the "WV" part of the WVP matrix using double precision.
There are plenty of games out there that actually support high framerates. Pretty much every game with delta physics tends to do it on a beefy enough computer, and there's even fixed-framerate games like CS:GO that feature 128tick servers for the sake of increased accuracy. I support it because I want my game to be able to transition into future hardware just fine, whether that's due to an increase in framerate, resolution or otherwise.
>Can't you just run the physics engine at 30Hz or 60hz and then lerp between the points?
If player movement is done through the physics engine then running it at 30Hz means you're sampling input at 30Hz. And sampling at 30Hz is disgusting.
998efb No.16703259
>>16703219
>Anon, you are being fucking retarded.
I'm very obviously talking about the GPU here. You're taking things out of context when you clearly know what the topic is. Argue the actual points instead of cutting reply up and pretending that it means something else.
>I don't use double-precision for rendering.
So you're holding a double precision model for your physics engine on the CPU to construct the matrices for a single precision copy on the GPU? That makes more sense. Still it seems like it would make more sense to just use single precision. Even on a modern computer it's still taking up twice as much space on your SIMD registers. But you seem to have a whole plan around it, i'm sure the bottleneck for your physics objects is probably rendering them anyway, not running the simulation on the CPU, so I guess it doesn't matter.
b3b46c No.16703310
>>16703259
>You're taking things out of context when you clearly know what the topic is.
Sorry, I was under the impression that if we were talking about game logic and CPU, then following that up with the statement "This is really supoptimal because double-precision is only really used in scientific computing." still falls within that context.
>So you're holding a double precision model for your physics engine on the CPU to construct the matrices for a single precision copy on the GPU?
Yes.
The WV puts the 0,0,0 coordinate on the camera, which allows the higher accuracy range to play into effect for the area you actually see. In addition, rendering logic does not accumulate error like game logic does, so small inaccuracies don't add up.
In addition, double-precision floating point on the GPU is an OpenGL 4.x feature. (Some parts are in 4.0, some in 4.1.) And as you meant to say, double-precision performance on the GPU is quite awful.
>But you seem to have a whole plan around it, i'm sure the bottleneck for your physics objects is probably rendering them anyway, not running the simulation on the CPU, so I guess it doesn't matter.
I'm actually afraid I don't get off easy due to using rollback netcode. But I pray to my god(s) and savior(s) space partitioning & multi-threading to make this affordable.
640dc2 No.16703314
>>16703219
>>16703310
>want to render reflections, anti-aliasing and shadows
>use doubles instead of floats or hell even half precision
<where did my performance go?
If you're dealing with money, use doubles, sure. If you're dealing with graphics, consider smaller datatypes as long it's not too detrimental to the visual quality.
b3b46c No.16703319
>>16703314
delete your 8chan account
b38071 No.16703389
>>16701271
>currently the engine uses uint64 timesteps instead of floating point
Was there a good reason for starting with floats besides more precision? Also does Sigma 2 use fixed timesteps or variable timesteps?
26b7c8 No.16703426
>try to use glCullFace
>no impact on performance whatsoever
>spend long time implementing custom culling system
<makes everything significantly worse at first
>rework it to be less shit
<raises performance in pic related (20.000 cubes, 240.000 tris) from ~29-30 fps flat to 57-82 fps depending on camera angle)
As it stands, I'm certain I can optimize it further, however I simply cannot think of how yet. It's a really great performance boost as is, about exactly what one should expect from such culling so I'll leave it on the backburner as I keep working.
I also don't yet cull things that are off-camera, since camera controls are not finalized.
it also lets me track how many triangles I draw and how many I cull, which appeals to my autism
998efb No.16703461
>>16703310
I get it, I was being confusing because we jumped form SSE to the graphics card. I didn't know that your setup uses multiple levels of precision so I thought that it was all unified.
>I'm actually afraid I don't get off easy due to using rollback netcode.
Hopefully it isn't too harsh. But i'm sure that if you just write the important procedures in ASM yourself, you can squeeze out the performance you want.
>>16703389
Variable timesteps. Technically it always used uint64 I would just convert it to floating point for literally everything when floating point time should basically only be used when it has to interact with physics or something. So I was doing packet limiting, framerate limiting, using this system, and this is the source of the desync from the server at high framerates, because my timestep kept rounding down to zero and it could only count the timesteps that were abnormally long thanks to microstuttering or whatever. Now that I use uint64 time for this stuff it works fine.
>>16703426
Do you have frustum culling implemented yet? You can also leverage hardware occlusion querying as described in these extensions:
https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_occlusion_query.txt
https://www.khronos.org/registry/OpenGL/extensions/NV/NV_occlusion_query.txt
https://www.khronos.org/registry/OpenGL/extensions/HP/HP_occlusion_test.txt
This might help your performance quite a lot.
b38071 No.16703468
>>16703461
Doesn't that create weird stuff when jumping from big to small numbers? And what about stuff like replays?
26b7c8 No.16703480
>>16703461
>Do you have frustum culling implemented yet?
No, not yet. This is the first culling implementation so far. I'll look into those as well, thanks.
998efb No.16703682
>>16703468
No, it can manage timestep differences fine, this is mostly because, the server is running on a different thread than the client. If my rendering is slowing down the client thread, that doesn't change what happens on the server, which is basically idling most of the time waiting to hit the right timestep (the "sv_fps" cvar). Replays will just have to store a timestep.
>>16703480
https://www.gamedevs.org/uploads/fast-extraction-viewing-frustum-planes-from-world-view-projection-matrix.pdf
This might help, it's what i'm using to do frustum culling.
b38071 No.16703730
>>16703682
Wait I don't think I'm following, so the server logic is waiting for fixed updates at the right timestep while the rendering uses a variable timestep to render stuff in between right? If the server logic is running at a variable timestep could you give a quick run down on how you did it without creating strange artifacts? Sorry for the trouble.
d02695 No.16703839
>>16699793
That's more or less correct yes, since I'm using a ECS architecture, I have a TransformComponent that holds the entity's position, scale and rotition, from it I can get its global space position and from the AABBComponent I can get its half space of.
To perform the collision tests however you'll probably need to know the velocity of both objects so that you can apply a swept collision detection which is a lot better than a static AABB x AABB collision check.
998efb No.16703913
>>16703730
It's right now effectively on a fixed timestep, because it never takes that long for a server tick to complete, and because it's running on another thread, it doesn't get blocked by the client thread. There isn't some kind of inherent issue with variable timesteps beyond precision issues when the timesteps get too small to represent.
3e8cb6 No.16703991
>>16703314
>If you're dealing with money, use doubles, sure
Note from somebody who writes programs that handle money for a living: don't do this. If you're dealing with money, you either use the smallest unit necessary as an integer, you use fixed-point, or you use a dedicated money type (which is usually fixed-point). You never use a floating-point type for money, because error accumulates in an unacceptable way for the purpose.
c7a185 No.16704225
Does anyone know how to detect collisions in godot without using the is_on_ground() function? The reason why I'm not using the is_on_ground() is because it belongs to the KinematicBody node and requires _physics_process instead of the Rigidbody node.
I feel so dumb because I'm trying to implement a jumping function without infinite jumping. The way I'm trying to solve it is to keep a jump counter that resets whenever I collide with the ground. The problem is that I don't know how to detect the collisions to begin with
2a08d5 No.16704271
>>16704225
no idea how godot handles it, but you could make the floor another trigger and only allow jumping when they collide.
47b415 No.16704729
How can you trust other people when you post your projects here? With all the thousand of bugmen in china ready to steal anything that resambles a game to sell it as their own?
13885c No.16704770
>>16704729
Have fun remaking my very elaborate and advanced videogame based on a screenshot.
b3b46c No.16704774
>>16704729
>bugmen
>polishing a tech demo into a viable product
If China was anywhere near as good as you make them out to be, we would see way more Chinese games on the western market. We don't, because they don't have the skillset to produce anything decent. This is incidentally also why, despite all the difficulties, western developers are trying to expand to China. There's very little "real" competition there as its all garbage clones and microtransactions, so managing to sell your game there means ez moni.
d02695 No.16704778
>>16704729
>implying bugmen can do anything else other than Ctrl+c Ctrl+v
26b7c8 No.16704782
>>16704729
Yes, go ahead and rip off my project, anon.
13885c No.16704785
>>16704782
Mmmm I'm gonna make millions with this thanks sucker!
d02695 No.16704789
>>16704782
I've meant to ask you this a while ago but I keep forgetting, how are you rendering your text anon?
a851b5 No.16704838
>>16704729
Why worry? I develop stuff in order to make myself familiar with the process, not to make the next breakthrough game like Command and Conquer 1 did, when I manage someday in the future to be knowledgeable enough to make a engine that surpasses graf zahl crap that is good enough for me.
>>16702003
The boss wants his sand castle and he will get it, even if a auschwitz like camp has to be made to fulfill his wish.
89e28c No.16704840
>>16704774
>its all garbage clones and microtransactions, so managing to sell your game there means ez moni.
but western games are exactly that
c7a185 No.16704900
>>16704271
Thanks anon, I got it fixed by adding raycasts. No more infinite jumping.
>>16704729
China doesn't need to steal from these boards at all.
China has a brilliant policy where companies are forced to give them industry standard techniques and secrets if they plan to outsource in their country. In order words, corporations that wish to use their land/property for profit are forced to teach their own citizens. That's why they're able to industrialize to the point of creating carbon copies. Here's a great article about it:
https://money.cnn.com/2018/04/05/news/economy/china-foreign-companies-restrictions/
If other countries did the same, then they would be better off too.
26b7c8 No.16704902
>>16704789
While probably far from the most efficient way, the process is as follows.
First off
I have a texture sheet with all the characters in order, pic related one. They're right there alongside my other menu/HUD graphics. I then have a text string with letters in the exact same order, pic related two.
To get the letter from the texture sheet
The engine goes through the string you provide in the text draw function, letter by letter. It gets a letter, looks for it in that fontlist string from earlier and uses that positioning to find where on the texture sheet it is. The letter textures are spaced out identically, 16 per line. I divide by 16 to get which row it's on, and modulo by 16 to get which column it's on. Since all the letters are spaced out evenly in the texture sheet, it's simple multiplication from there on out. They can also be drawn exactly the same because of that even spacing on the texture sheet.
Spacing
The letters that don't fill a full square are at the beginning. When I get the letter position from the fontlist string, I do a quick check. If it's more than 21, I use default spacing. If not, I figure out what the spacing should be. I add that spacing to the X coordinate after printing the letter and use that as the X for the next letter.
Spaces don't draw anything, they just add to the X coordinate and move on.
Linebreaks restore the X coordinate to the initial one, and add to the Y coordinate instead.
All of this is done for one reason or another and lets me do a lot of fun shit. For one, the spacing check makes the font look a lot more natural since all the letters are spaced apart identically instead of the smaller letters having a wider gap. On top of that, I can provide custom spacing values to the function, T O T Y P E L I K E T H I S if I so wanted. Or to space the lines apart a bit more instead.
I have to use widestrings to accommodate rarer characters, such as Cyrilic in this case. It's futureproofing. I believe Japanese characters would require the same thing.
I have several functions with varying levels of complexity, to save a bit on performance when needed. Check the post you responded to again.
The text in the bottom left just draws it and does nothing else.
The text on the left can only do linebreaks.
The text in the top right can be resized as well.
I also have functions where the text can be colored, pic related 3.
I certainly hope all that made sense. It's a lot simpler than it sounds.
640dc2 No.16704932
>>16704902
Nice writeup, definitely different from using truetype fonts but I have to say how do you deal with different sizes, do you just scale it and call it a day?
13885c No.16704983
>>16704902
You can also align the text by keeping track of where the row started, and when the row ends move all the characters in it left by half the row width (center align) or full row with (right align).
26b7c8 No.16705126
>>16704932
I try to avoid libraries like a plague. Aside for various GL-related libraries and LodePNG, I have none so far. Interestingly enough, the font I use is one I made and I do have it available as a .ttf file, so I can get bigger resolutions of the letters if needed.
The text is quite big as it is, being 42 pixels tall on average on a 1080p screen. I might need to do some special High-quality case for resolutions above 1080p, which would not be too hard. Just supply an upscaled menu graphic texture sheet to the engine if it's above 1080p. I wouldn't have to do anything else, either, since texture coordinates would be in the exact same spot anyway and the engine handles any resolution and aspect ratio thrown at it. That's something I'll do later on, when I have more menu graphics though, as well as when I have access to a higher resolution monitor, as all of mine are 1080p or below.
As for downscaling, the engine already has a pixel alignment system which I use for all 2D drawing. Screen coordinates don't correspond to full pixels, is the problem. If I just said "Draw at 55, 55", on a 1920x1080 window, it would draw it at pixels 105.6, 59.4. Due to floating point errors like that, scaled down images and text would look differently when drawn in different places. A scaled down letter B would look different at 0, 0, than it would at 55, 55. Same applies to sprites that have been scaled down. That's why I do pixel alignment, to make sure it draws it on an even, rounded down pixel.
>>16704983
I might look into that more when I'm working on textboxes, that's a bit on the backburner. Textboxes will also need to roll the characters out one by one, instead of drawing them all out at once. I'd need to precalculate the spacing like this, but it shouldn't be too hard.
As it stands, the text draw functions I use now are mostly for menu graphics, UI and testing.
d02695 No.16705303
>>16704902
Thanks this is going to help me quite a lot since I'm trying to implement something similar on my engine *I'm also trying to avoid using libraries if I can't make them myself**
a93cd6 No.16705555
>>16704902
I think SFML uses ttf fonts, but I'm not sure how they interpret them to become spritefonts. It seems like it makes use of kerning information (which isn't accessible, thanks SFML) and then it generates an appropriate texture.
There's a helpful wrapper called Text which contains a font and it's texture, but I shit you not, every time you change the "displayed string" value on the text, it generates a completely new texture. Exceptionally wasteful.
26b7c8 No.16705608
>>16705555
That's always my worry with libraries. When I was just picking up C++, every search online for how to do something would lead to a stackoverflow post saying "JUST USE BOOST LOL", when what I needed was something basic. That's how it usually is, so that's a struggle, avoiding libraries. Same thing with modern OpenGL features when all OpenGL tutorials are for at least GL version 3.
I just like writing my own shit. If it's slow, it's my fault and I have to fix it. Libraries would just make a mess of things.
e30752 No.16706262
>>16705555
>every time you change the "displayed string" value on the text, it generates a completely new texture. Exceptionally wasteful.
It really depends on your use case. Drawing character by character each frame when you're displaying static paragraphs of text isn't ideal. I prefer to have my renderable text have the ability to work either way: drawn per character from a font sheet for often changing text and cached to render target texture for large blocks.
b69ef1 No.16706403
>>16705608
>That's how it usually is, so that's a struggle, avoiding libraries.
because it usually fixes shit for that exact situation, there's a reason the library exists in the first place. bigger issue is when in becomes the goto answer even when the library would be complete overkill, plus it doesn't help if you're still on the way to figuring out basic shit.
there's nothing wrong with (most) libraries, like everything it's just a tool depending on the use case - and that's what SO usually gets wrong.
13885c No.16706407
>>16705126
>textboxes
It's not a big change over just drawing the letters normally. This is a potential engine dev rabbit hole though, so be careful before you're developing an entire UI layout system instead of a game. Like me.
Mine's a little different but here's pseudocode for how to do text drawing and wrapping in a text box, along with how to right/center align it:
BoundingBox box = {0,0, 200,200};
String str = "hello world";
int rowStartCharacter = 0;
int previousBreakCharacter = -1;
float xPos = 0;
float yPos = 0;
float lineHeight = 20;
float lineWidth = 0; // this is purely for right/center aligning text
for (i=0; i<str.length; i++) {
// record break character, add all characters that text is allowed to wrap from
if (str[i] == ' ' || str[i] == '\t' || str[i] == '-') {
previousBreakCharacter = i;
lineWidth = xPos;
}
// check progress horizontally
if (xPos + str[i].width > box.width || i == str.length-1) {
// text passed horizontal textbox boundary or string ran to an end
// if space was not found on this row, force the text to wrap on current character. Line width will also be changed to here.
if (previousBreakCharacter < rowStartCharacter) {
previousBreakCharacter = i;
lineWidth = xPos;
}
// get x position offset for aligning text to the right or center
int rowOffset = 0;
if (TEXTALIGN_RIGHT) {
rowOffset = box.width - lineWidth;
}
else if (TEXTALIGN_CENTER) {
rowOffset = (box.width - lineWidth) / 2;
}
// draw characters from start of row up to the break character
xPos = 0;
for (pos=rowStartCharacter; pos<=previousBreakCharacter; pos++) {
drawCharacter(str[pos], xPos + box.x + rowOffset, yPos + box.y);
xPos += str[pos].width;
}
// progress vertically
yPos += lineHeight;
xPos = 0;
i = previousBreakCharacter;
rowStartCharacter = i + 1;
// passed textbox height, stop drawing or something
if (yPos > box.height) {
return;
}
}
else {
xPos += str[i].width;
}
}
26b7c8 No.16706647
>>16706407
Oh, my textboxes don't have to be that complex at all. Admittedly it doesn't seem like it would be too hard to do and implement into what I have as is.
I just need a typical RPG textbox, where the text is drawn in the same place at all times. That shit is pretty neat though, thanks.
>>16706403
That's how it's been, yes. I needed a library that reads PNGs so I got one. But usually, shit like Boost is recommended where a few simple standard library commands will do just fine.
b3527a No.16706648
I now have textures! After this I promise not to post ANY more teapots because I'm as sick of it as you are. Next up is probably text so I can put useful information on the screen. After that a real camera system and maybe even a game. For those of you using legacy OpenGL what resources do you use? I'm thinking of getting an old version of the OpenGL big book or whatever it's called because there's so much beating of the "core only" wardrums on the internet and it's hard to tell which features came about when before 2.1 and the best ways to use them. This project is the non-deprecated subset of features in 2.1, but my next will probably have a 1.x and 3.2 core renderer for maximum compatibility.
2e274a No.16706703
>>16705081
>50k tris
>subdivision surface
>yeet cannon
Why do people go overboard with the tris? I try to keep mine under 2k for everything.
dc7c00 No.16707099
Making random props while my brother finishes the cooking system
17ac89 No.16707140
>>16707099
Can you smoke dat herb mon?
>>16706703
It's probably his high poly model to bake normalmaps onto his low poly one.
47b415 No.16707265
What's the easiest thing to develop in godot?
I'm watching a tutorial on how to make a space shooter, but the version that the guy is using is older and they changed some functions name and structures. I'm watching gdquest's videos since there's a lot and still updates, but there's not a lot of material outside for the engine. Even the official site has problems with downloads and the guide.
c7a185 No.16707454
>>16706703
That's what retopology is for and that's how AAA studios do it. They make a model with a highpoly count and bake normals onto a low poly one. You get a lot of good detail and control through that method.
2dd2ec No.16707478
>>16704225
You could have a raycast constantly enabled and scanning down, just make sure to make it ignore its parent node.
c7a185 No.16707500
>>16707478
Thank you anon! I solved it earlier through that method, but I commend you for pointing it out. It's crazy how raycasts are powerful, is there a downside to using them?
anyway, I'm going to try getting the camera to follow the player.
d9a133 No.16707929
>>16707454
the gun is horrendous but not this horrendous
c7a185 No.16707986
>>16707929
I'm not happy about it either, at least I figured out a workflow though. I'll continue practicing.
I dig that it's a lot quicker than character modeling though.
b69db5 No.16708816
YouTube embed. Click thumbnail to play.
working quest interface
still not entirely sure about my UI layout but i really don't have better ideas
2e274a No.16709140
>>16707454
I know about that method but arent you supposed to subdivide it manually then add details using sculpting? Just slapping on subdivision surface doesnt seem right.
b69db5 No.16709210
ayy, unity's gpu lightmapper actually works for once
last time i tried it i kept getting warnings and then shit crashed
easily baking a 256x256 or so scene in only half an hour
f37180 No.16710122
>>16709140
There's luckily multiple approaches to 3d modeling. You can start from high to low or low to high. The reason why I do the former is because I'm used to modeling characters that way (sculpting and retopologizing). Your workflow isn't wrong and mine isn't either, but it wouldn't hurt for me to learn both methods.
b3432e No.16710331
Is Game Maker 1.4 alright or should I move to Unity or something? I just want to make some side scrollers and puzzle games.
640dc2 No.16710382
>>16710331
godot
love
sdl / sfml
the lower you go the more autistic you are
a192ef No.16710424
>>16710331
For sidescrollers and puzzles games game maker is fine if you're already comfortable.
9f0f5b No.16711410
What's the best way to handle multilevel isometric maps? I want to achieve something in the veins of Final Fantasy Tactics and Tactics Ogre: Let Us Cling Together. I'm not using any engine, and the game is 2D. Preferably an efficient way. I'm aware how Tactics Ogre did it as in pic related, but I can't for the life of me to think how to streamline map creation, or handle bridges.
a93cd6 No.16711622
>thread lasted over 2 weeks
>usually has a max lifetime of 3 days
b69db5 No.16711796