/agdg/ - Amateur Game Development General

Just Like Make Game

SAVE THIS FILE: Anon.cafe Fallback File v1.1 (updated 2021-12-13)

Board Owners: Hourly thread limits and Early 404 help protect your boards against erasure under slide attacks. Enable them today.

Want your event posted here? Requests accepted in this /meta/ thread.

Max message length: 20000

Drag files to upload or
click here to select them

Maximum 5 files / Maximum size: 20.00 MB

Board Rules
More

(used to delete files and postings)


Progress General Deveropa 04/29/2020 (Wed) 20:07:32 ID: 26606f No.123
Post what you're working on.
>>123 Man that looks like it has some serious potential.
Open file (4.94 MB 1280x720 2020-04-30_16-14-36.mp4)
>>124 demo day soon
Wrote a program to compile my game. It spawns a subprocess for each file. If each file is done and there's no errors, it links them. It's a lot faster than compiling one file at a time. Highly recommended to anyone that has a large C/C++ project. Getting ready for demo day.
>>127 The scale of this looks staggering. >>129 You mean a makefile? GNU make already does all of that and it also checks if your code has any updates to see if it's worth compiling.
>>130 >You mean a makefile? GNU make already does all of that and it also checks if your code has any updates to see if it's worth compiling. I don't like Make and feel comfier using a custom script.
>>131 What's wrong with make?
>>132 After setting up a more complex makefile myself I can say that it's not fun to learn. It's extremely logical, but also so alien to other programming languages to the point where it's almost like relearning how to code. It also has some short comings. For example, I wanted to make all my C rules depend on all files within the directory so if I cahnged any files within that same directory it would have to recompile that script. However, I couldn't really find a way to do this since I wouuld have to do something like %.o : %.c ${dir $< ... } or whatever, which does not work because you can't dynamically generate dependencies like that.
Open file (7.69 MB 1280x720 2020-05-01 23-44-51.webm)
AI will still be pretty dumb this demo, but now they can hear your footsteps.
>>129 >>131 that sounds both interesting and impressive anon. have you looked into how ninja works yet? might give you some ideas.
>>147 I really like that silence pistol. It reminds me of the one from n64 james bond. Although the silencer is a bit blocky.
>>152 thanks, I got that feeling too. I'm fond of the blocky suppressors tbh. The demo day level is being expanded
Open file (4.46 MB 1024x600 mhiSPqj2uO.webm)
lasers, alarms, computers
Open file (708.88 KB 717x320 qVkI2Z2U65.gif)
First time I post on this site, hope it doesn't die out. Anyway, dunno how much peep there's in this place but it sounds comfy enough to post progress. Pict related is the end result of the core engine in C++. I also have a homemade UI and all that thing, I'm not sharing picture of it because I don't have a proper font yet. From here on I'm consider making a game or something. Maybe a rpg, I dunno. geno sprite is obviously not mine.
>>165 I like that lighting you’ve done in the background. Very nice effect.
>>165 Looks nice.
>>166 >>167 well that was quick, I'll try to post my relevant weekly update in here(anything visual). Also, if you're refering to the straight line on the light, it's not an effect in itself but just how the rendering works, which is inspired from: https://github.com/s-macke/VoxelSpace in mouvement, it's weird to look at, but not unpleasant I promise.
>>174 >in mouvement, it's weird to look at, but not unpleasant I promise. actually, i like the jiggly physics things going on. just don't go overboard with it haha.
Open file (14.74 KB 1309x213 ClipboardImage.png)
Open file (192.99 KB 1024x720 Brinstar Tileset.png)
How does this tileset look? It needs more detail but I'm not sure where/how. I've been using the Brinstar tilesheet as a sort of reference but it's hard to replicate without simply copying it completely. Feel free to scribble/make my game for me
>>176 the weird thing is the terrain, not the mouvement. the terrain gets weird due to the level of detail being rather small in range. It forces the game to be a horror game in a sens. Which I'm totally okay with.
>>177 It is good looking and I couldn't do better. But for proper criticism, you need more solid volume. Try going for more defined shape like rectangular prism. I'm looking forward to see you grow. You're in a great start.
Open file (523.28 KB 2046x1198 output.webm)
I'm trying to do weekly progress reports. So, since last week: >Campfire Developed pipeline how to add objects >Bus Damn, it was harder than it looks >Toilet For the sole purpose of working toilet door I've added interaction system >Firs level nemu >WASD as some anon suggested
>>201 did you make your own sprite? The bus and the tent looks good. Also
>>202 the "also" is a type, ignore it
Open file (430.65 KB 740x1000 poster_5.jpg)
>>202 No, I have dude who can paint and willing to work for loolz. And he paints nice posters. Tent and grass are stolen from LPC.
Open file (664.95 KB 686x438 JdkftOa9ou.mp4)
Here's an update of my shit, trying to post here weekly prevents me from stopping, so here's my procedural UI library from scratch on comic sans with bad lightning. >>205 You have an amazing artist, hope you guys are motivated t'ill the end.
>>206 That is really looking neat, Anon. Any plans to integrate a sprite sheet with different views on the guys as he turns and walks, etc.? Keep going Anon, we believe in you! :^)
>>208 >That is really looking neat I love you to >Any plans to integrate a sprite sheet I can't really draw sprite, in fact, the sprite isn't mine. I'm still practicing my human anatomy on paper. I'm considering buying a tablet or finding an artist who's willing to dedicate his free time on a game that look like that >with different views on the guys as he turns and walks, etc.? Right now for any character sprite, I plan on copying paper mario TTYD, so a walk cycle from front and a walk cycle from back. I'm going to test the 360 view with a normal map and a depth map this week just to test if I can get a perfect 3D illusion on this engine. It might make a good demo for finding an intership for the next semester.
>>209 You can literally just use your own human-anatomy practises to map out how to create sprite sheets and properly use them within your game. The mechanics of it all, yea? And then your block-out will make things really obvious for when the artist does come along. Lay some groundwork now ahead of time. >It might make a good demo for finding an intership for the next semester. It just might! Good luck, lad.
Open file (134.66 KB 1154x480 Sans titre.png)
Open file (41.49 KB 519x354 Sans titr2e.png)
barely did anything this week due to uni and searching an intership. I generated normal maps on sprites if provided a depth. Car is not mine obviously. The normals looks a bit noisy compare to the clean depth map. It does the job for now but if it's visually problematic I might look for a better way.
>>212 >The normals looks a bit noisy compare to the clean depth map. How many rays are you casting? Also, are you doing something to randomize the gather of the normal vectors? Good job, keep it up lad.
Open file (599.95 KB 1128x722 output1.webm)
Open file (215.43 KB 970x606 output.webm)
Had an ambitious plan for this week but failed miserably. But still, weekly progress >Added hand to indicate interaction >Implemented walking into water >Made tutorial for art guy how to make levels. Last one took a lot of time
Open file (19.06 KB 399x300 gendo1.jpg)
Not sure where else to post this: What do you think an "anti-Undertale" game would have? By "anti-Undertale" I mean something that doesn't punish you for becoming more powerful at the expense of others, and that isn't overly soft-hearted, but isn't over the top in edge either. I have some ideas as to how this game would work, but I'm curious about others' input.
Is there a cracked copy of Aseprite for Ubuntu?
How does wolfrpg compare to RPG maker?
>>212 On a small update on this: I used to only code on this project when I feel a bit down on life, but as of this week, my whole rendering is broken for good and the project is dead. For anyone who actually believe I could achieve anything with this, I couldn't get one interview for an intern. >>213 >How many rays are you casting? around 65k fo the terrain. Anything else isn't raycasted. It's just sprite well calculated at the exact spot and scale and there's a depth texture for cuting part of the sprites. >Good job, keep it up lad. nah, it's dead
>>217 yeah i posted without searching first, i'm retarded was a bitch to build and had to use an old version but it's finally working now
>>216 >>217 How is GraphicsGale compared to Aseprite?
Is Pyxel Edit good? Is it better than Aseprite?
>>221 Seconding. Mostly curious about how the animation compares to Aseprite. Also, fuck Aseprite's faggot devs.
>>221 impressive GET with that poster ID
Open file (111.83 KB 360x425 cirno_embarrassed.jpg)
Weekly progress >Added small splash animation >Continuous integration Dumped a lot of time to setup actions on GitHub. But now it automatically deploys to itch. >Pioneress now can do emojis Hope, CI will payoff in the long run. It took a lot of effort.
>>228 >emojis *Emoji, because they're Japanese.
>>229 >Emoji Thanks I didn't knew they are Japanese. But dictionary says >plural emoji or emojis
>>230 The dictionary also says that "nationalism" means something along the lines of "excessive patriotism", which it does not. And there are different dictionaries with different definitions. It is listed because enough idiots who don't know better have used "emojis" as the plural form despite that it is uncountable, being from Japan (and the worst thing to come out of that shithole in recent memory).
I've had this guilty urge lately to say fuck doing my own 3D engine and just use Unreal.
>>232 Whoa there, Anon. Don't be too hasty tbh.
Open file (159.21 KB 1774x989 ClipboardImage.png)
moar sprites still feels like they're missing something but I don't know what.
Hey /AGDG/ there's something I want to bounce by you guys, because I've been on the fence about it. I'm an anon who has undertaken the task of making a rewrite of feralpheonix's Uncommon Time, last year. As far as script, I've made a whole ton of progress on that front- about 70% done to be precise. Lately however, I've been meditating on just what kind of game I'd want to make. I've realized that the Uncommon time Project I've been making is exactly what I want to make. The problem is, I've been getting into Godot, and part of me wants to use parts of the story and go on my own path with it. I really don't know what to do, /AGDG/. RPGmakerVXAce is nice, but it has the problem I have with most of the entry-level game engines: accessible with some things, but completely asinine if you want to do anything more advanced. The thing is, I'm still learning how to use Godot. I have plenty of programming experience, except that It's frustrating trying to relearn how to program in GDscript. The last time I did game programming was flixel with Actionscript 3, that was years ago. It wouldn't be too hard for more to reimagine the characters, the setting and the world for what I've made for my Uncommon Time project, the problem is, I would have to redo all the busywork-related assets by scratch. If I do this, I would be able to actually sell the game for money, and not be bound by the requirements of Uncommon Time as an IP. The flip-side, with just using RPGmaker and hacking my way through with it. I could actually get this project done. I wouldn't make any money with it, and FP could have a reason to get pissed at me, but it would be an actually-done game. At times, THAT is the most important. I don't know what to do /AGDG/ what should I do?
>>123 https://www.youtube.com/watch?v=O60Pd7bDKQQ we made a trailer for the project in OP
>Start porn game >It's niche, not fetichistic shit, but niche >Slowly build fanbase >Very very slowly >Depression attacks >I stop publicly making updated >In that time my popularity explodes >But since I'm not around people assumed I abandoned the game >I didn't, I was working on it, just didn't want to interact with anyone >mfw I lost my oportunity to ride the wave Damn it.
>>238 are you JackONinedev? Porn is the easiest way to earn money these days, just make a triumphant return and people will eat your shit up. Even better, tell your story to your followers and you'l get extra support also post spoilered samples
>>239 >are you JackONinedev? Nah. I think Jack-O-Nine Tails is a cuck brothel game. >just make a triumphant return and people will eat your shit up I really don't want to rip people off or something. The porn game scene is bad enough as it is. There's still people supporting me, but if I continued to post progress and updates I'd have more money now without being a piece of shit. >Post spoilered samples I know, >3D gobbos from illusion, but when I started I didn't have a lot of options. I'm learning hot to draw for my upcoming game, both traditionally and pixel art for my upcoming game, last pic related. I'd also love to hire an artist for my other projects, because I really don't want to use Koikatsu, but I just have to. I'd share my profits on patreon, but I don't really make a lot of money.
>>240 >Nah. I think Jack-O-Nine Tails is a cuck brothel game. guy was agdg too >3D gobbos from illusion the style makes things nondestinct. I think I might have seen your game... even a demo, a while ago on 8. But that could have been another guy using Illusion's models If you feel like a piece of shit about taking peoples money, just make an update to the game. Make it worth their time though they are coomer degenerates and perhaps should be milked dry instead
>>241 >guy was agdg too I know he was, but that doesn't change how I feel about a game where you only train your waifus so they can be fucked by others, regardless of the option to keep them, it means nothing if the end goal of the game is making money out of selling them. >the style makes things nondestinct I know and I hate it. Most people use Honey Select or that new one that came out relatively recently, though. I use Koikatsu because of a more anime style, since I wanted the game to be 2D in the first place. >If you feel like a piece of shit about taking peoples money, just make an update to the game. Make it worth their time I already am, I did release an update recently, but it's far from what I wanted it to be. >though they are coomer degenerates and perhaps should be milked dry instead I only have 4 patrons so who knows. And I know one of them just pledges out of pity. I wish I could make enough to actually focus on game development exclusively. Here's a link, if you are interested. I don't have anything behind pay walls because that's gay. https://mega.nz/#F!0dt01SKR!r5TuTMcYfA1woIdH6JGYcA
Weekly progress >Finally made a menu >Arts guy made decent looking level >I had to refactor this unmanageable mess with few dozens of objects On the bright side I was forced to learn to make tiles that are bigger than one tile. >>231 I'll keep that in mind
>>242 >Ich will yeah that was what I remember good luck on the new project, my dude. Hope it will fare better. Don't let depression get ya, the fact you have patrons at all and have people that care for your stuff, even if degenerate, is reason enough not to take the blackpill.
>>243 Looking good, anon, keep at it!
Open file (4.19 MB 1920x1080 Raycast reaction.mp4)
I got raycast and damage response working. Now all I have to do is actually program an enemy AI. Should be totally easy. :^) :^(
>>246 Good work. >npc ai Maybe study A* path planning Anon? https://www.gameenginebook.com/
>>249 It's Unity, so I can likely use their navmeshes. If not, then I could make use of A*. Thanks, anon.
Weekly progress >Implemented dialog system. It's simple AF, but took a lot of time to figure out.
Open file (47.53 KB 752x554 ClipboardImage.png)
working on implementing a basic jump mechanic, the main problem i'm having is I don't know where to put the last block to prevent mashing the jump button for infinite height. >inb4 fisher price code i've always hated programming, i've just started working on this for real and it should come on its own while I'm working on it.
>>253 >Fisher-Price code Is that Scratch? I've always thought it looked like a great approach to teach beginners programming logic. Eventually you'd want to leave the interface behind for simple text itself, but the enforced structure is probably helpful in the beginning when you're just beginning to learn coding I imagine.
>>254 it's Stencyl, working on making a metroidvania since there was another guy doing the same thing with the same engine (Ghost Song), but after I started working with it I found out that he switched to Unity about a year ago because Stencyl was too restrictive for him.
>>255 Interesting. Apparently Stencyl's design mode that you capped here was taken from Scratch. >"...The concept of Design Mode as a form of end-user development originated with MIT's Scratch computer language learning environment, and was used with permission for Stencyl." sauce https://en.wikipedia.org/wiki/Stencyl If you're still having problems, figuring the the step and can explain what you're goal is in pseudo-code, I imagine that I or others here might be able to help.
Open file (54.87 KB 1034x497 ClipboardImage.png)
>>256 finally got it, might as well post it for any other nodevs that use the same engine doesn't account for collisions yet though, so the player can still just walk over pits if they don't jump
>>257 Good job. It looks like you can setup fairly complex conditional tests with Stencyl. Have you switched over and looked at it in the text view yet? Keep going Anon!
i think the most daunting challengs for me is going to be creating the sheer amount of artwork needed for the game. programming is actually a very small portion of the work compared to making assets. would it be worth it in the long run to hire a guy purely for art?
>>261 I feel you man. I would've dropped project dong ago if not to highly motivated art guy. Not that it's necessary or something.
>>261 literally just create shitty stick-figures and put them on sprites as proxies. This will A) allow you to keep making progress instead of over-thinking the 'muh_arts' meme B) allow you to keep making progress by going ahead and blocking-out the animations, motion paths etc. C) allow you to keep making progress. Did I mention just keep moving forward Anon? Getting hung up on things you have little control over and not just figuring out how to go over, under, or through the obstacle is the single.greatest.key. to failure. Now stop making excuses and get your ass in gear. Time is short. Keep moving forward.
>>246 >>250 If you're aware of "Unity Learn", there is full course on NPC AI. https://learn.unity.com/course/artificial-intelligence-for-beginners
Fresh progress >Working on AI Damn, it's harder than I thought >Implemented action list >Still have no idea how to implement GoToPostion action Hope to resolve it until next week's report. Also I think I need sensor system.
>>271 My images
>>272 Reminds me of Stardew Valley
Open file (4.64 MB 1280x720 2020-07-18_05-41-38.mp4)
Open file (936.01 KB 1280x720 2020-07-18_18-57-00.mp4)
We have huge fans
>>275 This looks so comfy eerie Comfeerie
Open file (126.07 KB 432x434 output.webm)
Died for a few weeks but I think, I'm back on track. >Added icons for actions >Added GoTo action >Implemented "Speak" action >Refactored Doors >Added first sensor to check if toilet is occupied >Added "Mine" level, artist was working on for a while My AI code is a mess. I need to clean it up heavily.
Open file (143.93 KB 639x416 RT-post-rehersal-day1.png)
Rehearsal day 1 is complete. >Notable changes --New-character Marybelle is now a part of Aubrey and Alto's mini-quest to get Aubrey a legal ID- mostly since, 1. She's his mom. and 2. She's more or less a living-legend in-game. I've got it planned so that act 3 sidequests explore that the "living legend" part is not quite hyperbole. -Rehersal sequences will be changed to account for Alto's new siblings, Mezzo and Soprano. And unlike OG-UT, shit gets real on rehearsal day 3.
Open file (10.06 MB 1280x720 2020-08-05 02-25-27.webm)
Containers and shops
Open file (245.09 KB 960x642 output.webm)
>Implemented light switch >Implemented minecart fall >Fixed low FPS in mine level >Fixed collisions in mine >Implemented light flicker
Currently laying down dialogue sequences for cutscenes for rehearsal days two, three and the first performance atop Metronome Tower. Pic related is just before you actually enter Metronome tower. -I admit, these cutscenes are just as wordy as OG-UT's are. My hope is that my storytelling will be much more compelling and entertaining. If there is a way I can cut dialogue and get the story I want to tell across, let me know, please. -I want to get things to be at bare minimum, Programmer's-art-level ready. Ideal goal is nuclear teagan, but when demo-day comes I'll release what I've got, then update it once I get to Nuclear Teagan. After that, I wait for the next demo day to release. >>296 >>298 Diggin' that shit, anons, keep it up!
Open file (114.21 KB 640x418 UTRW-empty-manor.png)
Weekly progress update, didn't feel like I did too much, but this is something. -- Changed an error where the Solfege shopkeep incorrectly refers to the band as "girls" despite clearly seeing Mezzo as a boy two other lines in. -- More progress done on the front of the rehearsal days. -- Changed up the music for when it starts snowing in Arpeggio pass, I would like to keep the music track for Aubrey's theme as intended.. -- sporadically adjusted a few portrait choices for characters in cutscenes -- Mapping for spoiler-worthy-stuff. -- Rewritten some sequences in the new, empty manor map of Bel Canto (pic related). Old version (and new version when implemented) of the writing are viewable by interacting with three spots while either Saki or Marybelle are in your party. Marybelle joins your party temporarily during the post-rehearsal sequences of day one and two, but not day three.
Weekly report >Implemented bladder for pioneeres >Implemented framework for AI >Fixed collisions here and there >Added show emoji action
Open file (302.53 KB 960x642 output.webm)
Progress: >Added new enemy >Added AI for it Framework turned out nicely. I wrote like 5 lines of GDScript to make it work. >New death animations, thanks to pixel artist
Open file (322.12 KB 1193x841 UTRW-polyphony-jail.png)
- Day 2 progress : rehearsal sequence complete - Day 2 Post-Rehearsal still in progress, dialogue is laid out, cutscene pathing and other event semantics will be continued. - Day 3 dialogue almost fully laid out. - Squashed a bug in Teagan's room that continues displaying Teagan from the post-move-in-sequence of Bel-Canto. - Working on mapping for polyphony's new guard-station/jail. - Laid out some sparse normal NPC dialogue for the secret-final-arc. Little things that will make everything come together, and are best gotten out of the way now. - Audio software and tools set-up and ready to start producing. No guarantee I'll actually get to that this month or september. Art will be more important once I get my dialogue progress to act 2.
Small update for today. Had quite a few missed dev-days due to IRL getting in the way. - Day 2 post-rehearsal progress continued. Rewrite of Saki's backstory implemented. New Graveyard cutscene implemented. (pic related) - Updated raw writing for Act 2 Pizzicato Trail revisit. Holy shit, Bel Canto's finally coming along, I'M GONNA MAKE IT!
HOO BOY! I thought I wasn't getting much done this week like last week, but HOLY FUCK! The crunchiest scene in the entire rehearsal set is done. Now, day 3 I unfortunately cannot show much to you due to just exactly what that scene sets up, so you get an angry-stare-Teagan instead. On another note, due to the logistics required for the upcoming cutscenes, The Cantabile manor has it's front yard trimmed. -Day 3 Rehearsal cutscene complete -Day 3 post-rehersal cutscenes have the script implemented, -Picked out a temp track from Tales of Symphonia- Judgement of Mana, to put in place as Metronome Tower's music. -Script progress for act 2 updated, specifically, some emotionally-raw moments for waifufags. Gotta have those to make the upper moments all the more sweeter you know.
Hey everyone, this update I've felt like I'm made a good chunk of significant progress. Which is nice, because I'm gonna take a little break from gamedev to flex my drawing muscles on a small non-UT project I've been putting off. Weekly Progress Report -Added in about half of the day 3 post-rehearsal cutscenes and events. It's a dialogue-heavy day for sure, but I hope the pacing keeps things from dragging on. -Edited Bel Canto's inn to be 1. more fitting of the high-class-town area, and 2. to accomodate space for new cutscenes. (Pic related) -Changed Mezzo's class title from rhythmist to percussionist. -Added in an act 2 boss fight to the debug room. Spoiler-heavy. Ingame, it will be skippable as to prevent what would be a soft-lock for that area. -Added in in events that store recovery items away during Glissando Arena. Not fully implemented of course, but it should be implemented come the Nuclear Teagan release. See you the 28th!
Open file (208.66 KB 400x300 LAZ_01-work.png)
A got a bit more on track. So, weekly report. >Added interactive popups >Added cockpit >Made essential buttons work >Fixed bug with interaction, some anon pointed out
Open file (6.75 MB 1920x996 2020-09-24_12-46-22.mp4)
Open file (6.08 MB 1920x996 2020-09-24_17-01-16.mp4)
tme to get wet
>>321 >1st video >water effect It's particle system or some kind of animation ?
Weekly report >Added energy bar >Added energy
Weekly Progress Report - Back from side project dealings. Ended up changing gears to something different than drawing, but no biggie. - Did some writing for Act 2 and 3, specifically post-party-split dialogue, and Arietta's Uncommon time. Back in business, time to get shit done.
Open file (1.29 MB 1280x962 output.webm)
Yeerk's weekly >AI now can react on Yeerk I was hoping to also add attack, but unfortunately it stays for the next week.
Uncommon Time Rewrite Progress Current Progress report -Continued with raw writing for act 2 and 3. Getting close to completion. -Drew some initial concepts for the ex-worm and ex-faggot. Not much done for the current playable progress of the game, but since I got art to eventually do. Pic-related, is a super-deformed imagining of what the faggot and the worm will now look like: Sakarias "Saki" Toikka, The wild-man. Auberon "Aubrey" Spica, the faerie-halfing from long-ago. this is not the intended artstyle, this is something silly and without anatomy perfectionism so I can show you characters at their most-basic form
Open file (212.42 KB 1280x962 output.webm)
Yeerk's weekly >Still working on attack Animation is in place, but no hitbox yet and no mechanism to exit the state.
Open file (107.98 KB 640x414 the_pain_of_vomiting.png)
>>326 Uncommon time Rewrite Weekly Progress Report -Changed up character class names; only the Cantabiles will have musician-themed class names. -Continued progress on day 3 post-rehearsal cutscenes. pic related -Added a reset button for Metronome Tower's pre-boss area to prevent a potential post-cutscene soft-lock. -Certain Act 2 writing sequences put in limbo for now. Not technically cut, but close to the chopping block and I'm hesitant on it.
Open file (1.09 MB 2048x1202 output.webm)
After two weeks instead of one >Pineeres's attack is finally working >Yeerk is dying I've had to implement additional animation system that is unrelated to movement for that. Pretty happy with result. Core mechanics are almost done. Hope to finish them next week.
>>328 since the cafe was down last time I was doing weekly updates, this one is a bi-weekly plus one day because yesterdayt was not worth uploading on. No screenshot either because nothing I've done this week is really worth showing. Weekly Progress Report -Finally got around to downloading inkscape and testing shading on it. My aim for this week is to draw a character and get a completed art piece out to you guys so I can show "yes, I can do art, and at the barest of minimums have it not be shit". -Crushed the rest of the unformatted nametags in Nuclear Teagan. -Crushed unformatted nametags in Glissando Arena.
Open file (313.07 KB 960x642 output.webm)
Yeekr's weekly >Implemented reaction on dead bodies >It's now possible to eat pioneeres Art guy was busy so visuals aren there yet. Shouldn't be a problem though. Main mechanics are ready. It makes me happy. I plan on making 1st level by the demo day.
Open file (13.17 MB 1920x996 leejy5.mp4)
>>322 sorry dudem missed your question. It's an animated alpha map
DEMO DAY currently underway on these boards: https://zzzchan.xyz/v/thread/18328.html#18329 https://8chan.moe/v/res/149845.html post your stuff, repost here: >>338
>>336 can you reupload anon i know im days late but i wanna try your game been looking forward to it
Open file (383.03 KB 787x449 ClipboardImage.png)
>>147 Reminds me of Deus Ex. What's your game called?
>>344 >>351 this is the game
>>123 Does this board have a Board Owner?
>>368 I ran the original 8chan board for a few years, while the anon.cafe one had a different owner for a while. I jannied here, didn't log in for a long time, now I discover it has been transferred to me. So the answer is "yeah, it has one".
>>253 Start writing code threw a language in an engine,I say this by experience it much more modifiable and easy in the long-term.
>>370 Congratulations, I guess.
Downloaded Unreal engine 5 to mess around and make a game or two. Got nowhere with it yet, since I'm starting from scratch. Anyone else using unreal 5?
>>123 Can I use this space to bounce ideas off?
Open file (42.04 KB 315x250 UIIdHw.png)
I've started several projects (games and visual novels). I'm not quite sure which one is good enough to be worth finishing. You can find almost all of them on: qrayz.itch.io
>>451 HackSim seems like a good concept to put in a game instead of the typical hacking minigame. I didn't try the others, especially the VNs since they rarely feel like games to me, maybe I'll get around to them later.
Open file (29.08 KB 1204x838 astar.png)
Open file (30.50 KB 1204x838 astar_colors.png)
Open file (44.74 KB 1204x838 astar_debug.png)
Finally got A* path-finding working after a couple of days of banging my head against it. Test program here is done with Raylib.
>>477 based raylib user, how are you liking it?
>>480 It's a true joy to work in. I'd recommend it to anyone, really. Dead simple to use, only needs a single header included, no cumbersome build system, with tons of useful built-in functions (all optional, mind you) with straightforward interfaces and a minimum of proprietary objects. To any beginners out there still fucking around with SDL2 or SFML or god forbid, raw OpenGL, you gotta switch over.
>>481 >To any beginners out there still fucking around with SDL2 or SFML or god forbid, raw OpenGL, you gotta switch over. Does it have support for things like sound, networking, and concurrency?
>>529 Raylib is a single-header library, so I'm sure it'll play fine with your threaded and networked application. That said, neither of those are 'built-in'; you would need to provide your own. Sound, however, is very well supported, see 'module: raudio' on the cheat sheet: ht tps://www.raylib.com/cheatsheet/cheatsheet.html As far as networking goes, no it's not included right now. See this thread about developing a networking module for Raylib and the solutions users came up in the meantime: ht tps://github.com/raysan5/raylib/issues/753 People seem to like enet: ht tps://github.com/zpl-c/enet ht tps://github.com/nxrighthere/ENet-CSharp Here's an example of using enet with Raylib: ht tps://github.com/JeffM2501/raylib_networking_example nbnet was also mentioned at the bottom but the link was dead there so: ht tps://github.com/nathhB/nbnet Just gonna drop this here for everyone too - giant curated list of game development libraries: ht tps://github.com/Caerind/AwesomeCppGameDev World's your oyster, mates. As for threading, CPP has had concurrency support since C++11, and using posix threads (pthread.h) should be supported by all platforms. The trick to threading, of course, is all about resource access, as long as you aren't trying to access a resource (something in RAM, the GPU, whatever) with two threads at once, you should be alright. So while trying to render a complex scene using two or more draw threads will absolutely fuck your shit up, using a thread to calculate updates to game state (pathfinding, line-of-sight, physics, sound, background resource loading, etc. while your main thread is going through all your draw lists, you should be alright. You also have to ask yourself, "Do I really need concurrency in my game?" Even toasters today have 3+ GHz processors pipelined miles deep. I guarantee you can see better than the 2-4x speedup of threading by just fixing your approach somewhere. Got 300 entities recalculating their pathfinding every frame and struggling to hit 60 FPS? List them up, and update 30 of them every frame, in round-robin fashion. Now you're updating everyone's path 10 times a second instead of 60 and your shit's 6x faster. Stuff like that. If you're even considering raylib for your project, I really wouldn't worry about threading. Look at the complexity and speed of games in the 386 to pentium 4 era and look at the processing power we've got today. You could absolutely make a Quake-like in Raylib if you wanted to. As long as you don't write your shit all retarded, you'll be alright. Here's a really basic threading example for raylib: ht tps://www.raylib.com/examples/core/loader.html?name=core_loading_thread
>>530 Great reply thanks. I'll look into it now.
Open file (376.05 KB 1284x838 DOOM.png)
Open file (254.47 KB 1284x838 DOOOM.png)
Open file (154.30 KB 1284x838 DOOOOM.png)
Open file (94.43 KB 1284x838 DOOOOOM.png)
Was curious about the state of DOOM-style BSP engines since I still see so much chatter over modding and source ports and shit. Went looking for some actually free code and found something called rtdoom over on the shithubs ht tps://github.com/mausimus/rtdoom Took a few minutes to change a few things to get it to compile on linux with GNU Make and somehow it worked. Dropped in some WAD off freedoom and this is the result. Occasional visual bugs like in the last pic and Z-level movement isn't handled too well but otherwise ran ok.
Open file (73.71 KB 964x758 high.png)
Open file (61.39 KB 964x758 low1.png)
Open file (39.42 KB 964x758 low2.png)
Playing around a bit with 3D in Raylib. Loaded a mesh from an OBJ file, then rendered it at 320x240 and scaled up 3x for a kind of old-school, PS1 look. First shot is with the old 512x512 texture, second is scaled down to 64x64 and contrast tweaked a bit to bring out some detail. If I get some free time again I think I'll try making the camera first person and use a vertex lighting shader too.
Open file (73.48 KB 960x720 screenshot000.png)
Open file (47.46 KB 960x720 screenshot001.png)
>>583 Oops, had bilinear filtering on for the last 2 shots. These are more what I was going for.
Open file (102.23 KB 960x720 screenshot000.png)
Open file (92.35 KB 960x720 screenshot001.png)
Open file (97.05 KB 960x720 screenshot002.png)
>>585 Now with affine texture mapping by adding "noperspective" interpolation qualifier to the default vertex and fragment shaders. Next I gotta find a more complex model to try it out on.
>>586 Since they won't upload: base.vs #version 330 // Input vertex attributes in vec3 vertexPosition; in vec2 vertexTexCoord; in vec3 vertexNormal; in vec4 vertexColor; // Input uniform values uniform mat4 mvp; // Output vertex attributes (to fragment shader) //out vec2 fragTexCoord; noperspective out vec2 fragTexCoord; out vec4 fragColor; // NOTE: Add here your custom variables void main() { // Send vertex attributes to fragment shader fragTexCoord = vertexTexCoord; fragColor = vertexColor; // Calculate final vertex position gl_Position = mvp*vec4(vertexPosition, 1.0); } base.fs #version 330 // Input vertex attributes (from vertex shader) //in vec2 fragTexCoord; noperspective in vec2 fragTexCoord; in vec4 fragColor; // Input uniform values uniform sampler2D texture0; uniform vec4 colDiffuse; // Output fragment color out vec4 finalColor; // NOTE: Add here your custom variables void main() { // Texel color fetching from texture sampler vec4 texelColor = texture(texture0, fragTexCoord); // NOTE: Implement here your fragment shader code finalColor = texelColor*colDiffuse; } relevant bit in main.cpp: Shader shader = LoadShader("base.vs", "base.fs"); Model model = LoadModel("crate.obj"); // Load model Texture2D texture = LoadTexture("crate1_diffuse_small.png"); // Load model texture //SetTextureFilter(texture, TEXTURE_FILTER_BILINEAR); model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture; // Set map diffuse texture model.materials[0].shader = shader; // Set material shader
Open file (48.44 KB 960x720 screenshot000.png)
Open file (53.36 KB 960x720 screenshot001.png)
Open file (65.15 KB 960x720 _screenshot000.png)
Open file (69.71 KB 960x720 _screenshot001.png)
Well, shit. Ifrit was a little hard because he came upside down, scaled up 1000x, and needed two diffuse textures but otherwise they're just plug and play. Models grabbed from ht tps://www.models-resource.com by the way.
Open file (85.67 KB 960x720 screenshot002.png)
Open file (83.95 KB 960x720 screenshot000.png)
Open file (124.52 KB 960x720 screenshot001.png)
>>588 An attempt at lighting. Looking a little washed out, think I set the ambient light value too high. Shame too though, it appears the lighting model from here ht tps://github.com/raysan5/raylib/blob/master/examples/shaders/shaders_basic_lighting.c is Phong (per-pixel specular) and not the more period-accurate Gouraud (per-vertex). Gonna have to read up on lighting models and shader code to see if I can't change that, though I did find some code here ht tps://garykeen27.wixsite.com/portfolio/gouraud-shading that might do it.
>>589 Maybe you clipping maximum brightness for a texture. 200red50green50blue+150 white=255red,200green,200blue, which is almost white. if Can you change shader, so its capped by the original texture values? That way stuff could only become darker, but never washed out. Try rendering some gradients to look what is going on. However washed up look is quite common for simple light engine in games, like in fucking dark souls 2.
Open file (129.80 KB 960x720 srgbtexture_gamma.png)
Open file (118.72 KB 960x720 srgb_tolinear_gamma.png)
Open file (264.80 KB 1920x720 comparison.png)
Open file (88.13 KB 645x462 gimp_colorspace.png)
>>590 >clamping colors in the shader I player around with that, didn't fix it. The problem ended up being color space and gamma correction. Turns out I was using sRGB color space PNG images for the textures (which is normal for images meant to be displayed as-is on a monitor) and the final step in the fragment shader was applying gamma correction to convert from linear color space to the sRGB color space expected by the monitor. The double conversion was causing the washout. Commenting out the gamma correction resulted in something somewhat closer to correct, but that wasn't a proper fix. It turns out color and lighting calculations need to be done in linear color space for the math to work out right. The proper way to do it is to either use texture images that are already in linear color space (GIMP can do this for you, see pic related), do calculations, then gamma correct OR, use sRGB color space textures, convert to linear color space in the shader, do calculations, then gamma correct back to sRGB for display. In the side-by-side comparison shot, you can see I've done that in the 3rd and 4th pics, resulting in (virtually) identical outputs. The other images are all incorrect in some way or another. See references for more information and the shader code I borrowed for the color space conversion. The final fragment shader ended up looking like this: #version 330 // Input vertex attributes (from vertex shader) in vec3 fragPosition; //in vec2 fragTexCoord; noperspective in vec2 fragTexCoord; //in vec4 fragColor; in vec3 fragNormal; // Input uniform values uniform sampler2D texture0; uniform vec4 colDiffuse; // Output fragment color out vec4 finalColor; // NOTE: Add here your custom variables #define MAX_LIGHTS 4 #define LIGHT_DIRECTIONAL 0 #define LIGHT_POINT 1 struct MaterialProperty { vec3 color; int useSampler; sampler2D sampler; }; struct Light { int enabled; int type; vec3 position; vec3 target; vec4 color; }; // Input lighting values uniform Light lights[MAX_LIGHTS]; uniform vec4 ambient; uniform vec3 viewPos; const float SRGB_ALPHA = 0.055; // Converts a single srgb channel to rgb float srgb_to_linear(float channel) { if (channel <= 0.04045) { return channel / 12.92; } else { return pow((channel + SRGB_ALPHA) / (1.0 + SRGB_ALPHA), 2.4); } } // Converts a srgb color to a linear rgb color (exact, not approximated) vec4 srgb_to_rgb(vec4 srgb) { return vec4( srgb_to_linear(srgb.r), srgb_to_linear(srgb.g), srgb_to_linear(srgb.b), srgb.a); } void main() { // Texel color fetching from texture sampler //vec4 texelColor = texture(texture0, fragTexCoord); // get texture color as-is vec4 texelColor = srgb_to_rgb(texture(texture0, fragTexCoord)); // get fragment color from texture and convert to linear color space vec3 lightDot = vec3(0.0); vec3 normal = normalize(fragNormal); vec3 viewD = normalize(viewPos - fragPosition); vec3 specular = vec3(0.0); // NOTE: Implement here your fragment shader code for (int i = 0; i < MAX_LIGHTS; i++) { if (lights[i].enabled == 1) { vec3 light = vec3(0.0); if (lights[i].type == LIGHT_DIRECTIONAL) { light = -normalize(lights[i].target - lights[i].position); } if (lights[i].type == LIGHT_POINT) { light = normalize(lights[i].position - fragPosition); } float NdotL = max(dot(normal, light), 0.0); lightDot += lights[i].color.rgb*NdotL; float specCo = 0.0; if (NdotL > 0.0) specCo = pow(max(0.0, dot(viewD, reflect(-(light), normal))), 16.0); // 16 refers to shine specular += specCo; } } finalColor = (texelColor*((colDiffuse + vec4(specular, 1.0))*vec4(lightDot, 1.0))); finalColor += texelColor*(ambient/10.0)*colDiffuse; // Gamma correction finalColor = pow(finalColor, vec4(1.0/2.2)); } references: ht tps://en.wikipedia.org/wiki/SRGB ht tps://learnopengl.com/Advanced-Lighting/Gamma-Correction ht tps://github.com/tobspr/GLSL-Color-Spaces/blob/master/ColorSpaces.inc.glsl ht tps://www.shadertoy.com/view/lscSzl
Open file (20.21 KB 128x128 ffdtex0.png)
Open file (29.66 KB 128x128 ffdtex0_linear.png)
Open file (17.42 KB 128x128 ffdtex1.png)
Open file (22.95 KB 128x128 ffdtex1_linear.png)
>>592 The textures in question - you can see the linear color space ones are darker and a bit "black-crushed". Or not, it looks like they're being converted to sRGB on upload.
>>593 Nevermind, they posted more or less ok.
Open file (74.24 KB 642x482 bb4.jpg)
Open file (30.86 KB 640x480 bl1.png)
Open file (106.68 KB 640x480 bl2.png)
https://ily888.itch.io/billys-quest-for-love instruction manual → https://shithole.neocities.org/gggg.html UPDATED JUNE 2023!! r18+ nudity , drugs and course language. Guide Billy in his life searching for love. go to school, interact with the residents of the village, and find love! maybe.. Your choices will affect later events. Working time clock 1 sec is 1 min. game ends on the 5th day. the usual game flow goes like this: go to school in the morning, wait for it to get dark outside, then go to sleep in the bed, repeat until day 5. Controls: Arroy keys to move. z is accept/interact. x is menu/cancel. Bugs:-flying the airship over doors will get u stuck. -dont press any directions during scripted events like the intro, u will get stuck. update 2023: -fixed skipping school bug. -removed save from menu. -removed garbage from pocket watch. -removed junk hud. -more information. more dialogs. changed some dialogs. -signs. -school music is quieter. -a message to sleep at night. -more wheelz interaction. -princess doesnt run away after festival. -airship now requires chocolate. -chocolate is much cheaper. -longer window for finding magic tiger. -skipping school being triggered at the wrong time glitch fixed.
Open file (93.61 KB 1494x987 mud.png)
Got around to working on an older long-term project again, a graphical MUD. Been a boring couple of days doing nothing but sockets, threads, and MySQL but account creation, login, and chat is in place at least. Only a few more days like this and I might even get to some gameplay.
>>755 Cool. Do you have a specific idea in mind?
Open file (580.88 KB 1184x729 mer1.jpeg)
Open file (376.83 KB 1202x1080 mer2.jpeg)
Open file (331.86 KB 693x555 mer3.png)
Open file (86.05 KB 950x534 arena1.jpeg)
Open file (296.25 KB 2560x1440 tes.jpeg)
>>756 I have a lot of ideas, but right now they're kind of all over the place and not yet crystallized. So right now I'm cranking out the boring ass back-end infrastructure stuff while I work out the gameplay details and come up with something both interesting, yet scoped properly enough to actually be doable in a human lifespan. What I have for an idea so far is your classic fantasy, first-gen MMORPG-like graphical MUD, sometimes lovingly referred to as a "database simulator" if you know what the back end looks like on one of those. As for graphics and UI, think Meridian 59 or the Everquest UI from 1999 - Large text box in the center, surrounded by hotkeys and UI elements on the sides, and first-person 3D world view above. I'm trying to take the best features of MUDs like the high degree of interactivity (especially via commands like /look, etc.) and ease of content creation (mainly descriptive text, dialog, and database entries) and meld that with the controls of a more modern RPG: actually being able to backspace before sending text, WASD to move, hotkeys, mouse look, click to select, drag-and-drop items, etc. "Rooms" will exist like in your average MUD, only that you will be able to move around freely inside of them. Think again, dense, meandering, and claustrophobic Everquest maps vs seamlessly loading, sprawling, empty nu-RPG maps. Even outdoor areas will be "rooms". Level architecture may be DOOM-like - I would like to be able to leverage the mature map editing resources available for DOOM if I can, rather than use blender or roll my own. As for models, NPCs, other players, MOBs, etc. should be billboards to start (think Elder Scrolls Arena or Daggerfall), though a move to full-3D in the future would be cool. What I would like to do to stand out, if not exactly to innovate, is to bring back the interactivity you can find in MUDs, as well as in tabletop games - being able to use words to get additional information or manipulate the environment. Think typing /search to search the area around you for traps, hidden passages, and similar. Or using /look, to get clues about an area without them having to be explicitly modeled into the world: animal tracks, scratches in the floor, a suspicious crack in a wall. Being able to /get something that only exists in text, maybe only after having /search'ed for it. Should allow for a small team to flesh out a world without needing 200 indian sweatshop workers with pirated copies of Maya to do it. That's what I got so far.
Open file (68.97 KB 1024x640 wiz4.jpeg)
Open file (143.45 KB 750x563 mer4.jpeg)
Open file (450.42 KB 900x675 equi.jpg)
Open file (577.64 KB 1920x1080 tes2.jpeg)
Open file (280.38 KB 1280x960 wiz2.jpeg)
More reference pics.
>>757 >>758 That does sound fun, good luck anon!
>>764 Thanks. It should be fun, if you're into tabletop and old-school gameplay (and it ever gets made). Making an MMORPG (or more realistically, an MORPG) has been an almost life-long dream of mine, ever since I sank my highschool years into Everquest. Since then, I've tried to follow the MMO space but nothing has kept my interest for more than a few weeks. Later, I (tried to) get into MUDs, seeing as they influenced the making of EQ to such a degree that they were taken to court by the DIKUMUD guys and made to swear that their codebase did not contain any stolen DIKU code. I was never able to get past the telnet clunkiness and having to set macros for every little thing just to kind of keep up with the scrolling text "/attack %t with handgun" and shit. Never got into dwarf fortress for that reason too but whatever. Later got into tabletop from seeing how a lot of MUD's more free-form gameplay was based off of that, focus on small-group dungeon crawls, abstracting the environment away through descriptive text, high level of interactivity, etc. Everquest's world, lore, major NPCs, etc. were also lifted directly from one of the dev's old tabletop campaigns, which I believe was a major factor in them getting a game of that scale out the door with the team and time they had, couple dozen people and ~3 years IIRC. Recently, I've been following the development of an indie MMORPG by the name of Monsters & Memories, an Everquest clone, surprisingly the first one since EQ's release 24 years ago (WoW clones being a dime a dozen). The lead (dev? designer?), Shawn Lord, was a designer on EQ since the (very poorly received) Shadows of Luclin expansion, though I believe he was lead designer during the (very well received) Planes of Power expansion. They too, are going old school with the gameplay and graphics, and they are also incorporating MUD-style text commands into the game. He talks about MUD commands a little at the end of this video ht tps://yewtu.be/watch?v=-Vihut0iKt4 The guy streams his development on the Monsters and Memories channel, and it can be pretty interesting, at least to listen to. You get to see a lot of gray-box work, database stuff, talk about design, etc. Worth a watch in my opinion. Shawn's personal channel - ht tps://yewtu.be/channel/UCFl_3ktLNPYUeicLmhSvB1Q?sort_by=newest has some good videos about behind-the-scenes EQ development and design stuff, a lot of which was news to the fan community when he posted it, quite cool if you're interested in that sort of thing. So I've mainly been working on network stuff recently. I had been using a TCP sockets library, mainly because it's MIT licensed, easy to use, and offers TLS/SSL encryption. I know, TCP can have some nasty latency versus UDP and nobody uses it outside of browser games which are forced to, but apparently there are some "zero-latency" tricks out there like running multiple sockets per client (being able to send another packet before receiving the ack from the first one), disabling Nagle's algorithm (an anti-network congestion thing where small packets are buffered and combined into one larger one), reducing resend delay to the minimum, etc. I'm not too happy with it though. I've had to make some changes to it (which is something I don't like to with external libraries) to set some socket options that need to be set on creation, as well as to allow the sending and receiving of unsigned chars, not just signed ones. It also doesn't have async support out of the box, though I've been able to add it with STL threads. I currently have on the server side a threaded listener that gets incoming socket connections and adds them to a queue for the main thread to pick up. The main thread passes these to a threaded sender and receiver, which simply loops forever select()-ing the open sockets for activity, and if found, getting their packets and adding them to a queue for the main thread to process. The async sender/receiver also checks for new packets to send from a queue that the main thread pushes to. The client is similar, with a main thread for game stuff (input, display, etc.) and a threaded TCP client for async sending and receiving. It works, for now. I've been doing a lot of reading though, and network stuff is a lot more involved than I first believed. Thus I'm looking evaluating nbnet - ht tps://github.com/nathhB/nbnet and enet ht tps://github.com/lsalzman/enet to save me a lot of low-level networking work, as well as to be able to use UDP, albeit with "TCP features" like ordered packets and reliable packets (will resend if no ack). enet is apparently mature and well-supported, notable for being developed for the Sauerbraten/Cube or whatever FPS. The tutorial at ht tp://sauerbraten.org/enet/Tutorial.html makes it seem straight-forward enough. nbnet is simpler, focused on smaller, hobbyist use. That said, it has an example showing off most of the library's features, using raylib, which is awesome. You can see videos of the raylib example in action here ht tps://yewtu.be/watch?v=BJl_XN3QJhQ and a little tank game here ht tps://yewtu.be/watch?v=Nz28tMpLfTQ From here, I'm going to be testing these network libraries, as well as developing a simple offline RPG to give me something to actually simulate on client and server, something like the raylib example: players log in, show up in some enclosed space with a color and player name, move around, chat, maybe fight an enemy, etc. Some of what I've been reading: ht tps://web.archive.org/web/20180823014904/https://gafferongames.com/categories/building-a-game-network-protocol ht tps://pvigier.github.io/2019/09/08/beginner-guide-game-networking.html ht tps://www.cs.umd.edu/class/spring2018/cmsc425/Lects/lect22-multiplayer.pdf ht tp://ithare.com/tcp-peculiarities-for-games-part-1/ [/blog]
Open file (5.74 KB 274x311 37923874.png)
It sure is great when something planned out in your head goes off juuuuust right. (keypad for a safe, four letter code)
>>799 Cool. What's it for?
Open file (27.55 KB 1033x813 mud_multi.png)
Open file (827.92 KB 1916x1014 axes.png)
Open file (35.00 KB 1290x844 collision.png)
Open file (32.57 KB 1285x843 collision2.png)
>>799 What went just right? You got some code or a video to follow up with? Let us know what you're working on. >>778 Update. I ended up going with enet for networking. It's mature, straight-forward to use, allows multiple channels per connection, and does both reliable (guaranteed delivery) and unreliable packets. Played around a bit and got to where multiple players could log in and the other players would see their movements. Definitely need to use client-side prediction though, because even on the same machine (with 8ms round-trip time for some reason, OS stuff?), movement was pretty jerky even at 30 server ticks (updates) per second. enet documentation leaves a lot to be desired though, like all fucking libraries it seems, so there's still a lot of features I'm not able to use yet. Have to do some profiling too then to see if these socket operations and stuff really aren't blocking. Next up with networking is to see about using cereal ht tps://github.com/USCiLab/cereal to serialize/deserialize (convert cpp types like float, etc. to bytes and back again) data for packets instead of the ghetto casting to and from uint8_t I'm doing now. Speaking of libraries sucking a dick. I'm still looking for a C/C++ physics library for capsule -> mesh collision detection and can't find shit. Apparently "free to use", "doesn't require a Phd to use", "compiles and links without errors per the instructions", and "has documentation/tutorials/a how-to-get-started" is too tall an order for even these libraries that have been around 10+ years and have thousands of stars on shithub. Reactphysics3d almost seems like it would fit the bill, but I'm getting odd behavior with it. For instance, moving directly perpendicularly into a wall will slide me along it to a degree that can't be explained by floating point errors or collisions with edges of tris in that wall. I'm also finding myself limited by the information given with a collision. You have a number of "contact pairs", which seem like 1 per triangle collided with, for a concave mesh. You're also given the local and world coordinates of the "collision point" on both of the intersecting volumes. Which I can only assume are the two closest points on the 2 shapes - the world mesh and collision capsule shape. That's not to say that there isn't any documentation, in fact rp3d was the only library I could find with something like this: ht tps://raw.githubusercontent.com/DanielChappuis/reactphysics3d/master/documentation/UserManual/ReactPhysics3D-UserManual.pdf - a decent user manual. Still, it just mentions in passing that the library does collision detection and that you can get the points, what that means however, remains a mystery to me. I get the feeling that I need to somehow use the movement vector at the time of collision, combined with the intersection vector (which again, has no explanation and I can only assume is the normalized vector formed by the pair of intersecting points), to determine the order in which the triangles were intersected and resolve collisions in that order, changing movement vector and re-checking collisions after each tri. Fed up with how React was treating me, I rolled my own capsule -> triangulated mesh collision per ht tps://wickedengine.net/2020/04/26/capsule-collision-detection/ Getting access to the triangle data with an .obj imported into raylib isn't hard, and the page offers a pretty good explanation of the algorithms and implementation (though the included code contains several bizarre errors that I can only imagine are put there to deter copy-pasting) right up until the end where he goes all "now draw the rest of the fucking owl". So I've got some bugs in my implementation and it's pissing me off, reminds me of early days with 2D platformer collision. Anyway, some screens of my experiments. I'll try to do a proper post on some of this shit when I can organize my thoughts better. Right now I'm getting a little frustrated at this sort of >I don't fully understand/can't implement this complicated 3D maths/physics/rendering thing >Let's try using a popular open-source library, that's what all the cool kids do >I don't understand/can't use this library and there's no documentation outside of the source code >fuck loop I've gotten myself into the past few days. Next up: get a proper camera set up, WASD/mouse-look/no-clip style so I can get a better look at what's going on with this collision bullshit.
Open file (5.78 MB 1090x804 collide.webm)
>>803 Finally got it working. That fucking faggot from the wickedengine site, I swear to god. Shit's all fucked up. Not just typos and copy-paste errors either. Taking the absolute value of the dot product of the triangle normal and the capsule center line vector (for whatever fucking reason) was keeping me from colliding with polygons that were over my head, even though I could collide with back-facing polygons from below. What an ass.
Open file (302.57 KB 640x848 1423363071997.jpg)
>>803 >I don't understand/can't use this library and there's no documentation outside of the source code It's even better when there are docs but they're flat-out wrong, and when you ask about how things actually work after banging your head against the thing for hours you get a heaping helping of vagueness, denial, gaslighting, or - my favorite - some obscure drivel about how the library's internals being built a certain way means that the astonishingly contradictory behavior you're seeing is of course obvious.
Open file (6.94 MB 1278x800 gravity.webm)
>>810 Tell me about it. And people wonder why everyone's always re-inventing the wheel. >>808 Added gravity back in. Everything seems ok, I just need to do some raycasts to get proper behavior on slopes and stairs - don't slide down slopes if they're less than such-and-such angle, "pop up" to the next stair when walking into it instead of "rolling" up it, etc. Currently takes 150 microseconds to do all the collision detection and resolution, colliding with 1 mesh of roughly 350 tris. That's not terrible, considering 150uS is less than 1% of the frame time (60 FPS is ~16667uS) and the collision detection routine is horribly unoptimized. Working on partitioning the world into a cubic grid, and keeping a list of tris that intersect each cube. Should be easier to implement than an octree, plus empty cubes don't take memory or time to check, and which cubes need to be checked for collisions can be directly calculated from player position, without recursively traversing a tree structure or anything like you would with octree. Aiming for less than 50 collision tris or so per cube, giving a worst-case scenario (player AABB overlaps 8 cubes) of 400 tris per frame to check against. If I still have issues, for example with multiplayer (all other players visible to the client need to be collision tested against the level geo as well to accurately predict their positions), I can decrease cube size and/or add threading, discarding duplicate collisions after all threads finish (if each cube got a thread, some tris exist in multiple cubes).
Open file (46.19 KB 1280x837 polys.png)
>>811 Update: I added spatial partitioning - just a regular old 3D cubic grid. Brought collision time down to 20-60uS on average, from 150uS before. Not the craziest improvement, but it's at least consistent now, no matter how many triangles make up the mesh. Tested by adding a torus with a bunch of subdivisions to the mesh - 20-60uS when not in that cell, ~3600uS when in it. Mesh info: TOTAL MESH TRIS: 4124 TOTAL MESH TRIS In CELLS (DUPES AND ALL): 5491 CELL TRI COUNT MIN: 2 CELL TRI COUNT MAX: 1947 CELL TRI COUNT AVG: 54 Not bad. I am going to need to process the mesh offline though; It takes ~2 seconds to sort the tris into their respective cells with my current shitty implementation. This is a bad example though, as the average and max are heavily skewed by the polygon-dense torus in that one spot, but I hope you get the idea.
>>810 Sounds a lot like unreal’s legalese documentation. It should not take over an hour to explain how to do something as simple as making a light switch.
>>810 Bonus points if they tell you that you’re doing something wrong. Like no shit.
Open file (15.36 MB 1284x802 camera.webm)
Open file (373.38 KB 1280x803 takemehomecountryroads.jpeg)
>>812 Fuck me this video is not easy on the eyes. >>813 >Unreal documentation I can only imagine. Anyone else play around with the Unreal Engine 2 SDK when it released? With the outdoor area with the thatched hut and the cave with the torches with the particle flames and shit? I want to go back.
Open file (13.38 MB 1278x800 mouselook.webm)
>>817 Mouse look working. Apologies for the file sizes.
>>817 tried to make a few prototypes of different genres in UE4 and 5. I am 100% sure mainstream engines like Unreal and Unity are sabotaged so you cannot complete anything beyond a shitpost game on it. Unless you are part of a zogbot propaganda "AAA" studio. Asking questions about concepts like optimization so your project isn't a laggy POS that crashes often even in an empty, brand new project is a guaranteed ban in any UE developer community. The gaslighting is off the scale. While they LARP about wanting people to ask questions. (so they can permaban them without warning) Is there even a way to obtain a copy of the UE2 SDK anymore? That demo level is way better than the templates UE4/5 provide.
>>812 >but I hope you get the idea. I do indeed Anon. It's alway a good idea to normalize/regularize your sensor/control mesh patches down to the bare minimum beforehand (presuming thats feasible -- that is, your mesh is stable (which in this case it should be)). GG.
Open file (1.44 MB 1920x1080 bb1.png)
Open file (1.60 MB 1920x1080 bb2.png)
Open file (2.13 MB 1920x1080 bb3.png)
Open file (1.66 MB 1920x1080 bb4.png)
>>823 >It's alway a good idea to normalize/regularize your sensor/control mesh patches down to the bare minimum beforehand (presuming thats feasible -- that is, your mesh is stable (which in this case it should be)). You lost me. I was talking about splitting the mesh into regularly sized chunks to speed up collision checking - only checking collision with the triangles contained within the chunks you are currently intersecting. I'm not using any kind of subdivision or modifiers in Blender, just good old fashioned low-poly modeling - what you see is what you get. As a graphics target, I scrapped the DOOM-like idea I mentioned before as being too limiting; I'm aiming for somewhere between Everquest and Metroid Prime, in terms of verticality?, poly count, materials, and lighting. DOOM-like would not offer any real content creation advantage over low-poly modeling and UV-mapping in Blender, while imposing some nasty restrictions - no slopes, vertical walls only, no level geometry overlapping on the z-axis; fuck that. Some shots of Everquest (1999) dungeon zone geometry for reference; this is more what I'm going for - organic and winding, vertical, interconnected, almost 3D-plaformer-like. Little trivia: the original Everquest engine was adopted from Verant Interactive's previous title Tanarus, a 3D tank game, and it uses a Quake BSP compatible level format, they just have a different file extension for it, .s3d. I've also been thinking lately about how to split the level geometry mesh for frustum culling (not trying to render tris that aren't in view of the camera). Currently, I am importing the terrain mesh from an .obj file to a raylib Model, then using raylib's DrawModel() to render it. Importing the terrain obj right now results in 2 meshes (a Model holds an array of Meshes)- one for each material used on it (it has a wall stone texture and a ground texture). I would like to do a mesh per 3D grid cell, but given that 1 mesh = 1 material, I may end up with total_meshes = number_of_cells x num_different_materials_in_that_cell, which could easy result in thousands or even tens of thousands of individual meshes, some with only a handful of tris. That is, unless I used a different grid size for rendering than I do for collision. Even my shitty Ryzen APU will do 1M+ tris at 60 FPS, I could realistically split the level into 8 cells around the origin and call it a day. I'm trying to plan ahead though. At some point, I would like to try to stream the level geometry from the server. Texture, shaders, that sort of mesh material data could live on the client, while vertex data would be streamed, with the primary goal being preventing datamining and exploitation. Your account isn't flagged as holding the key to the door to area X? Then your client doesn't have the geometry data for area X. You want to look hack at it? Good luck. Move hack into it? Enjoy falling under the world. So ideally the zone level data could be split into chunks that could be streamed to clients as they need them/become allowed to access them. Maybe I could do a scale factor between vis cell and collision cell. Say, 1 vis cell holds 64 collision cells (4 x 4 x 4). So each chunk update would send 1 vis cell and 64 collision cells. Who knows. But whatever. Looking into raylib's Model and Mesh classes now to see about creating custom classes based on those that would allow me to create new meshes on the fly, merge meshes, and append meshes to a list held by Model, or just work with a list of meshes directly when viewport culling and rendering. Going to ramble a bit about my design ideas here but, a client would have a bunch of "zones", which is an EQ term for a somewhat-expanded MUD "room". Ideally, each zone would only include as much geometry data as is needed to start a new character there and start walking around. Not to mention that the client would only come with zone data for the starting zones, none of the surrounding zones or end-game dungeons or anything like that. As your character moves around the starting zone, more geometry would be streamed in as you approach it/it could possibly become visible from where you are, and saved to disk. So I would like to be able to append to the level geometry data held by the client, but obviously not as one contiguous mesh that gets rendered every frame, as that would quickly become expensive. So it would be more like a list of chunks that grows. When the player moves to a new "zone", the server would have to check what chunks that client has in that zone already, then send them the minimum that they need to enter the new zone. For instance, the entranceway and surrounding rooms. Or, if teleporting to a new zone, the area around the teleporter site. Shit like that. The idea is to keep secrets secret for as long as possible. Is there a locked door that no one's been able to find the key to yet? Then no one has the level geometry beyond it. High-end raid dungeon no one is high enough level to get to yet? No one even has a zone file for it then. I think this sort of approach is critical to the success of a niche MMORPG in today's climate, and completely technically feasible with today's internet bandwidth; it's not the 1999 dial-up days any more.
>>822 >Is there even a way to obtain a copy of the UE2 SDK anymore? I really doubt it. I'm sure you can find the code and shit if you go looking for it but I don't believe back then they were offering it for free* like they do the current unreal engine, it was more a demo IIRC, so you would have to license it from Epic and all that bullshit.
Open file (877.54 KB 768x480 2023-06-28 22-53-51.mp4)
One of the things I worked on. Base (code, rules, premise) is done, but it would need content (fun situations + art + sounds).
>>834 Neat. Not sure what exactly but you've certainly got something here. Turn-based tactical RPG? Tell us more about what you're trying to make. What's going on in the second video? Is that graph/mesh thing supposed to be the overworld map?
>>801 Game I'm working on. >>803 I was sitting in the bath, drunk as all fuck thinking about how I could add some pizzaz to a simple get safe code followed by a open safe event and tried putting the idea into game code. It worked perfectly on the first try.
>>836 What's the game?
>>835 >Turn-based tactical RPG? Slight chess inspiration like Into the Breach. With a twist on status effects. To be under any of the 3 "locks" inhibits you in combat, but will benefit you if you stick with it. >Is that graph/mesh thing supposed to be the overworld map? Yes, like a pirate's treasure map, each zone stays consistent. >Not sure what exactly but you've certainly got something here. The idea is a bit highfalutin and probably needs to be described with art, but basically that it's okay to be a skeleton.
Open file (1.06 MB 1920x1017 blockoutdude.png)
Open file (1.00 MB 1917x1012 sittingdude.png)
Open file (457.09 KB 1573x1008 nodes.png)
Open file (1.38 MB 1286x808 swarthy.png)
Open file (982.01 KB 1917x1008 table.png)
>>829 Update. Getting ready to do some block-out/gray-boxing in order to get a feel for player scale, zone size, and the like so I can refine the character controller (move speed, turn speed, FOV, jump height/length, etc.) as well as add NPC pathfinding, visibility/line-of-sight, and stuff like that. In the final game, in addition to just walking around, I would like to have jumping (clearing small gaps and low obstacles/ledges), swimming (free movement in 3D space while within a water volume), crouching (for moving through low/tight spaces not designed for humans) and climbing (ladders - not interested in scaling cliffs and shit). So I need to get an environment in place to test all of this. Was doing some research and came across a good resource on level design. ht tps://book.leveldesignbook.com/process/blockout/metrics This section in particular talks about what I'm trying to do now and the importance of getting it done early. See these pages too for similar good reads: ht tps://book.leveldesignbook.com/process/layout ht tps://book.leveldesignbook.com/process/blockout Also reminds me that we need a game dev literature thread. Got a hold of some low-poly human figures from ht tps://quaternius.com/packs/backgroundposedhumans.html and got them into blender to replace my 60x60x185cm box I was using. They needed to be scaled down to the proper scale and the soles of their feet go below the floor about 1cm but that was a few minutes fix. Also inset some faces and added eyes to the one standing male, couldn't tell which way he was facing before when flat shaded. I'll be using these guys to set up doorway height/width, table/counter height, room size, and such. Take for instance, a tavern room with one long counter and 2 employees behind it, plus room for 3 tables that can each sit 4-6. Rather than just eyeball it and make some vaguely shaped room, I can drop placeholder tables and people sitting around them, then actually walk around the space. Can I get from the doorway to the bar OK? Is anyone sitting so close to the fireplace that they'll catch fire? That sort of shit. Once the size of homes and buildings is established and I have a few examples of each, cities and towns can be blocked out using those, and the world and dungeons proportional to those. I worry though, that my block-out dude is not as anatomically correct as he could be - might want to grab something from makehuman or whatever if I want to make objects "shoulder-high", "knee-high", "waist-high", etc. I got some of those 1-meter grid prototyping textures from Kenney: ht tps://kenney.nl/assets/prototype-textures I took one of the "dark" themed ones, scaled it down to 256x256 and added more readable text in the upper-left corner. Going to make a few more in different colors for grass, dirt, stone, water, wood, etc. Had to set up "triplanar texture mapping" in blender to get proper texture scaling and alignment. Searched around and found a niggit post with this pic that basically did the trick ht tps://i.imgur.com/lhWopKh.jpg I think he's using 2.8 or something though because it's a little different from mine (3.5). Fun shit. Beats grinding out network code at least.
>>838 Interesting. Sounds very "gamey" though. Is there an in-world explanation for these "locks"? Are they magical effects? Combat stances? >Yes, like a pirate's treasure map, each zone stays consistent. I don't really get it. What made you go with that instead of your classic RPG overworld map? >The idea is a bit highfalutin and probably needs to be described with art I'd like to hear more about it. Is this something currently in active development? >it's okay to be a skeleton. As a live, flesh-and-blood human I'm literally shaking right now.
Open file (591.51 KB 768x480 2023-06-28 22-54-20.mp4)
>>840 >Are they magical effects? Like curses, preventing using abilities/tools or turn you into a skeleton. >I don't really get it. What made you go with that instead of your classic RPG overworld map? By dividing the world into "zones" you can quickly write any encounter you want. Kind of like fallout. Eventually I want "penciled in" landmarks. >I'd like to hear more about it. Is this something currently in active development? Nothing right now, I want to get an artist eventually, if my time doesn't get too divided. All I can do is describe. vid related. These things get put on hold for something else. >As a live, flesh-and-blood human I'm literally shaking right now. It's a "painless" instant process in-game.
>>841 >fallout Now I get it. Like a point crawl from tabletop games. >Nothing right now, I want to get an artist eventually, if my time doesn't get too divided. All I can do is describe. So you're leaning into flavor text to set the scene, I see. Nothing wrong with that, just gotta brush up the UI to support it. >These things get put on hold for something else. Tell me about it. You working on a few projects at once or just don't have the time to commit right now? Would be cool to see you take this further if you have the passion for it and a proper design in mind to make it fun and stand out from other tactics-style RPGs. I tried and failed to make a joke about being triggered by your skeleton remark, like "it's ok to be white."
>>842 >So you're leaning into flavor text to set the scene, I see. Nothing wrong with that, just gotta brush up the UI to support it. The shop UI is messy, but I don't think adding anything to the dialogue UI is top pri >spoiler Heh. Well it will be important later.
Open file (370.35 KB 2200x2149 132rrrr3MEME150523.jpg.jpeg)
>>842 >"it's ok to be white." Literally shaking r/n
>>848 >Literally shaking r/n
>>850 >2nd pic Lol
Open file (1.17 MB 1920x1014 triplanar_blender.png)
Open file (17.38 KB 1282x802 nouv.png)
Open file (207.47 KB 1286x808 workingiguess.png)
Open file (181.83 KB 1284x807 ok.png)
Open file (310.98 KB 1286x807 hmm.png)
>>850 2spooky4me >>839 Update. So I said before I was getting started with some block-out type work in blender, right? And I found a nice shader to let me do triplanar mapping inside blender, so I can see a 1m grid overlaid on the world. Well everything was going fine until I imported the meshes into my project and... there's of course there's no UVs. Turns out the triplanar shader works on the world coordinates of the meshes, and doesn't affect their UVs at all, unlike what you would get in a Quake-style editor like Radiant or Trenchbroom where you can lock the texture UVs to the faces or to the world, and the information is exported with your map. Well, fuck me. Did a bunch of panicked searching and almost gave up and went with Trenchbroom for blocking out before I remembered that if blender could do triplanar mapping with a shader, then so could I, in theory. Took a few hours and it was extremely painful but I did manage to get something working. The way the z-axis texture is oriented is different than how blender does it but fuck it. What matters most is that the "1 METER" text is upright and reads left to right but... I have no way of verifying that the proportions are correct on non-axis-aligned slopes/angles because of perspective skewing and it's driving me crazy but whatever.
Open file (1.13 MB 1920x1081 out.png)
>>854 Blender has a lot of mapping options, including UV, local object and global (sometimes global is called "generated"). Also you can just use appropriate scale in blender for everything, its one of the main rules. You can simply export default blender texture. Also you might want to switch to 2x2m objects, because I use them. Also I use 2x2 "cage" to see scale of things. Texture is not really okay way to measure object size, especially when they are using UV mapping, and whole thing is just handmade, not adjusted to realscale in any way. If you move a vertex, it will move UV coordinates. You can probably do it with code, but it is annoying to do/learn for a very little benefit. Worst case you can use a couple of gradient shaders with ZYX coordinates for input, or some simple shader which draws a white line when XYZ has integer value.
>>855 Triplanar texture mapping doesn't use UV coordinates; the world coordinates determine the texture mapping, with 1 blender unit (1 meter default) equaling 0-1 in UV. Right now, in both blender and in my project, the "1 METER" texture is grid aligned, at least on the primary axes. So I can slap down any arbitrary geometry and it'll get textured properly according to the face normals. This whole grid texture block-out thing is pretty standard, look at something like Unity probuilder. As far as texture baking goes, I did see that suggested as a fix elsewhere and it was the next thing to try should I had I not gotten this shader working. Hopefully the UVs get baked too? Who knows. I'll deal with that when I go to bake lightmaps.
>>859 You export UV as part of the model, depending of file format. OBJ export gave me perfectly working model with working UV, however you need to unwrap object first. You dont really need to bake anything for it.
>>860 >You export UV as part of the model, depending of file format. I know that. I'm saying that this is a shader, a procedural texture if you will - you don't UV map the model. These videos: >>817 and >>821 have a UV-mapped and textured .obj as the terrain. Textures generated inside blender need to be baked to be used outside of blender, unless you can do the same material/shader set up in your engine, which is what I did here - world coords to texture coords shader in blender -> world coords to texture coords shader in raylib, no UV mapping involved. Because I'm trying to block out test environments quickly. If you follow.
Open file (809.04 KB 1920x1081 ClipboardImage.png)
>>861 >I know that. I'm saying that this is a shader, a procedural texture if you will - you don't UV map the model. Actually they can use whatever as input, especially UV, but I get what you meant. However fucking with textures to make a global grid, used for size reference, seems like a strange idea to me. Why not just make a huge grid mesh, and keep it around, while you still need it? >>839 Also here texture coordinates in blender for image texture set "object" and image textures almost always use UV. Or instead of grid just 2*2 boxes placed every 10*10 meters, very easy to make. Now that I think about it, 10m tall object is a good reference because it should take a second to drop 10m.
Open file (1.67 MB 1130x733 LDB_Blockout_Iterate.gif)
Open file (331.49 KB 1920x1200 block1.jpg)
Open file (381.61 KB 1920x1080 block2.jpg)
Open file (1.18 MB 1829x944 block3.png)
Open file (689.64 KB 1311x720 block4.png)
>>863 >a grid Not the worst idea, if your world is mostly flat. Raylib comes with a grid drawing function (though the y-axis is up). void DrawGrid(int slices, float spacing); // Draw a grid (centered at (0, 0, 0)) but you could do the same thing with the line drawing function too: void DrawLine3D(Vector3 startPos, Vector3 endPos, Color color); // Draw a line in 3D world space But my world is going to be everything but flat and I'm also not just trying to measure this and that. Did you take a look at the e-book I linked about design? The block-out, "metrics", and playtesting bits especially. See pics if not for an idea of what I'm talking about. Odds are I'll be running, jumping, swimming, swinging swords, and throwing fireballs inside this "1 METER" grid space for a very long time. Least I can do is make it easy to iterate on and to grasp feeling of space and movement and the such.
>>863 >10m takes 1 sec to fall Never mind, I feel bad after I though about it for a second.
>>867 Don't worry, I got what you meant - after falling for 1 second, you will be traveling at 9.81m/s. Another reason why it's nice to be able to work in meters and not something like Quake units - you have a basis to work from. A human male character can be ~1.85m tall, with eye line (camera height) at 1.75, which gives you a starting point to start playing with character speed and field of view. I've been using a tape measure a lot too recently - measuring furniture, room sizes, doorway width/height etc. They'll all need to be adjusted of course, usually made larger, but it's a starting point.
Open file (18.01 MB 1276x798 block.webm)
An idea of what I'm working with atm. Ignore the first "house" - was taking way too long to do with proper topology and triangulation so I gave up. The "building" next to it was done proper block-out style in a couple minutes by copying and pasting a wall section - kind of like that gif I posted here >>866 . The block-out in that gif was done with Trenchbroom by the way, something I'm still considering incorporating in my production pipeline somewhere.
Open file (12.36 MB 1280x800 skybox.webm)
>>870 Added a skybox and fixed a bug with the camera up/down.
>>873 Nice, great to see each stage of the development.
Open file (13.82 MB 1282x802 cave.webm)
>>874 Thanks. I been meaning to make my own thread but I'm being lazy. Here's a video with an interior cave-like space being lit with point lights. I'm working out ideas for the lighting model at the moment so I whipped up a little test space in the corner here.
Open file (344.61 KB 1283x801 lighting1.png)
Open file (307.27 KB 1284x801 lighting2.png)
Open file (225.68 KB 1284x802 lighting3.png)
Open file (311.67 KB 1283x804 lighting4.png)
Open file (260.22 KB 1283x804 lighting5.png)
So I mentioned I'm working out a lighting model for the game world. I will be leaning heavily on good old-fashioned "vertex lights" like we saw a lot of up until the advent of pixel shaders and per-pixel lighting around the time of Half-Life 2 and Doom 3 and similar. Vertex lights can look nice if your geometry supports it - no triangles the size of the screen, make sure your vertex normals are smoothed where they should be smoothed and split where they shouldn't be, and watch how stuff clips through one another. The best thing about vertex lights: they're stupid cheap and because of that, practically unlimited. In addition to those, I'd like to bake lightmap textures, even if relatively low-res. Vertex lighting can also be baked (vertex colors), and may be an alternative if lightmapping doesn't have the look or performance I want. No reason to render static lights on static geometry every frame like I was doing in the last video - that sort of stuff gets baked. Baked vertex lighting also has the advantage of not standing out when compared to lightmapped surfaces, if anyone remembers back when doors and other moving objects stood out from background static geometry because of that. It has the disadvantage of not capturing fine shadow detail though. That said, the lightmap could be disabled while the object is in motion or otherwise not in it's original place. Will have to experiment. I'm also working on a day-night cycle using a directional light that rotates around the zone, light direction facing the center of rotation. The light will change color and intensity based on time of day. Dawn/dusk - dimmer/orange-ish, midday - brightest/white-est, night (moonlight) - very dim and blue-white. That's easy enough to implement, I just need to choose what meshes are affected by it and which aren't, hence the interior/exterior space testing (the inside and outside are two separate meshes). Right now, I'm not able to do any kind of fade between interior/exterior, but I'm going to try using a point or maybe a directional light at the entrance to simulate light coming in from outside. How that will work with doors opening and closing, I don't know yet. Dynamic lighting will be done by having a list of light sources held by each mesh. On every frame, each mesh will update its list depending on distance to dynamic lights (mesh bounding sphere to light radius collision) and pass those values to its lighting shader. Sphere to sphere collision checking with squared distances (no sqrt) is the fastest 3D collision check, so a fancy spatial partition scheme may not be needed. May be a different story if I end up with 100s or 1000s of meshes per zone like I mentioned before; we'll see. So far I've got planned for lighting: >Directional "sun/moon" lights for zones fully or partially outdoors. >a lot of dungeons will be dark, like real fucking dark. Bring a light. >baked static lighting (vertex? >dynamic vertex lighting (player light sources, spell effects, flames/lava, etc.) >players may "glow" Dark Souls style if they have a light source equipped >NPCs may give off light, if they're made of fire or lava or some shit >moving objects will be vertex-lit only >dynamic shadows are being looked into. Shadow maps look the easiest, compared to stencil shadows or other fancy stuff Pics are me playing around with some crude interior lighting. First pic is the default lighting shader from the one raylib example: ht tps://www.raylib.com/examples/shaders/loader.html?name=shaders_basic_lighting ht tps://github.com/raysan5/raylib/blob/master/examples/shaders/shaders_basic_lighting.c Notice there's no fall-off/attenuation. The light travels infinitely in all directions, changing intensity only with angle of face to light source. Next pic shows the same with proper fall-off. This is with a light radius of 4 meters I think, and a linear fall-off. Next pic is looking further into the "cave". I wasn't too happy with the way the light seems to end pretty abruptly like in the 4th pic, so I changed the fall-off to quadratic instead of linear. Basically just intensity (0.0 to 1.0, calculate with "min(0.0, (1.0 - distance / radius))") * intensity again. Gives a much smoother result.
>>875 >>876 Interesting. Will that cave become an example of your world chunk idea? >if anyone remembers back when doors and other moving objects stood out Oh yeah, that's a common problem in Quake mapping with the baked lightmaps. >So far I've got planned for lighting Sounds flexible, should allow for building a strong atmosphere.
>>876 Nice explanations Anon. Thank you very much.
Open file (394.12 KB 1283x804 sunlight1.png)
Open file (385.99 KB 1284x801 sunlight2.png)
Open file (354.66 KB 1282x804 sunlight3.png)
>>877 >Will that cave become an example of your world chunk idea? No. I just needed some geometry to let me test different lighting styles. The world chunking thing is still in the works. Obviously collision is in place, as I can walk around these blockout spaces. Chunking will be "Outdoor" zones will still contain caves, tunnels, building interiors and the such, and a naive skylight implementation will end up penetrating into those. So the idea was to split interior meshes from outdoor ones, then do something for the transition zone to make it less jarring. For instance, opening a door to a building could enable a point light in the doorway, that affects only the building's interior meshes. The point light color would be the current zone "sunlight" color (though maybe brighter to account for fall-off, which directional lights don't have). The ambient light value of the interior meshes could be changed as well, from say... {0.05, 0.05, 0.02} to (0.12, 0.12, 0.12} or something, then reset to default when the door closes again. Just thinking of things that may come up and how I might tackle them. >Sounds flexible, should allow for building a strong atmosphere. I hope so. As far as atmosphere goes, and I may have mentioned it before, I'm going for the level geometry of Everquest, which you can view here: ht tp://www.ulftek.com/eqscout/ Check out old sebilis, crystal caverns, or lower guk if you want to see some god-tier dungeons. Combined with the level geo/lighting of Metroid Prime, which you can check out here ht tps://noclip.website/ Tallon Overworld and Chozo Ruins being good examples of "fantasy" environments. Ambitious? Maybe. These are games from 1999/2001. Tried my hand at doing the whole "sunlight coming into interior space" thing. Eh. Better, but not quite there. Think I'll worry about it about it again when I get around to dealing with light baking.
>>880 Fuck me. I forgot that players and mobs can move between outdoor, sunlit spaces and interior, unlit spaces freely. Might need something like a collision volume to partition the two, and have the point light at the entrance affect PCs as well.
Open file (711.26 KB 1284x802 rei.png)
Open file (989.86 KB 1284x803 no.png)
Open file (929.51 KB 1284x805 pool.png)
Open file (1.47 MB 1920x990 water.png)
Open file (99.87 KB 1284x805 swimming.png)
Update. So while I didn't do any more than a debug print, I tried my hand at line of sight calculation today. What I'm doing is tracing a line segment from NPC eye position to player eye position, then checking for mesh triangle intersection at a distance of less than ray length. If any triangle intersects ray like that, the check ends early with no line of sight. It's easy enough, I just need to take it a step further and use the level geometry chunking system with it. Right now I'm calculating distance between PC and NPC, seeing if it's less than LOS range, then checking against every tri in the map. Getting about ~500-600 microseconds for one LOS check. Definitely going to need all the optimization I can get though, considering it will be done server-side, for all PC-NPC interactions. Next up: swimming. The plan so far is to use the water as a collision volume, which you can see in the 4th pic. Basically a bounding box encompasses the level geometry that should be underwater. For some zones, this may be one single box that extends from some z-level downwards - think islands sticking up out of a flat ocean. Different movement rules and physics will apply whether the player's collision capsule's center is in the water volume or not. Out of water volume, normal run in 2 dimensions + jump, crouch, climb, etc. In water volume, can no longer crouch or jump, but can move in all directions. Falling into a water volume from above will have the player fall normally until their center intersects the water volume where they will then decelerate quickly. Standing in shallow water, where the player center is out of the water volume, will allow movement like normal. I will also be using the player's eye position to determine the render mode. If the player's eye point is inside the water volume, the ambient lighting will be changed to match that of the water volume (probably dim and blue/green), and the distance fog will be made much more aggressive (reduced visibility). I'd also like to blend a cube-mapped animated caustics texture over meshes under the water if I can, because that looks cool. Torches, lanterns, etc. will not work underwater but other magical sources of light will. The collision check for whether one is in water or not will probably be a naive approach (check every volume against player center and eyes every frame) since point -> bounding box collision is cheap, and I can't imagine having more than a handful of separate water volumes per zone. 5th pic outlines some of the plan as it stands. I still haven't come up with an easy solution for getting the player up out of the water where it meets land at a sharp angle. In real life, you just grab on and hoist yourself up on out, like getting out of a pool, but we're working with capsule collisions here. Maybe on collision I can shoot a ray from player center point one player width long and if it doesn't hit terrain or the water volume, allow movement up onto the colliding mesh. That or put a short invisible "ladder" volume along those edges, which come to think of it, act a lot like water volumes: while colliding, you can look up and push forward to move upwards. Got to experiment some.
>>880 >Chunking will be I have no idea what I meant to write here.
Open file (11.30 MB 1280x800 rayromano.webm)
>>886 This is pretty much what I was going for: distance fog for lower visibility when in water, underwater mesh brightness based on distance to surface + the usual angle to light source shading. Still have to figure something out for the water surface. I'd like to have the water's surface reflect the sky/ceiling from above, and just be semi-transparent from below (assumes above water is brighter than below water). Still gotta do animated caustics for under the water, again with intensity based on distance from surface. Should look pretty slick.
Open file (15.87 MB 1282x804 shader.webm)
>>890 Played with swimming and the underwater shader some more. Looking into navmesh pathfinding stuff now. The recast/detour library ht tps://github.com/recastnavigation/recastnavigation seems to be the go-to solution for that, looking for resources on that at the moment.
In my other game I was making an objective marker script while in the middle of it this happened. It looked like the works of a stalker ex-boyfriend so I thought it was neat. The objectives work now.
>>950 Cool. What's the game?
Open file (147.57 KB 960x1275 serval coffee.jpg)
>>886 >>892 >pool.png You motherfucker.
>>950 >>958 Forgot to mention I also did skeleton tactics. This is an experimental XCOM type game where you can focus on just strategy layer and interception of sites. I wanted to act out the idea of multiple fights happening happening at once. Something I imagine is humanity losing grasp of a planet. You get to see that from a map view without any interruptions like going to a tactical layer.
>>958 Forgot to mention, no name yet, and ALSO BUMP
>>333 Are you still alive?
Open file (3.11 MB 1902x932 ClipboardImage.png)
Open file (5.42 MB 1920x1080 2023-08-19.webm)
Open file (1.57 MB 1902x932 ClipboardImage.png)
The more I do, the more I need to do, and the more things can break. Same fucking code to move "character" and move whole tileset, just a fucking t.x=v.x. It works for character, but doesnt work for ground. Managed to fix it, but it becomes apparent I need to start cleaning up testing code and useless shit. Had "my_viewport" and "viewport" and "camera", all of which (were supposed to) do the same fucking thing. Its really discouraging. But hey, at least bare minimum works. Looks like shit tho, at lower scale. So, I would either need to remake assets, or change how I render things, but maybe it will look better with more varied assets.
Open file (2.29 MB 1920x1080 2023-08-19_21-49-35_2.mp4)
>>123 experimenting with writing a data-oriented vulkan renderer with branchless optimizations for potential performance gains. just seeing how fast i can open vullkan windows rn... each window can have its own attached rendering state or share a common state e.g for split-screen or something like that...
Open file (5.98 MB 1290x954 2023-08-25.webm)
Open file (2.71 MB 1902x932 ClipboardImage.png)
>>977 Did some random shading, just to measure how it would look. And made some (wrong) controls. I wanted to do zigzag rendering of tiles, but it seem to be impossible, due to my laziness, and not wanting to deal with complexity of transforming everything into zigzagged coordinates. Technically it is just a temporary way to render, and later I want to make a buffer for stuff to be rendered in desired order. Next is forest generation, and rudimentary light system. >>987 How does it indicate anything related to vulkan? I assume window opening is just part of winapi. From what I read vulkan is awesome, but it provides very low level access/api, so you will have to build everything yourself, and it takes a lot of time and effort, which is not something indie devs have. Still fun to see, and good exercise.
Open file (33.89 KB 422x599 test.png)
Open file (2.14 KB 136x125 virtualboy.png)
Spent a couple hours trying to figure out why the projection matrix in my compute particle system wasn't working only to realize I'd forgotten to homogenize the transformed vectors. Also accidental virtual boy mode.
Open file (2.36 KB 115x86 logo (2) vb.png)
>>989 >Also accidental virtual boy mode. Neat. Have an edited anon.cafe icon I made a couple years ago but never did anything with it.
>>988 >make a forest >well, I need to make texture cropper/resizer/converter >default sdl api is a bit fucked, and I have no idea how to make transparency work, so either colorkey(good way anyway) or look into libpng >and some simple "enhancements" filters would be great >and I would need working interface to use them >sdl works for now so whatever >but to make proper converter I need json loader/data manager I should look into hierarchy of the stuff I need to make, before making other stuff.
>>994 Made simple automatic texture cropper with offsets. Just need to attach them to data files, and/maybe gui. And now I can process character tiles and implement proper systems for them. And make better grass tiles. They are flat, and I rendered all of them at the same time and just cut off the mask, now I can render each tile separately, and keep blades of grass which go outside of default rhombus, and even use any kinds of image processing on them. (hopefully it will look better). But that is an improvement for later, current grass works perfectly for a placeholder.
Open file (385.74 KB 790x439 ClipboardImage.png)
Open file (587.54 KB 1000x1000 0030.png)
Open file (77.01 KB 227x277 ClipboardImage.png)
Note to self. Dont use 1000*1000 resolution for renders instead of 1024*1024, especially when you batch rendering something on cpu. For "less precise" stuff like trees and other decorations, it might be fine, but walls and ground tiles must be precise. But on the bright side, I figured out why grass renders always had dark spots in the middle of each tile(Pic2). I simply forgot to give renderer more bounces for transparency (it was only 4 total), so everything transparent turned into black. >now I just need to pack everything >lets search for already made simple packing algorithms >here is link, everything is explained in it! >link is for 200 page scientific paper on packing anything into a box Welp, Could have been worse. So many topics are so well researched, but its practically impossible to read through all of them. Packing even has free tools for it, but adapting them for my exact needs is the same, as doing it from what I already have. Next up, is making my tileinfo.json format to be compatible with Tiled editor. And a format for character sprites. And technically, at that point, I would be able to start actual game developement.
Open file (1.44 MB 1920x1080 licardev.png)
libre Trackmania clone under CC0, in C99 with no libraries, uses own 3D renderer, own physics engine
bump for demo day

Report/Delete/Moderation Forms
Delete
Report

no cookies?