Jump to content


  • Content Count

  • Joined

  • Last visited

Community Reputation

22 Excellent

About catch22

  • Rank
    Advanced Member

Profile Information

  • Gender
  • Location
  • Interests
    Code. Games. Guitar.

    Jesus Christ.

Recent Profile Visitors

1,198 profile views
  1. catch22

    Connecting to client over network. (4.6)

    If you guys are doing networking, I highly recommend at least going through gaffer's write ups. He did the Titanfall series networking, and some other AAA titles, I think. https://gafferongames.com/
  2. catch22

    Could someone explain to me the proper use of "return"?

    A function that expects a return value. so for example... main { var x = hello(); print(x); // outputs 1 } int hello() { return 1; }
  3. catch22

    Leadwerks profile for Substance Painter?

    Well, substance is PBR and current Leadwerks isn't, so yeah, you'd have to adapt the mapping. For LE's stock shaders, anyhow. You could implement or find your own shaders though. Export the diffusals and merge them in your photo editor, then import them and make your own materials and normals in leadwerks? I know this works in 3dcoat, and the last trial version of SP I used it had an export layers to pshop option as well. I think the key is going to be which shaders you assign them in Leadwerks, you're probably just going to have use a more manual workflow with the materials.
  4. catch22

    Should I make the Lua API procedural?

    I'm not sure designing an API around how intellisense works makes any sense whatsoever. The engine is C++ and thus object oriented, there's no reason the scripting language for the engine shouldn't reflect that. I wouldn't go out of my way to obfuscate it. At the end of the day you can just provide both, if it really concerns you? Both of your examples are procedural anyway, one just uses methods/properties and the other has standalone functions, so you're basically talking a style thing -- which should strictly be up to programmer using it, I'd think. Ultimately you'd need to decide if you want to groom people into a C++ way of thinking, or add the confusion layer of making program flow work a bit differently between your C++ core and your LUA API (for the simplicity sake of super-newbs). I'd go with the former and tell people to git gud.
  5. catch22

    Discord Server is Back!

    To clarify, links in discord will expire after 24 hours unless you flag them to "not expire" or set their limit to unlimited. The link says it's invalid/expired. I was asking you to make a new one and make sure it never expires?
  6. catch22

    Discord Server is Back!

    Link seems to be expired, set it to not expired please?
  7. catch22

    How did you get into game dev?

    Nah, it had them. Poke, for example. It was hell to do, but it was possible. "Sprites" were just you changing pixel colors in batches/subroutines. If memory serves, that is. Good times.
  8. catch22

    Why Isn't Leadwerks More Popular?

    It's not more popular because people are sheep. They flock to "industry standards" whether those are even worthy of being standards or not. I used to work in middle ware and most people won't or can't make use of most features software packages are capable of putting out. They need waaaay less than what they chain themselves to. All the bells and whistles are just to get more people to use it, broader audience. Unity and UE4 are a terrible option for a majority of people who struggle to use them. Anyway, I don't like game makers. I'm not a child. I also hate bloat and feature creep. I jumped on the LE bandwagon because it gave me exactly what I wanted: a short cut. I mean I've written my own engines, I cut my teeth on that ****. The thing is, I'd rather write a character controller than a model loader, or a combat system and not a map editor. I don't want to care about driver and API compliance, hardware compatibility, so on and so forth. Booooring stuff. I do that kind of stuff at work all day 😃 I just wanna write games when I get home, which means game system stuff. That's enough work on its own to have to worry about all the building blocks that go into making even that possible. Josh is willing to do all that, so I'll let him do the boring stuff I'm kind of an 'against the grain' personality, I like finding neat stuff that is not well known or super popular; the little guy, you might say. I looked at LE briefly before picking it up. Once I saw the API I was just sold. The fact I can write C++ with a really trim engine that doesn't have a stupid complex API for no reason other than.... just because... is why I got LE. It's like a kit car. You get the building blocks you need to make something fast AF, but it's on you to make it your own. It's like a ticket to just start making games rather than writing the bare bone details that kills projects and startups. Yeah there's a lot of nice free engines, but they don't have the same support and improvement pathways as something you pay for. This is actually a strength of LE. No one is a customer on an open source project, for example. If something doesn't work, get to fixing it yourself. I've devoted weeks and months to learning packages only to find a feature I needed is broken or NYI or incomplete or.... Well, that cuts into stuff I want to do. The community is kind of dead, yeah. This is how indie and sideshow game development goes though. Bursts of activity and then people drop off when life demands their focus. Heck I was gone for like a year and just came back recently!
  9. catch22

    How did you get into game dev?

    I got an NES when I was 6 for Christmas. I remember when I first played it I wondered how it worked, and wanted to make my own. I had a Commodore 64 growing up after that, where I made a bunch of mini games in the BASIC shell it had. I learned pascal in high school after that, and moved onto C and C++ in my own time. I did a few small contributions to ClanLib. I wrote a couple OpenGL ortho2d engines back in the day. I used to use python as a mockup language for prototyping ideas, since it translates well to C++. I was hired by Simutronics to work on HeroEngine/Hero's Journey, which I did for about 3 years. At some point I had the opportunity to work on SWTOR (Bioware bought a HE license and was one of the first studios to use it), which I did not take. HE was cancelled when Simutronics decided to focus their effort on middleware, so many were let go. It's okay though, I was happy to be let go because I had attended a few GDCs (2007-08 ish) and realized at those events that the gaming industry was not sustainable for a living. Not my cup of tea. Too shady, too cut throat, to exploitative. Gross. So indie is the only way I do it, in my spare time, as a hobby, as I've been doing since I was a kid. During the day time hours I am a nodeJS fullstack engineer for another kind of gaming company that is, surprisingly, far more stable. Casino gaming 😃 The last major project I had was doing a throw back MUD in node. Text I can do.... One of the problems I've always had is art. So the past couple years I've been doing 3d modelling and painting fairly exclusively just to become an artist. I could always code, I just could never have art to play with, which is really vital for being able to move forward on projects. Eh that's it in a nutshell. I've been taking my time and never releasing anything for about 20 some odd years.
  10. First, I'd like to say, I am not an artist. I'm a programmer who does art to get by 😃 One issue I struggle with is textures being seamless between separate "modular" dungeon pieces. This is like walls and such. The problem I'm having is with texture scaling when making my unwraps and using textures for the sub parts of the model. It's very hard to unwrap each modular set piece and then like, stencil in the textures, because they'll never line up; the scale in the uv could be off, etc. I ended up making basically making a small texture atlas because then my texel to unit ratio is consistent and the coordinates are always roughly the same... I tend to model geometry first then try to texture after, maybe I'm doing it the wrong way? At the moment I've kind of gone back to making modular geometry pieces that I will use to compose larger "set" pieces that are groupings of these... however, it's limiting. Not everything comes down to a square. I tend to do a lot of bevels and other geometry embellishments. I also wonder, then, about using different materials, but the same texture. So I have a "set" atlas so all these modular geometry unwraps and scales correctly, but some of it might be wood, or stone, or metal... and I'd want each part to have it's own material. But then, does this cause performance hits having a big-ish texture with multiple material properties? I thought I could get away just doing each piece with its own custom unwrap and stenciled texture; im not too worried about it from a performance perspective -- just a visual one. Because in this case as I said, making stuff "line up" is tricky. Of course, a trade off might be to do "seam hiders," ie, like pillars every segment to cover the few pixels off. ... anyone more experienced with art pipelines comment? Am I on the right track, totally off, etc? My environment art is intended to be pretty elaborate, but considering uv scale, texels per unit, and seams, I'm kind of scratching my head on the best approach here?
  11. catch22

    How to use the PlayAnimation endhook feature [C++]

    I was bored. I wrote something in a few minutes. It's a mockup, I dunno? It works anyhow. I'm using EventEmitter I posted the other night in that other thread. https://gist.github.com/rioki/1290004d7505380f2b1d Or just ignore my ->on and ->emit stuff in the player class. It's just a callback function anyway. main loop: long currentTime; long dt; long lt; while (true) { if (window->Closed() || window->KeyDown(Leadwerks::Key::Escape)) return false; Leadwerks::Time::Update(); currentTime = Leadwerks::Time::GetCurrent(); dt = currentTime - lt; lt = currentTime; controller->update(dt); world->Update(); world->Render(); //dt = Leadwerks::Time::GetCurrent() - dt; context->SetBlendMode(Leadwerks::Blend::Alpha); context->SetColor(1.0, 1.0, 1.0); context->DrawStats(2, 2); context->Sync(false); } return 0; player class update function: // constructor .. this->on(EVENT_ANIMATION_END, function<void (const char*)>([this](const char* sequence) { std::cout << "Animation sequence '" << sequence << "' ended!" << std::endl; })); void update(long dt) { animationFrame += dt / ANIMATION_WALK_SPEED; if (animationFrame > model->GetAnimationLength("walk")) { animationFrame = 0; // this doesnt have to reset to 0 but rather whatever your state system dictates? this->emit(EVENT_ANIMATION_END, "walk"); } if (animationFrame < 0) { animationFrame = 0; } model->SetAnimationFrame(animationFrame, 0.8, "walk"); std::cout << "animationFrame: " << animationFrame << endl; }; EDIT: I guess it should be noted (at least in my model) it's 0 based animation sequences, so GetAnimationLength would return, for example 100 and your frames are 0-99; so offset appropriately. Also, I'm not blending or anything here (it's a hack come on!), so you'd take the remainder from the DT calculation and probably want to mix that into your wrap around to avoid hitching or smooth the interpolation =D
  12. catch22

    GLTF Loader

    You've said crazier things?!
  13. catch22

    How to use the PlayAnimation endhook feature [C++]

    Well, I cannot speak for him of course, but that was 2 years ago and still nothing. It seems people just measure it themselves. I'll be doing this soon myself since animation is my next milestone...... Not a big fan of lua for core stuff like player controlling, so yeah. If I write something of use before you have a solution, i will gladly share it.
  14. catch22

    How to use the PlayAnimation endhook feature [C++]

    Note the comments: Josh says that's only a lua function.
  15. catch22

    GLTF Loader

    Wonder how long till someone YAMLs or BSONs it for file size? JSON is great, I work with it everyday, but it's it's a little heavy around the waist since it's notation/markup is a bit excessive. Being a Ctype struct expression, it moves between languages very easily as well. Now we should ditch lua and go javascript rite? hue