I coded in screen recording so I should be able to upload a lot more gameplay videos.
That's basically a poor-man's gravity gun. It may be a good idea to make something like a GMod-style
spawn menu, playing around with blocks is getting kinda boring. I'm pretty tempted to add networking
at this point too, maybe networked game-dev, since Lua is so dynamic?
Yeah I know it's ugly. Took me about 10 minutes though, which isn't too shabby. TrenchBroom is
pretty nice. I actually
spent like 4 hours mapping out the house though; to get the dimensions right:
Kinda reminds of of that time I made that Game Kastle map for CS:S. Wish I knew where I kept
the file for it. It's probably gone forever at this point.
Looks like I spoke too soon. There is something out there that's better than
Hammer, and it exports to .obj. TrenchBroom.
It's a Quake editor, but that's perfectly fine because HL2 is based off of Quake anyway, so
I already know how to use it for the most part.
The guy added a lot of cool features on top
of it too, like vertex editing and 3-point clipping. I'm watching videos on YouTube
about it and it seems perfect for my uses.
An honorable mention should go to LevelBuddy,
which I was initially going to use. But I found TrenchBroom through
looking up reviews to LevelBuddy, lol.
That's an arbitrary .obj file I made in Blender. It's loaded in
bullet as a static physics object!!!! Making levels couldn't be easier.
(Not really tho.... if I could somehow leverage Valve Hammer Editor that'd be ideal, but that's way
too much work)
It's time to model the truck in blender. I also should probably start implementing animation.
And maybe ragdoll physics???? Seems too ambitious but HOLY SHIT LEVEL LOADING IM SO HAPPY!!
Actually I think I'm just gonna make something like the physics gun in GMod. It's kinda lame
just spawning blocks at the center.
Also, I've been playing a few games and watching interviews with Jonathan Blow etc to get my creative
juices flowing. I am so much more set in the "no HUD" thing now. No minimaps, no "journal", no "objectives",
nothing that is 2D flat on the screen. (except the console)
Any info you need to know will be observable in the actual game world. For example, if you want to
switch weapons, you'll have to tell by the color the glock emits.
Hell, I'm even thinking about not having a pause menu. Well... you'd be able to pause the game,
but it would be more of a like... "freezing time" effect.
Actually... I could take that a step further. It's be a freezing time effect, but you will
also be taken somewhere completely different. Like, a matrix-like 'whiteroom' with doors you can
go in to exit/save/load/etc. And it will also have a delay. So pausing the game
will actually give you a slight disadvantage, because a) it takes time and b) you have absolutely
no idea what's going on in-game when you come back to your computer.
Bullet is nice. God damn. I should have just picked this from the outset. No wonder Rockstar
uses it.
It's so much faster and accurate, and the API is easy to understand, especially
with all the tutorials out there.
Unfortunately I had to fight with the build system a bit. I've grown to tolerate CMake, but bullet does this
weird thing where it creates like 6 or 7 different .dylibs for each sub-thing instead of one nice one
I can use with LuaJIT.
Thankfully I made aite, which made it pretty easy to just
completely ignore bullet's build system and compile it
the way I wanted. I had to strip out the
Bullet3 stuff (except for Bullet3Common, since it's used for logging), and it built without any hiccups!
It took like 35 seconds on my laptop tho. But again I guess that makes sense since it's so fully-featured.
Also, getting it to work with LuaJIT nicely is a huge work in progress, because I basically
have to hand-write a C wrapper for every function I want to use. But it really isn't bad at all.
The workflow is really nice since I'm using aite. I can just integrate my C wrapper directly with the core
library, and then just run aite to compile that one file and relink it. Takes like 6 seconds.
Edit: Takes less than 1 second now. I spent some time optimizing aite after writing this.
So.... reactphysics3d is extremely buggy. It actually crashes a lot. CapsAdmin suggested
ODE since it has a C API but it looks like it isn't maintained
anymore, although it seems stable and was once extremely popular. But meh. I'm done with half-baked
solutions that end up not working out.
Time to bite the bullet. Unfortunately
it only has a C++ API, but I've had to go down the C-wrapper road twice already, so nbd. Also
it looks like they're working
on a C API. Seems like a worthwhile investment.
So... I probably should have thought of this before, but I need physics simulation on meshes. Not just cubes.
Reason is: converting the .obj levels I make in Blender to cubes will be a bitch to program. So unfortunately,
qu3e won't cut it.
Thankfully, I don't have to swallow the bullet pill just yet, as I found another, less advertised
engine called reactphysics3d.
It's really well documented, has a small feature list, and it seems to have been in development since 2008!
It also has support for static physics with concave meshes, which is all I need since it will be a level!
Unfortunately it's also in C++, so I need to go through the pain of understanding the C++ API and wrapping
it in C again. :( Hopefully this is the last time.
So yeah all I really have to show from last time is the skybox. I've been refactoring mostly. And
since qu3e is in C++, I had to write a C API for the Lua ffi bindings. So now that's out of the way,
I just need to actually integrate qu3e with my engine. Hence the refactoring. I think it's ready
to integrate now. I'll probably finish by the end of tomorrow.
After that... I think I'd be pretty much set as far as the engine goes. Shadow mapping and
model animation would be nice, but I can always do that later. I think it's due time to
start on the creative process.
I feel myself about to hit a wall. I'm basically idling, implementing font rendering / console / joystick support
instead of actually moving forward with rendering / mapping / modeling. Going on reddit to avoid it etc.
I'm only gonna map out the parts of the bay area I care about / have been to. Everything else will just be a cliff,
where if you look down it's too dark to see. If you fall off this cliff you'll land in Lavender Town. Your
glock will turn into an actual usable gun and there will just be a bunch of Gastly/Haunter/Gengar/Cubone
mobbing you. If you end up killing them all, the Marowak will come out and actually kill you.
Every time you die, your dead body will be left there. So if you die 5 times, and fall into Lavender Town a 6th time,
you will see 5 dead bodies.
Each exit from lavender town will go to the actual routes. But that will just be an illusion, it will
slowly fade back into lavender town. It'll just basically be an infinite room sort of deal.
I read through the rest of the tutorial, lighting is next.
After that part I should start refactoring my code and start integrating the qu3e
physics engine. Then the model loader, then learning Blender again.
After that though... I have no clue. Idk how I'd implement the level or the
game logic. I guess I'll cross that bridge when I come to it.
Hell yea, got a spinning cube in (mostly) pure LuaJIT. Followed
this tutorial.
Instead of writing it in C++ (ewww), I just translated it into LuaJIT and C. :D
The performance of it is surprisingly snappy. I guess we'll see how well it
turns out when I add more stuff to it. I'll probably have to rewrite the render
in C at some point, since it's probably slow somewhere. And multithreading
in Lua is a nightmare.
As far as game mechanics go... I think it's going to be a counter-strike esque
FP"S" when you're on-foot, and a GTA type game while in the truck. You can only
use a controller while in the car, and only mouse + kb while on foot.
As far as weapons go, I think I'm only going to have the glock from 1.6,
with a custom modern-looking skin. No bullets of course. It would be
projectile based stuff. Like gravity gun, hookshot, etc. The ammo info
+ what mode you're using would be on the top of the glock. No HUD. Possibly holding
down right click would give you a better view of the top of the glock.
I really like the idea of combining mechanics from different games, and
forcing the player to use those mechanics. No mouse + kb for driving.
No controller for FPS. It'd be similar to how you don't use a wheel
and gas pedal while you're walking around, and you don't move your
legs while driving in a car. The context switch is still there, which
would make it more immersive I think.
Oh yeah... I forgot to mention before. excessive's
LD33 submission works
on OS X with minimal tweaking! So now I know what's theoretically possible.
I could live with graphics / mechanics similar to this. And this was only made in 4 days!
Also... I was looking around at physics engines and I found
qu3e. It's purely
box-based physics, which kinda sounds bad at first, but apparently
that makes it way simpler. So with that in mind, I think it might
actually be workable.
Like, I'm already cutting corners on the
physics engine by making it a hovercar instead of a regular car,
so I think this makes sense. Plus you can basically make crude polygons
out of cubes, if you rotate them right. I think the GIF in the README.md
file really sells it:
Kind of like GTA, but with no violence. And hovercars. Mostly dialogue and story driven, I think.
But also a sandbox. I don't know how I'd pull that off.
I might have the setting be in Sunnyvale and San Jose, and you just drive to Pokemon League and play
pokemon or something. I like the idea of recreating where I used to live.
...Maybe it'll just be the bay area but with things added that I wish were there.
Hovercars
BART station going through the south bay
Skyscrapers
Actual... you know... fun things to do
Be able to actually enter the tech companies
I really like the hovercar idea though. It'd be pretty funny to just see you go on a roof or something
with the car half over the edge, and then turn off the hovering mechanism and just have it *plop* over
the side of the building.
Plus, the physics for it would be waaay easier than if it was an actual car lol
As for looks, I think I'm gonna go for something of an inbetween of Killer7 and Wind Waker. Dark,
but cartoonish. Always night time too. It'd be especially funny since it's in Sunnyvale. And also
it would be way easier to explain away the lack of other cars and NPCs, since that's how Sunnyvale
actually is at night.
I think I'm gonna get back into making games. Seeing the awesome stuff Karai and shakesoda are doing
with Love3D in LD35 and
LD36 is motivating me. 3D is hard, but they
make it look easy and fun.
Hopefully their LD36 submission works on OS X out of the box... I need a good reference to get started.