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