- Видео 82
- Просмотров 15 657
David Roome
Добавлен 9 июл 2019
I'm David Roome, professional software research engineer and hobbyist creator. On my channel, you'll find live coding livestreams, devlogs, and other videos related to my gamdev / 3D art projects / sci-fi horror world and inspirations.
Python coding time-lapse! Adding glowing drive details to my low poly spacecraft.
Time-lapse version of a recent livestream: ruclips.net/user/live0BjNpwMeB28
Finally adding glowing drive details to my ships! Made polygons from arcs and attached them to the ends of the drives on a couple of different ships, tested in engine, and tweaked. Investigated some incorrect z-fighting behavior with the "markings" functionality they use as well.
Next steps (maybe in a stream soon) will be animating the glow changing, and potentially a new emission shader for these and other glowing parts! Stay tuned.
Check out the other videos on my channel for devlogs, programming livestreams, and a look at the bigger fictional world this project is a part of!
Finally adding glowing drive details to my ships! Made polygons from arcs and attached them to the ends of the drives on a couple of different ships, tested in engine, and tweaked. Investigated some incorrect z-fighting behavior with the "markings" functionality they use as well.
Next steps (maybe in a stream soon) will be animating the glow changing, and potentially a new emission shader for these and other glowing parts! Stay tuned.
Check out the other videos on my channel for devlogs, programming livestreams, and a look at the bigger fictional world this project is a part of!
Просмотров: 22
Видео
Python coding time-lapse! Low poly spacecraft design.
Просмотров 435День назад
Time-lapse version of a recent livestream: ruclips.net/user/livegaq96mx-NCQ?feature=share Using some new techniques (connecting arbitrary edge loops) to model a shroud that covers the rear portion of the Ashinoko frigate. There's a neat part toward the end where we remove some mesh facets to make room for the radiators. I don't know if I'll keep this for this ship, but it was a great initial te...
Spacecraft wireframe animations 2024-09-30
Просмотров 3721 день назад
Wireframe animations of a few ships, including a couple that I've been working on recently on livestreams. For a behind-the-scenes look at how I made this video (with Python), check out this video: ruclips.net/video/XyVkDww6ifo/видео.html Check out the other videos on my channel for devlogs, programming livestreams, and a look at the bigger fictional world this project is a part of!
Python coding time-lapse! Stitching wireframe videos and adding titles.
Просмотров 7921 день назад
Time-lapse of behind the scenes work on the newest wireframe animations video: ruclips.net/video/u7lyE7K5_Ko/видео.html I first generated 4 separate 16-second videos, then wrote a Python script which reads frames from each video in sequence and adds a title with a fade-in / fade-out and animation. Check out the other videos on my channel for devlogs, programming livestreams, and a look at the b...
Python programming time-lapse! Spacecraft models. 3D mesh processing + Blender.
Просмотров 1,5 тыс.2 месяца назад
Python programming time-lapse! Spacecraft models. 3D mesh processing Blender.
Retro space combat game - controls and combat test - June 2024
Просмотров 1793 месяца назад
Retro space combat game - controls and combat test - June 2024
Retro space combat game - updates for May 2024
Просмотров 1,8 тыс.4 месяца назад
Retro space combat game - updates for May 2024
Wireframe and orthographic camera in ship viewer for my retro low poly space combat game
Просмотров 1065 месяцев назад
Wireframe and orthographic camera in ship viewer for my retro low poly space combat game
Flying around the station. Testing fixes and effects for my low poly retro space combat game.
Просмотров 755 месяцев назад
Flying around the station. Testing fixes and effects for my low poly retro space combat game.
Cutscene test for retro space combat game
Просмотров 655 месяцев назад
Cutscene test for retro space combat game
Space station approach! Testing new low-poly models for my retro space combat game.
Просмотров 906 месяцев назад
Space station approach! Testing new low-poly models for my retro space combat game.
Space fighters and corvettes (created with Python) from my retro space combat game!
Просмотров 506 месяцев назад
Space fighters and corvettes (created with Python) from my retro space combat game!
Creating a low poly 3D spacecraft model with Python code!
Просмотров 1197 месяцев назад
Creating a low poly 3D spacecraft model with Python code!
Corvette (WIP) for my retro space combat game!
Просмотров 257 месяцев назад
Corvette (WIP) for my retro space combat game!
Ship viewer from my retro space combat game!
Просмотров 618 месяцев назад
Ship viewer from my retro space combat game!
Space fighter wireframe animations created with Python
Просмотров 74Год назад
Space fighter wireframe animations created with Python
Robot claw! #screenshotsaturday 2022-10-15
Просмотров 252 года назад
Robot claw! #screenshotsaturday 2022-10-15
Interesting stuff!
🤙
Agreed, A wing pilot indeed seems lore-accurate. I'd be ded of stress if I was cramped like that, oh man..
people say 'use loguru use ice-something for debug output' but to me print() feels like exactly for quick debug, so totally agree what you did there haha in the end as long as there's no preprocessor like #ifndef block you can still just shadow print() with your own definition to save runtime anyway, not quite far from what debug specific output tools do for release config. Not that I hate those tools! Loguru's quite handly for nice looking file logging for sure!
I've started using actual logging in some of my modules but print is convenient. Especially when you debug by printing and quitting the program LOL
Oh man you cooked hard on these ones 👌
img capture then ffmpeg? cant figure out with my outstanding 360p res setting sadly, we sure live on top of giants' shoulders like such open source projects, always appreciate such time to time!
Screen capture is done with mss, then I resize with opencv and write to an ffmpeg process via a pipe! I'll talk through how it works on a stream sometime soon. The way I implemented delay between frames is probably very rough but it works.
@@davidroome137 kinda remember me writing all frames first in ramdisk then generating txt with delay written to it, then feeding that text file to ffmpeg... sounds like pipe is better option than this mess haha
god darn gorgous, wanna 3d print it asap! is models using quad with wireframe render mode or did you manually discard diagonal lines? I thought opengl only worked with tris
Triangle meshes but I filter the edges. Only edges of facets of coplanar faces, then only edges where the facet is facing the camera. And this is entirely software rendered (numpy / cairo / PIL / opencv)
bro, you're INSANE with these..
newbie thinking they have to be vim wizard or whatever, yeah I can feel they kinda try to 'fit into community' with such gestures - I always tell my juniors that are total crap until you know what you are doing, not sure if I still know what I am doing tho haha about jetbrains can proudly say 'double shift shortcut for search everything, anything' is killer feature, with insanely sophisticated git related guis. VSCode doesn't have such, can only search specific sets. It's real pain in butt to use VSCode no matter how many plugin you stick to it cause it never satisfy or reach the level of jetbrains IDE's insane fail-tolerant parsing & static linting feature. Text editor is text editor, it's not an proper task(language)-specific IDE despite adding language servers. and, I mean, which IDE suggest you for potential typo, mistake and optimization, style guide and memory safety - I bet that's why people mostly use visual studio with Resharper C++ cause it's even more pain than vscode (which I am doing rn cause jetbrains license allow personal license in company) People say 'such babysitting features are total noob stuff' but I don't think MS, Google, Apple, Meta, Cloudflare hired newbies to create memory related flaws. Human makes mistakes!
not exactly sure about your method, but I ended up solving thruster placement problem using dummy bones as placeholders in blender and attaching thrusters to each bones in runtime! that way I cleaned up so many hardcoded values I need to type in but can intuitively see position in blender, been using like that for all attachments on my ship now since last few vids hehe i.e. ship has bone for turret mounts, turret mount has own bones of where weapon are attached, and weapon also has own bones for where muzzle flash etc are attached, so on.
@jupiterbjy I do something similar for hardpoints with empties. Most of the other components have "hardcoded" positions because they don't really move. At some point in the future I'll introduce capability into the game to swap components other than weapons and we'll see this system still works, LOL
@@davidroome137 ngl would enjoy seeing wrong module attached in right places hehe
David I have a Cyberfrog Cowboy Country song on my channel.
Epic Really nice combat‚Ui‚models everything seens incredible 👏👏
Really liked your realistic approach to space movement 👌
Godamm this looks incredible totally an fresh air from modern space games. This one seens to be as good as the ones in the good old days
Thanks so much!
@@davidroome137 🤝
Not only to you, but also my favorite! I can't stop hating so called 'design' mess I make lmao would also love to see armored version of these, where those drives are kinda enclosed within streamlined body with sorta 'intake' and 'exhaust' ish hole like how waterjet is - if my memory of your game's setting is correct about solar system having some particles that ship can direct for thrust.
Shrouds that enclose the drives is definitely a thing in my setting...I need to try to model that!
Space ships do not have to be streamlined or have pointy ends. There is no atmospheric drag in space.
all the more reason to make ships beautiful. Ships don't have to be something a Transformers cat vomited up either.
Remember, he's making a warship, not a civilian ship. Streamlined design increase chance to ricochet incoming projectiles due to it being sloped armor, and reduce exposure area when oriented properly. Think of why we orient the heatsink in-line with ship direction. That's because radiator is the weakest part yet the most important part, thus the best chance of it's survival is by evading a shot, which is done via minimizing exposure area and avoiding being hit. Such designs are super effective in highly realistic game like Children of a dead earth, where you can point dart-shaped ship to expose minimum surface area in incoming cloud of projectiles' POV and avoid most shots or deflect few that still hits. And FYI, yes THERE IS DRAG IN SPACE, altho not atmospheric nor meaningful for ship of this size. You know how NASA do altitude control(pitch, yaw, roll) with only one or two working gyros? Sun's Photon pressure! Best example is Kepler Space Telescope where it lost 2 out of 4 gyros. NASA stabilized uncontrollable axis by sun's photon pressure, directing satellite's (relatively) streamlined, pointy part to sun's direction - making entire satellite acting as Anemoscope. This K2 mission successfully prevented satellite having some peaceful nap but to work even more out there with limping gyros!
I like it! Personally i like the rear heavy ships
This looks really cool but it kind of looks strange when the ships turn.
Thanks for the feedback! I've heard this from a couple of people, and I have some ideas!
50:34 I missed that there was manufacturer too before, any tips on how to come up with such neat names haha
A lot of names of things in my fictional setting are either direct or indirect references to real things in my own life. In the case of the manufacturers, I sat down one weekend and came up with several. I think "Turner Lewis" is a North American company a variation of Lockheed Martin. RI (Rousseau International) are the big bad guys in my setting and they are French. So IIRC I wanted a British company as well and came up with "Winterbourne Technologies". I seem to remember finding "Winterbourne" from a list of British names for geographical features. Hope that helps!
@@davidroome137 aye thanks, that helps me a ton!
May I ask how much you got it for? This was my favorite toy as a kid, still have the trooper, but need the bike again haha
Found it on Ebay for about $12 including shipping. Usually goes for $15-20.
Ive been wanting this and Dash Rendars ship for a while now. Shadows of the empire is the best!
I've enjoyed collecting POTF2 / Shadows of the Empire stuff. The fact that it isn't very expensive is part of the fun!
@@davidroome137 For sure I got some new ones for just a few dollars. Ive seen this speeder go for as low as 15!
👍👍👍👍
What a great stream this was!
So much fun! Thanks for being there.
can't wait to see the final shape!
Cool stream! Like the videos, educational and fun to see the progress of the code. Nice!! 👍
Thanks for hanging out! Was a fun conversation.
Good yt recommendation! I'll check it out later! 👏👏 I was trying to do something similar with C and GLFW (opengl)
Ok this is way too cool for something this small, i gotta try this now on my own setup
D: omg! So cool i have an old tablet I been trying to make use of!! I love this
used frame drop method to sped up? and darn that triangle looking ship model is so lovely whenever I see it, m seriously questioning my ability to design something hahaha maybe I gotta study other ships designs in detail when I finally ditch this company, especially homeworld ones - honestly still drifting in game concept level tho
Yeah, it's an OBS configuration with a really low framerate, then sped up with ffmpeg! Need to experiment though because the file size of the original recording was way too large, heh
@@davidroome137 Despiteobs python API does not expose the screen capture we can use OFox213's obs-screenshot-plugin fork! It comes with Timer Hotkey that keeps capturing image into file every designated seconds - just tested x64 release (the only release) and it works flawlessly - wonder if it works on mac os tho as I don't own it
oh my comment's are lost again I think, I wrote about the plugin I found for just that task - I think you could combine with ffmpeg to encode images into video every few seconds while it's capturing to save extra space, details are in that deleted comment!
I can see the comments in studio. Thanks for the info, I want to find a good solution for timelapse because it's a lot of fun and worth figuring out how to do it right.
That UI Has the vibe of imgui haha Love the radiator pipe details, amazing script.
Part of the reason I wanted to try Polyscope is that it uses imgui, heh
@@davidroome137 no way, it really is imgui!? now that's something cool! Tho I remember my senior at company was having trouble with unicode with imgui for entire last week - wonder if it's c++ only issue or just windows being windows haha
holy crap that thumbnail looks amazking, gotta catch up this vod later, good to see you again!
Thanks! Hopefully will be streaming more often again soon.
@@davidroome137 Hope you had great days meanwhile! Currently things are getting busier here so might take weeks to catch up for while haha
Yo ff7 is fire
this is the kind of future graphics I've wanted, raytracing is cool, but aesthetic is king!
very interesting, loving the UI design here!
I think it’s very interesting that your ship can do 360s while moving just like it would be able to in real life. Are you aiming for a more realistic approach to space combat?
Yep, that's exactly right. More gliding and drifting as opposed to "planes in space", although the flight control system allows both.
cool
It would be cool to add some kind of toggle-able ui that only shows relative velocity and in some non-cluttery way and maybe the "where to shoot" circle as just a small point. So that there's more free space on the screen to more easily see the target ship itself rather than just all the display help around the target. Current design seems practical but also cluttered.
This is a good idea. There is extra debug type info in various HUD components right now, but even without that, there is probably more than necessary.
Beaaaammms!
neat, looks so cool
I see people calling the design fakey and wanting it to be more realistic but IMO there's plenty of games that do that out there so you should stick to this simplistic style and instead focus on the content and gameplay, i.e. the amount and variation of ships (where simplistic style is actually convenient!), and how many ships participate at once etc. I think making something like Ravenfield except as space combat would be amazing.
I don't know why anybody would assume if the design is fake or not since they probably didn't even serve in the military during the First Trans-Lunar War of 1997.
Realistic spacecraft design plss???? I like what I'm seeing btw!
The style is neat, lots of potential but imo the physics look really fakey and arcade
Thanks for the feedback! I have a few things in the works that will probably improve that.
was sleeping avg 2~4 hours last month, 2 hour for last 48 hr - My weak human brain finally ignored all alarms for emergency sleep I think. Had to use the only remaining dayoff I had as I'm already late for commute, ended up being totally worth it! was quite enjoyable honestly Wish I had more time to study and developed my game! But ohh that won't be easy in this country
Glad you could hang out tonight! Hope your schedule eases up and you can get some more sleep soon, heh!
This looks so cool already, darn Any hint on public demo?
Thanks! I have a lot of pieces and am checking lots of random bugs off the list. Getting to the point where I can release a demo will require tuning behavior trees for enemies and allies and also balancing gameplay, something I've barely started and I have no idea how long it will take! But I'll be starting on that soon.
@@davidroome137 ah no rush! take your time, gotta show the absolute best in demo ain't it!
Nice, WarCraft 2 is a jewel
Me and my friend used to play the demo on our old PC laptops with a null modem cable.
this is cool
wish to play it soon! btw is velocity capped or is it only for inertia only coasting? Didn't noticed before but seems like it's reducing 300m/s when coasting
No velocity cap...the way the flight control system works is that a certain key increases the target velocity while held. You can continue increasing beyond a max velocity while holding the key down. When you let up on the key, thrusters run to bring your velocity to the target velocity in the whatever direction the ship is facing. That's why it comes down to 300 m/s. There's also a "drift" key which disables the thrusters.
Stayed overnight yet didn't get stream noti again, unfortunate.. wonder if is it held unlisted Btw, Totally love what you did on 11:59! Best feature of python, where even function is First Class Objects. About 13:38 - That simulator-like player fixed; world moves approach - Didn't know it involved such hardships implementing it, now to think we can't use position in shaders in that case can we? Since my game-ish stuff is currently relying on rigidbody and positional forces to implement per-engine/rcs forces so this won't work too in that case. I really gotta find a way to combat that distant object issues.. About 1:04:03 - When I was implementing one before I went enums + List, it would save tiny, tiny bit of time. Like, for 10000 elements and fixed index/key access 100000000 times giving 4.2s vs 3.3s - not sure preemptive optimization is ever worth tho, haha. Codes in reply as yt might cut it.
>>> dict_ = {f"{i:10}": i for i in range(10000)} >>> arr = list(range(10000)) >>> key = " 512" >>> >>> import timeit >>> >>> def dict_access_hardcoded(): ... for _ in range(10000): ... dict_[" 512"] * 1 >>> >>> def dict_access_global_key(): ... for _ in range(10000): ... dict_[key] * 1 >>> >>> def arr_access(): ... for _ in range(10000): ... arr[512] * 1 >>> # not cached >>> print(timeit.timeit(dict_access_hardcoded, number=10000)) ... print(timeit.timeit(dict_access_global_key, number=10000)) ... print(timeit.timeit(arr_access, number=10000)) 4.162657599999875 4.493375699999888 3.5392459000004237 # after cached I suppose >>> print(timeit.timeit(dict_access_hardcoded, number=10000)) ... print(timeit.timeit(dict_access_global_key, number=10000)) ... print(timeit.timeit(arr_access, number=10000)) 4.016332600000169 4.214319400000022 3.413639200000034 >>>
11:59 - Yep! I like functional programming and in this case it's really more a set of functions with different dependencies than an object, heh. 13:38 - Floating origin should work fine for you, there are just gotchas. The shadows thing was particularly tricky because of how the shadow map follow the player while snapping to texels. 1:04:03 - I just switched to using ints for ids of entities...considered using a list like the code you shared (I was able to see it in studio) But I prefer dicts since the set of entities does dynamically grow (and shrink, for now) during gameplay.
@@davidroome137 oh thought it would've be static list of bullets, no way managing two lists for k-v pair is faster than a dict! Simplest yet the fastest, how one can resist that! Makes total sense going for dict
Didn't know it had folding landing gears, that's more detailed than I expected
These modern remakes of classic lego sets are great. Preserve the design and many details of the originals while adding new details. Pirates of Barracuda Bay is another great one (and maybe the best Lego set of all time in my opinion)
Ah White bat audio, totally loved it when I heard "Conspirator", can't believe it was loyalty free, kinda want to put that in game. And Regarding 3:18 I can't hear soundtracks unless I'm wearing headset at highest gain - still can't hear it well sadly! Seeing that you're not using open-ear headset like I do, I have an idea I couldn't tested out for balancing out the volume: --- Assuming following: - Your Headphone can reasonably soundproof from external sounds - You're using Voicemeeter banana (not sure if it works on mac, let's just say some virtual mixer) - Channel IN1: mic in - Channel IN2: PC sound in (Virtual input) - Channel A1: Physical output to headset - Channel B1: Virtual output to OBS --- Steps: 1. Mirror IN1 to A1 & B1 (Voice) 2. Mirror IN2 to A1 & B1(PC Sound, or music) 2. Speak while playing soundtrack on PC. 3. Adjust gain on IN1 until it satisfy you. 4. Disable IN1 on A1, so you don't hear yourself when streaming. 5. On OBS use B1 as sound input. (Assuming you don't want to keep voice & music channel separated) After this one-time setup - in theory you can simply record using that saved scene and know it will be in desired level unless loudness of your voice itself changes too much. (In that case, skip step 4 so you always hear echo of your own voice, so you can consciously adjust your loudness. one I worked for actually streamed like this!)
Oh, and your video might be quite on low-gain relative to other videos on YT! I think you might already know this, but when you right click on YT vid screen > Adv. Statistics you can see "Volume / Normalized" Section. Normally that place has trailing "(content loudness: dB)", which indicates how small the volume was, then that youtube normalized it to their standard. (Altho still some videos sounds way smaller than other though) Using your past stream as example, one you streamed 2024/4/26 (for UTC+9) with title "Live coding! Low poly 3D modeling ..." has content loudness of -17.4dB - you can compare this with other's livestreams as a reference on how much to adjust your gain on OBS! Honestly still not sure if YT normalize volume by perceived loudness or by the peak to see that some other videos sounds drastically louder entire time than other videos, kinda mysterious.
Totally love FPV on 9:07 and afterward - btw is that internal screen showing targeted ship to clip out of the screen area? Kinda look cool to think it's 3D hologram haha
Yeah it's a cheap effect that I implemented before I figured out render-to-texture, but it is cool in it's own way!
Thanks for the feedback, still figuring this out! I haven't messed with audio settings too much. I'm using the built in mic in my MacBook Pro and have the volume level for "Audio Input Capture" turned all the way up in the mixer, but no additional gain added in Advanced Audio Properties. Loudness of -17.4 db makes sense, that lines up with what I'm seeing in the mixer. Reaching just beyond the green range into yellow in OBS. Does seem lower than what I see in the mixer for Screen capture when listening to other livestreams with the volume turned up in the video player. Will do an audio test stream at some point.