DoomSharp with Wesley Cabus and Nico Vermeir - podcast episode cover

DoomSharp with Wesley Cabus and Nico Vermeir

Mar 30, 202347 min
--:--
--:--
Download Metacast podcast app
Listen to this episode in Metacast mobile app
Don't just listen to podcasts. Learn from them with transcripts, summaries, and chapters for every episode. Skim, search, and bookmark insights. Learn more

Episode description

An MAUI version of Doom? Carl and Richard talk to Wesley Cabus and Nico Vermeir about their efforts to port the venerable game Doom to C# and .NET 6 with MAUI as the UI. Wesley did the base conversion of Doom over to .NET, while Nico focused on getting the UI working through MAUI. Converting code, graphics, music, and sound effects from the 1990s into modern solutions is challenging but fun! Primarily working on the PC, there's a concerted effort to get a version running on Android devices too - and they could use your help!

Transcript

How'd you like to listen to dot net rocks with no ads? Easy? Become a patron For just five dollars a month you get access to a private RSS feed where all the shows have no ADS. Twenty dollars a month will get you that and a special dot net Rocks patron mug. Sign up now at Patreon dot dot net rocks dot com. Hey Carlin, Richard Here, as you may have heard, NDC is back offering their incredible in person conferences around the world, and we'd like to tell you about them. NDC Oslow

will be made twenty first through the twenty fifth. Go to NDC Oslo dot com to register. NDC Copenhagen is happening August twenty seventh through the thirty first. Go to NDC Copenhagen dot com for more information. NDC Porto is happening October sixteenth through the twentieth. The early bird discount for DC Porto ends July twenty first. Go to Eddcporto dot com to register and check out the full lineup of conferences at DC conferences dot com. Hey, welcome back to dot

net Rocks. This is Carl Franklin and this is Richard Campbell and uh wow, this is gonna be a good talk. Huh doom sharp, It's gonna be some fun. Yeah, it's gonna be fun. A couple of Belgians on Friday night. You know they got beers. I'm sure they got beers. What could go wrong? It could go wrong? Yeah, how you

doing, buddy? I am well, you know, it was a real flurry of travel for a while there, but finally I am in a place so at home for a few weeks before MVP summit, right yeah, And I will not be going to the MVP summit, but I wish you the best, have a good time. Yeah, it's only a drive for me, right, like right, there's almost no excuse not to go, and only gonna do is drive. I'm down. So what's up with you? Ah? Well, Um, here's an interesting thing. I got an email

from Freeconomics Radio. Cool, Yeah, Freconomics, great podcast and great books. And they basically want to interview somebody who's kind of local to me, and they wanted to know if my studio is available for them to, you know, for me to host a guest. And they use Riverside and they're like, you know, do you do podcasts? Since before the word podcast exists. Yeah. Yes, so I'm really chuffed. They're going to um, they're gonna bring somebody in later in the week and they're going to record

from my space. Nice. So you're just going to do production work for them to host the guests. All I'm doing is hosting and making sure that they that we get a local recording and they're using riverside, you know. So it's yeah, so that I'm going to do a local wayfile recording with audition just to be safe, finge or you know, leave them alone for an hour and hopefully you get credit. Yeah. Yeah, so that's what's exciting to me. Hey, let's roll the crazy music for better no framework.

So I actually created a class out of necessity and it was so useful that I created a class library made a new get package out of it. It's called AVN observable and so this is I basically use observable collection of T as the base class. So observable collection of T is a list or a collection that's generic that essentially allows you to handle events whenever the something in the

list changes. Right, So I also included a selected item T property, So whatever the T is that you you know, the type is that you pass in the selected item property will be of that type as well, and it handles all the stuff that you need for binding. So there's weirdness when you're binding with collections and you have the sort of selecting item and edit it, and what happens after you edit it? Does you know? The list has to update? The UI has to update, right, So basically that's

that's what it does. And I wrote a Blazer demo, a MAUI demo, a WPF demo, in a Windows Forms demo, and it's all there in the in the GitHub repost. So it's GitHub dot com, slash Carl Franklin, slash avn observable. Nice. That's cool, man, It is cool. And I love that that is a possible solution, right. It's like, hey, I can work around this in my app, or I can just make a new library. Yeah, abstract that problem away so it's consistent across the stacks exactly. I love it. Yeah, that's a good

idea. So who's talking to it? My friend grabbed a comment off a show eighteen thirty three, the one we did at Sweatuga, the Maui panel discussion when we talked to David and Maddie and had a lot of good conversation. That was really a fun show. And that's actually where the show we're about to do came from. I think they're all talking and Sweden about this. Yeah, and jayon Software had this comment. He says, I have not done any friend end work at c sharp for the past ten years or

so. I went to what's you when it comes to front end development in c sharp space? And I am lost Microsoft alone as so many front end frameworks from Windforms, web Forms, MAUI, Blazer, WPF, whin ui UWP. I think it's time you do a show comparing all of these. If not, I'm going to go back to coding everything in JavaScript and packaging an electron. No, don't do that, Okay, Jay running around with the gun point of your own head saying one move and idiot gets it.

Not a good plan, Like that's not the way. You know, you can't blame Microsoft. I mean they have their their employees have to do something when they come to work in the morning. You know, Yeah, we need to fix this. Oh, let's make a new framework. Yeah, we've done this show, Like, go back and have a listen. To the show we did with Brian Lagunis a couple of years ago. We ran

down those stacks. We've also talked about Abylonia. We've talked about Oh no, like I'm aware of the complexities, and we've definitely been working on the problem because it's a sharcated problem. Yeah, but you know, nothing's gonna make me build it an electron man. That's a tough call. So you know, go ahead, Jivid, try on some of the choices, and we're going to talk about some of the crazy stuff you could do. We see Sharpe and Maui today. Yeah, so, Jay, thank you so

much for your comment. And a copy of music Code Buy is on its way to you. And if you'd like a copy of music Code by right a comment on the website at dot net rocks dot com or on the facebooks. We publish every show there, and if you comment there and everything the

show, we'll send you a copy music Code Buy. And hey, you know what, you can follow us on Twitter if you want to, but you should follow us on Mastodon. I'm at Carl Franklin at tech hub dot social, and I'm Rich Campbell at maston Social And now I think We've had more engagement on masketon lately than we have had on Twitter, even though I have like a thousand followers or so and I have almost fifteen thousand followers on

Twitter. Seems like the Twitter followers just don't comment as much or retweet as much. There's just more noise out there, I think. Yeah, the folks that are on mastone are pretty engaged, which is fun. Yeah, that's what I'm trying to say, Richard. Yeah, all right, let's bring on our guests. Wesley Cabooz and Nico vermach So. Wesley is a coding architect at x Spirit in Belgium by day and a gaming slash piano playing

geek at night. He loves sharing his knowledge with others and tries to coach people in doing the same by co organizing meetups in Belgium and speaking at conferences. And sometimes he gets crazy ideas like pouring doom into c sharp. Who would do that? He's gone crazy, That's not a thing. And Nickovermack

is a application architect or an application architect and Microsoft MVP from Belgium. He's part of the Belgian Visual Studio user group and a crew member of Tech orama where you and I are going to be speaking in May, right, Richard, Yeah, absolutely, and probably recording a few shows. Yeah, and I'm doing a Malley workshop. Cool. When not playing around with technology,

you can find Nico playing guitar or riding his motorcycle. I sense that there's this music kind of thing happening, and maybe what clued me into this is all the instruments that are hanging on the wall and set up behind you. It's just like you're like a rock band set here. Yes, so this is actually the rehearsal space of my heart ruck slash heavy metal cover band.

Wow. Nice. What's the name of your band? It doesn't actually have an official name yet, so we've only been around for a couple of months or just getting to know each oldn Okay And who is speaking? Is this Wesley or Nico? N Okay? Nico, I have I have a suggestion for the name of your band. It should be Yeah, didn't you spill that out? Oh man, it's my friend, uh great drummer who plays

with us once in a while. He also plays in this just absolute scream oh band you know, and uh, yeah, I always have let's say the name of this band is and this song is called all right. Well, anyway, where do we start doom and c sharp who had the crazy idea in the first place? Well, yeah, that would be me, Wesley. Yeah. So, um, to get started was I saw this video on the internet by David Whitney. You know, he did the session a while ago on emulating a game Boy in Donet Corps, and that actually

got to be inspired to try to do the same. So yeah, I started with that, reading all about the game boy, trying to create the emulator and so on so forth. A few weeks months nights later, I had something working. Also could do some sessions at local meetups and conferences on the same topic, and then I thought, hmm, that's done. What's next? Because I know David was talking about looking at he was looking at the Mario sixty four source code from Nintendo that was released, So essentially you're

by emulator. You mean like you can take the ROMs out of these games and run them out of PC or Mac. Yeah indeed, yeah, yeah, and that's now running in dotnet six as well on Windows forms. But then after a while, because I was actually looking into also creating a blazer, was some version of that but I got stuck because treading was not a

thing yet, right, right. So I was looking at another project, and I was talking with David and he was looking at the Mario sixty four, and I thought, maybe this time I need to do something different than just copying David. And then I thought, why not poor Doom because the source code is also available, and well I had just Doom use an engine that other games use. Or is it just that one game. It's just that one game. Yeah, I mean it's from the it's from the early

nineties, right, like this is vintage vintage. Yeah. Yeah, I remember when it came out, but I don't know if it had evolved. Well, the only thing that evolved in the original source code is that they they run both the Doom one UH files and also Doom two, so they use the same EXE file for both of the games. But that's all that they really do. So it was not I don't I don't think it was reused for something else. I mean it also written from the ground up,

because they they've done it's software, did Wolfnstein? Yeah, before that, but they they redid everything for Doom. They probably used some ideas, but it was written from scratch as far as I know. I mean, I mean, ultimately they did make this thing called the Doom Engine, and that eventually evolved into the Quake engine. Right, this is all John Carmack stuff, right, like, yeah, the same guy that's like Oculus, and you know now it is quit from those guys, Like that's all Carmack.

Wow. Yeah, I never I never got into the scrolling shoot them up games, but I certainly watched my friends play them. So so what happened next? Well, I just well, I say, I just but I opened up the repository and I just got started at the first thing, which is trying to load the wat file, which is where's all the data. It's it's just one big file which has a directory structure, and then saying if you want to load the first map, then you have to jump to

that byte location in this file. And then you have a list of the map contents like the vertegues, the lines, the sectors and the textures being used and whatnot. So it's all binary. There's no Jason here or anything. Yeah, that's all. That's all good old binary asky data. And then I just started writing code using the typical stream reader stuff. In in dot net to try and read the file. And the first thing that I wanted to show is the logo when you start the game, so you get

that big doom logo in your face. That's the guy with the two guns, you know, with lemons all around him. Yeah. So um. I started working on that part and the game loop, which was at that point just running get what file, show something on screen. And I got that far actually pretty quickly, so that was a real good motivation to keep going. And then I started working on the menu and then gradually working on just sporting file by file until I got the first renders of the first level.

Yeah. Wow, okay, Now, I mean all the underlying code was written in C, right, like yeah, so yeah, I mean I could see you crime and end the WAZ but how did it end up in dot net? Um? Yeah, you can translate C cos I mean, it does help if you have knowledge of the C language, but it's pretty portable to C sharp. Interesting. And also this is old school C.

This is like nineteen ninety C. Yeah, yeah it is. But that's also benefit, probably because it doesn't use a lot of it doesn't use any classes or right, the fancy C plus plus things like multiple inheritance. How did the graphics translate? The graphics were Actually they use like indexed color, so they have a different pellette of colors that they use, and then they reference each color pixel by pixel and they just have a view on one

giant buffer filled with the pixels like line per line. Wow. So but yeah, so you have to be in a sort of a graphics mode though, and the c sharp that doesn't. I didn't. I didn't know c sharp was fast enough to do that without some sort of direct dex or some sort of you know, it can handle it perfectly fine without anything of that

likely. Yeah, I'm well, I started using WPF for the window, and I just use double buffering, so I have one array of screen bytes coming in and then when that's done, I flipped the buffers and that's more than fast enough. Then you get sixty frames a second that way, Um, it's not sixty because the doom engine is only thirty fps. But right, you don't see any stutters or anything, so I'm pretty sure that I'm

hitting the thirty fps. It occurs to me, though, that your screen resolution is also a lot lower than your typical PC screen, right, Yeah, I think I don't know it out of my head, but I think it's three twenty by two forty. Yeah, yeah that makes sense now, yeah, nineteen nineties game. That helps, Yeah, that that helps. Yeah, and then we just used the WPF up scaling to make it nicer. Yeah, so you're only you know, you're drawing like seventy five thousand

pixels at three twenty by two hundred yep per frame. That's just that's not that much day, it's not that bad. Yeah, it's just gonna look a little small on my four K screen. Well, you can always give it a go. It will actually look pretty good. Yeah. Yeah. Do I say, you're you're doing the upscaling, which is you know, efficient software. Ye are you? So are you using like texture maps or anything like that for the three D stuff extruding? And it's I didn't introduce

any new technology while porting. This is like one on one port from the original code. I even left the bugs and there wasn't any of that. So no, yeah, they didn't use it. Um And it's also not real three D. It's like a pseudo three D that they're doing. They call it like two point five D something like that. Yeah, yeah, something like that because you can't move in the Z right dimension because if you shoot straight and there's a there's someone above you, you'll actually shoot everyone in

that vertical line right right? Oh I see yeah? So you so is it that you can't move in the y access because they know you can move forward over? Yeah? Why yeah, sorry, yeah, yeah, it's a it's always strange thinking in three D. Right. So you can shoot straight ahead, that's it. You can't go up or down. Yeah, you shoot straight ahead and then if there's someone below you or above you, as long as you can see them, you're hitting and gaining them. All

right. Wow, you weren't supposed to have above and below right like it' all? This is also supposed to be that sort of dungeon, you know, square grid moving around thing. So well, there is a bit of heights. There are stairs in the game, so you can move up the stairs and then but I don't think there's jumping as far as I can recall before that, Like that's how old the game we're talking about. Goes shake in his head for jumping, Nico. What was your part in all this?

Well, my part started. You know what's up group that we're both in and wes Lee was posting images of this progress. I would like, oh, that's that sounds like fun. And then came a message, Hey, you know I'm poorting Doom to C sharp. Would you like to try to get it on mobile phones using Maui? And so yeah, that's what I call a nerd snipe. Wow, So I cloned Wesle's coats. I don't think I ever really looked at all the game codes because that I just

started a new or. I added a new Maui project to the solution. I referenced the libraries, and everything just started building. So then I had to figure out how to do the rendering because the right wall bit map was not there on Maui, right, so I had to convert everything to ski yeah sharp. Yeah, of course it turns out that was it. The index colors was not supported. Yeah, so yeah, there was a lot

of work to be done there. And sorry, the color mapping we've been yeah, yeah, at some point we got a very blue version of Dooms. It turns out that the two color channels were inverted on Maui. Yeah, there's a lot of red and Doom normally, so you've got a lot of blue there. Was a lot of blue. All the demons are bleeding blue, and it was almost doomed, doomed by IF sixty five. And then of course it was converting the physical controls to touch based. What's the

right way to make it work on a phone? Yeah, but that's also where you saw the cross platform thing coming to play. I could just capture the the dutchy events on the images that I used as controls, and I could just plus it into Wesley's code and it would just work. And that was a really interesting exercise. Yeah, and I'm kidding, Yeah, wasd doesn't not doesn't make a lot of sense on the phone. No, and apparently neither does it in Maui, even though you can you can target desktop

platforms. Right, does it actually work on the Windows and Mac platforms? I haven't tried it on the Mac yet, but it does run on Windows. So if you run the Maui version on Windows, it uses win Youwi. Yeah. Right. Mac is definitely the redheaded stepchild of Maui, isn't

it, maco es Yes, it's kind of like the last priority. Well, when I was running it on my laptop using Maui through win Ui, um, I figured how hard can it be to to make use of the keyboard U turns out it's kind of hard because keyboard support is not there for MAUI, right, Oh really, except when you're in input controls like a textbox, then it just works. But if you just want to capture your key down and key up events, it doesn't work. MAUI swallows them all.

So what I needed to do was arriety behavior that crawls up the visual tree all the way until I exit MAUGI land, and then I can hook up event handers in the actual WINDU eye controls and that made it work. But about three weeks to figure that out. But it's that's all specific to the Windows implementation, right, Like so much reportability on that part. Yeah, but it does show the strength of MAUI to go cross platform and platform specific at the same time, right, Yeah, the fact that you can

poke down into the platform stuff. But when you went to if you were going to now do this for the Mac, you're gonna have to write it some different platform or like, does that end up being a separate set of files or is that just that if Windows, then if Mac, then the behaviors are actually different files. But then the goats to attach them is actually the preprocessor of things. I mean, that's the whole the basics of the game, right, Like, where where does the game get weirder from there?

I'm just trying to remember that's it's an old game now, But does it get any extra challenges when you get to like the boss levels, it will probably press right now if you try to get that far right, I can remember being able to go to the next level. Yeah, took a while too. Yeah, that's a good milestones like get a level to work, be able to finish a level, like actually, okay, you you're

at the end, now, can we load a new level? Well, loading the new level was probably already working, because that's also happening when you load the first level. But in between you get this intermission screening doom where they show you the map of full boss oh right, the planet where you're on, and then that's right, you're doing you're doing the moons of Mars. And then they show you you just had that level done. This is your result. You had like that many enemies you killed? You killed all

of them or killed only a percentage? Right? You found so many items, you found so many secrets, and you took way too much time to get there. This level is like double in thirty seconds according to them, And if you want to go through everything, you take typically four or five minutes, right, if you know the level. If you don't know the level, it's going to be more. Well, we're completion this, right. You have to find every secret, you have to kill every bad guy.

Yeah, but then it uses the state's insight to transfer from your playing a level to you're going to the intermission screen and then you're loading the next level, and then the boss fight will might still work. But then after the boss dies, there's also a specific trigger that you need to implement because you're not then going to an intermission screen, but you're going to go to end of the episode screen. Yeah. It's like closing cut screen. Yeah,

and that's probably not working yet. Do you remember when playing eight bit arcade games in the early eighties when if you got to level two hundred and fifty five, level two hundred and fifty six, it would just stop. Yeah, it's like the killed screen. Yeah, back man, if you get too many points that your points go negative or something. Yeah, yeah, yeah, yeah, eight bit problems nothing like signed imagers how are the cut screens even stored? Like, that's a whole other problem. Um.

Some of them are just images, right, just like the logo. Um. Others use scrolling text right, so they have a fund defined also in textures, so to speak. And then they just rolled texts one digita or one character at a time. Um. And then they play a typical song during those screens as well music. I love it. Well, it's actually midi files in this case. Wow, even more challenged by itself to me.

Yeah, yeah, parting midi files. Yeah, but those sound pretty well on on a modern Windows machine because you have a pretty decent sound library installed by default. Um, and if you want, if you if you have like a good sound library yourself, you might be able to plug that one in and have even better hi fi sound if you want. Yeah, maybe better than the original. Yeah yeah, yeah, I think it already sounds better than the original. Yeah, because I think they had to use

their own sound banks in the past. And then if you had, if you had like a gust sound card, you could probably make it sound better. I never had one cards. There's a card. Yeah. Me and sound Blaster, I have a history with the sound Blaster Richard knows. But I was working for the company that did the midisequencer and the MIDI connector box for the sound Blaster, and I wrote the MIDI files that come with it.

So all the all the sampled MIDI files, that's me. Yeah, so a twelve year old me at your code running then, yeah, back in the day. Well, I didn't write the code. I just wrote the MIDI files. All right, Well, stick around because we're gonna have more with Nico and Wesley coming right up after this. And we're back. You're listening to dot Net and Rocks. I'm Carl Franklin. That's my buddy

Richard Campbell. Hey, and that's my new friends Nico and Wesley who were going to see a tech orama and they're talking about doing c sharp port of Doom. And I got to ask this question, if somebody wanted to look at that code and maybe new c sharp but didn't know much about graphics programming, are they going to learn something? What are they going to learn? They're gonna learn probably a lot about how to get graphics on screen in the

most elaborate way possible. But that's just because they, I mean, they in software had to write everything from scratch as well, keeping in mind that it was supposed to run. I think they targeted at three eighty six CPU in the day without a floating point coprocessor right, not a d X, not a DX and sx indeed, which means they actually implemented a fixed floating point class themselves to do all of the trigonometry operations faster than they could do

on a PC without the floating points math code processor. So if you want to look at the graphics code, um, there's a part that's really easy,

which is the just the basic logo images that's bitmap pixel data. But then index colors um the renderer that's something else because they use the BSP trees where they they go through all the sectors to find out which sectors you're seeing, and then they find out which walls they need to render, and then which textures and then there's a light mapping and that's all them from scratch. How how pretty was the original C code where the variables like abc x Y

it was it commented the it's actually pretty well structured. Also a lot of decently named variables, and that's good. They do have the only the only eyes and Jay's or counters, So that's fine. There are some, well, quite a lot of comments in there. Some comments are not for publication. Yeah, I'm more appropriate than others. Yeah, do you come out across any comments like what the hell was I thinking here? There? There's a lot of those, and also I think there's still some we need to

fix this and something else. Yeah, from nineteen ninety three. I love it. Yeah, yeah, yeah, because there's one bug in the code that I noticed while I was coding well I want to say copying over, but translating it from C to C sharp. I was like, this doesn't look right, and I left it in there. I marked it for fixing it later. Yeah, it's a good that's a good comment. This doesn't look right. And then a bunch of code. It smells bad. Nothing

as permanent as temporary code, of course. Yeah. Yeah, but I actually lifted in because it is a very well known book in all of the doom Sour sports. And then you can either choose to fix it or you can choose to stay like a vanilla ports and keep it in right in, stick with the vintage. Yeah, that's the game that created the first BFGFG. Yes, also the big fricking gun. Oh okay, Like that's which is a meme, right, I mean so many games even and even movies

have a BFG of some kind. But you're talking about the gun at the bottom of the screen that in the first person. Yeah, it's right that you're that you're playing with. But also like the weapons in Doom were part of the fun, like the chainsaw, that's some good fun, right, the shotgun boys effective of course, the mini gun your rotary canon. But the BFG was kind of the end of game superpowered gun. But you only had so much AMMO for it, Like you had to pick your moment when

you were going to use the BFG, just like in real life. And there's so many games meats the weapons fun. I don't know if you ever played the Redneck Rampage. I think you could shoot chickens or put a chicken on your soutgun or something, but it was some Redneck rampage in the game. What are the first games where you could basically make your weapons like you you pull them together or that would have been one of the zombie games.

But there's this sort of recognition that people love ridiculous weapons, make them from chickens, or yeah for fire using using chickens as the projectile. Oh yeah, yeah, yeah, that's the Plight term for something completely absurd, the bf CG. Here you go, the big freaking chicken gun. Anyway, the language was not as careful as we were being at the moment. Yeah, that's where all that came That's what maybe think of it. It's like

obscenity in Doom. Oh wait, that's where that came from. So, um, did this inspire you to go on and do something else like port port I don't know, graphics framework or a game framework that a bunch of other things. I mean what comes to mind for me is MAME multi arcade machine emulator, which I just got sucked into big time and I still do. But did it did it inspire? Are you going to stop at Doom? I guess that's what I'm saying. Um, well, Doom is not

yet completely finished. I mean it's if I have to put a number on it, it's probably in a eighty percent state finished right now, right and I want to get near one hundred. I'm not sure if I'm gonna get to one hundred because I'm doubting if I want to do the networking stuff, dude. Multiplayer Yeah, I know, I know when that first came out in Doom, like it was a huge crisis, like universities were banning it. I was a networking guy back then, and I got all kinds of

calls of like, how do I block Doom multiplayer? Do my actual multiplayer? Yeah? I didn't know that you could play it even with a serial cable between two PCs. Yeah, nice, wow, because we I mean, it's ninety three, like a lots of people don't have networking yet, right, Like those are expensive features. But this, this was the This leads to duke Um three D, right, which really you talk about the definitive first person multiplayer game for land parties, talking about strong language. Oh

yeah, it's time to kick ass and chew bubble gum. And I'm all out of gum. To answer the question, I'm not sure yet if there's gone what the next thing is going to be, Because this idea really started when I had a lot of free time in the summer so I could well, you know, I spent most of my time at that point working from home, right, which went I went from one week sitting at my desk in my place too having vacation, waking up, booting my PC and starting

to work on Doom. So summer is coming up again. I know a new project, but I'm not sure yet if I'm going to start on a game engine, because I know someone else started working on a Maui game engine, and then on the on the Mauie side of things, I got nerds

niped again. Oh no. So when we met in Sweden in February two weeks later, Wessie and I were actually in Canada at Kung Fu and we were in the speaker room working on Doom and someone said, you know what would be fun if you could if you could control your Android version by just walking around holding your phone right. Well, hey, accelerometer. Yeah, so now we're trying to to do that. You have to have a big

room. Yeah well, I mean tip to walk forward side to side and then press somewhere for firing, and then then make like a shooting motion to fire. Together. There you go. You just have to be a clear room. Not included, oh Man. Redneck Rampage was based on the Build engine that they made Duke nukeab with, and the build Egite was a copy of the Doom engine like these are all related. All these games we're talking about, Rutneck Rampage. I always considered the Redneck version of Duke Nukam right

because they looked so similar in graphics. Oh, it's there comes out a year later, right, like it's they're all from the same origin and that same style of game. And have you guys ever used Unity three D? I've played around with it. Yeah, yeah, not really into the I can't say that I've built something that I'm proud of with Unity. We did try to create a game once. Uh we want what engine did we use again? Mona game? Mona game? Yeah game. Yeah, we tried

to make a breakout game with that. Actually pretty far, its basically done. We just needed to build X amount of levels and just publish it. Yeah, but all the fun stuff was done, So we move down two different projects. Yeah, I know, right, well, and the bar so high for Unity. You look at some of the Unity games that are out there, like they're amazing. Hartstone is a Unity It's a tough company to hang out in. It's a long way from two point five D.

Yeah, and it's not a free tool. I mean Wizards. Hartstone is built with Unity and it's not a free tool either, Nope, yeah, no, but lots of great graphic glasses and things like. You've got a lot to work with if you go down that path. Yeah, it's it's not free, but they have a lot of free assets that can get you going already to build something pretty nice. But then again, you can say

the same about Unreal Engine. Yeah, but in Unity you can use C sharp, that's true, right, or that other language, the one we don't talk about, the one that the j language that shall not be named, Oh no, Joeld the mark. But you know, it's so much game development is just done. And see it's nice to be, you know, working in in c sharp like it just that's the language, you know, and and it's safer. Like you think debugging business appses are tried debugging

games? Try debugging memory leads? Yeah. Yeah. At some point while porting the game, I had the level loaded and the graphics looked almost perfect, and then you started try to start moving, so you press forwards and you're shut into the wall like light speed ahead. I was like, uh, I'm not sure what's happening right now, and I'm not sure how I'm going to find out what's going wrong. So yeah, that's like an experience I had in the seventies. Nice you mean when you were five. But

you're you're exactly right. It's like, you know, this is not forms over data, right, there's no consistent UI here. This is you're trying to create an illusion of three dimensional motion. So uh, And and the idea that you have impacts or there are surfaces that they're projectiles, that that

you have things that move. That makes sense that you can discern an enemy from the wall, and then it follows some kinds of rules of physics, like there's a lot of pieces that have to work right to not toss you out of the illusion that is a game. At least collision detection work because the wall did stop me. Did you get the damage for slumming into the wall? No? Did it make a sound like it does? Make it sound like whatever doom guy hits the wall, he does like he makes a

little grunt. So that worked. Did the collision detective work that they played the sound? Yeah, these are all the things we forget about the fact that you got to write the code it says on a collision, you know, account for damage, create that visualization, and play that that sound like and then it all has to be timely or it does the metaphor doesn't work either. Hit the wall, pause, It's right. It's a lot of moving pieces that have to work together. And then that in the doom game

you see that as as the doom loop. So what typically happen happens in every game is um, you look at the input from the player, you process that input, you process everything else like monsters or the monsters get their turn to move, get their turn to shoot, you move the projectiles like ye, and then you update the sounds, you draw the world, and then you start over again. Yeah, that's one of the hardest things I found to grasp as an application developer. Where you working in an event based

world, your application is is waiting for your user to interact. If you're building a game, then your world is alive. There's stuff happening even if you're not interacting with it. Yep. Just because the players AFK doesn't mean

the world's AFK exactly. I think you mentioned this, but does it did it try the frames at a timer or did it rely on the timing of the CP you, um, it uses some form of timing to uh pace itself because otherwise a game from nineteen ninety three would yeah slam you into the wall. Oh yeah, that was noted. You know, I'm old enough

to remember when we're all our computers were one Mega Hurts. We only had the one Megaherts sixty five O two and then a three Mega Hurts sixty five two came out and all games were unplayable because they were three times faster now and the original XT clones had a turbo mode switch which could turn which would turn it into eight Mega Hurts from four point seven seven four point seven seven to eight, so four point seven seven for games and then eight for everything

else to three. Yeah, turbo switch. It took me years to figure out why you should why one would switch the turbo off, right, because I've never had a PC with the turbo button, but I've heard of it. Was wondering why would you on purpose slow down your computer? Now, we thought it was a feature because we get to speed it up. Yeah, yeah, you think you're good play this fast? Yeah, I just remember, I know this is welcome to four old guys. Try to talk.

Um. I remember when I got my first twelve hundred BOD modem and I was really mad because I couldn't read the text as it came across the modem like I could with my three hundred BOD modem. I could actually read it as it was drawing on the screen. And then with the twenty four modem, Holy crap, the whole screen just appears at once. Yeah, blessing and a curse. Oh well, I guess the moral of the story is, don't get used to your tech. You know it's going to change.

Yeah, well, in that certainty about how we time things like how how fast should that loop run? What's the what is the heartbeat of it? Yeah? Yeah, and you know JavaScript floating point works and C sharp weird? Yeah yeah. Should it just be number? Now that with Doud Crockford told us should just be number? Oh in JavaScript? Yeah? Everything? Yeah? Why do we have to discern different types of numbers? All right, guys, anything else that you want to share, divulge or admit

before we hang up? No? No, really? Okay? Are you looking for contributors? Wesley is there to try and get this thing finished? I think so? Yeah. Yeah, I mean well especially on the on the Android level as well, because we got sound working on Android, but music is not working yet. There Okay. It's again interesting because Wesley got the media files working in the WPF version through an external yellow and when we loaded that yellow into MAUI and run it on when Ui we had sounds,

we had, we had music. Well on androids we don't, so we still need to fix that, right, okay, so kind of find those kinds of mappings for each of these platforms. Have you even have you tried it on iOS? Um? I've had it run on iOS once, but I don't live that much access to iOS devices, right, that's the internal problem that you need a mach to build for a mach. Yeah, yeah, you can run to your own Windows on your iOS device. You can

use Cloud for a mac. Yeah, all right. Well anyway, hey, we'll see you in May and at tech Aroma, and we put all the links to all the things that we're talking about on dot and rocks dot com, so go there and check it out. Everybody. Thanks you guys, thank you. Yeah, it's nice talking to you. Yes, you two, And we'll talk to you, dear listener next time. I'm dot

net rocks. Dot net Rocks is brought to you by Franklin's Net and produced by Pop Studios, a full service audio, video and post production facility located physically in New London, Connecticut, and of course in the cloud online at pwop dot com. Visit our website at dt n et r ocks dot com for RSS feeds, downloads, mobile apps, comments, and access to the full archives going back to show number one, recorded in September two thousand and

two. And make sure you check out our sponsors. They keep us in business. Now, go write some code sext time. The band do a summer times hard than my text ready

Transcript source: Provided by creator in RSS feed: download file
For the best experience, listen in Metacast app for iOS or Android