3 days of Rust and Planning
So I have one more day left in the course and I have to say Rust is pretty great but it does require you to change a lot of the way you think about things and has lead to my brain just not functioning correctly for a few days, I think? I have a hard time shifting back and forth.
As far as complaints about Rust go, I do have a few, though the primary one is the strange way operator overloading is handled. I really can't get my head around it. I feel like maybe C++ spoiled me in the way it is handled there. Even with the convolution of friend functions and r-vals and l-vals it feels like there's less mental steps to go through. It might be something I just have to get used to though I am not sure I will have the opportunity. I really need to focus on a more narrow track so I can start making actual progress.
It's the next day, I have finished the Rust course. I know a few more things I like about Rust. I mean obviously the concurrency and memory safety, the ease of spinning up threads and using mutexes. I like the way that you can just write #[test] over some function and have it be a test... so you can write your test right next to the function while you work on it so it could speed of TDD. Also like the documentation generation from comments written with /// and //! having built in markdown support.
I don't know that I will get much chance to use it going forward based on how much you have to change the way you think in order to use it. I don't suspect many companies will be willing to adopt it for quite some time because of the amount of training and retooling required to do so. I could be wrong, though.
Will I be using it myself for personal projects? I can't say I will... at least not yet. While I like what it's doing I feel like it does make some things quite a bit harder to think of and model, though this will likely get better.
As far as I am concerned I feel like I can get the same jobs done with C or C++, quicker. This is likely due to me having more familiarity and experience with them and I could likely get to the point where I could implement in rust as quick or quicker, but the real issue is I don't see it getting enough adoption to get me much work any time soon... and this is something I have to be very aware of in my current state.
If I were approached with a job where I would primarily work in Rust I would take it, as long as I was a junior and could have someone reviewing my code, helping me get more comfortable and efficient with the language.
For now I think I will stick to what I know, maybe complete that Go course in a few months and maybe come around on it. Who knows, I might learn to like it. But as of now I am just going to work with Python and Godot, with C and C++ where needed and the odd JS for front-end work. (Though I would really like to create some Webassembly frontends, if I get the time)
Day 3. Why? I have been distracted. Very distracted.
I had an internal mental fight with myself over perhaps dropping Unity prematurely. It came down to me thinking about what I could do the most with in the least time and more importantly which one runs on my office laptop. Godot.
Today has been spent primarily setting up project management and having that internal struggle. I was thinking to myself "I shouldn't have given up on Unity so quickly." but as I thought more about giving it more time I realized among other things it runs like shit on my laptop and Godot runs fine. I had 4 instances of Godot running for the MMO project and that was mostly okay.
I've been out of the office for a few months and I am starting to think that's why I am so cloudy of thought and aloof. I have too much stimulus around me in the living room and it's quite cluttered in here. I ended up out here to work with Unity and Unreal. So yeah, I will commit to using Godot for the next 2 prototypes and return to working in the office on weekdays so I can get back to productive.
I've setup a Gitlab server for my projects since Github is starting to get stranger and stranger if you've been paying attention the last few years. Plus I like to have control over my own stuff. I will mirror my open source projects on Github though, so it shouldn't affect anything there.
Gitlab self-hosted is pretty cool. It has a lot built in and a pretty slick interface. I'd recommend it to anyone who does their own server admin and devops. The built in web IDE is pretty nice.
The current focus is planning the prototype. Figuring out the systems and what design patterns will be used, how to model the data best to use the patterns properly... the basics.
Given that I am using Godot, I will be of course using ECS where each component is responsible for managing it's own state, this will be done with state machines. Each entity controls it's own state, with a Singleton in charge of maintaining the Game state (Paused, Walking around, In battle, In conversation, In Shop, etc.).
Communication between entities will be done via the Signal pattern for the most part, unless we're talking to a child of the entity that is integral and we know will always be there (like it's state machine).
Knowing that, of course, I need to design the systems with these patterns in mind. Then I have to implement the bastards. I should maybe take this opportunity to test out writing unit tests in GDscript.
I should be started on coding either Monday or Tuesday depending on how long it takes me to write out the overview of the systems and their projected implementations. I'll also be spending some time on Mantilogs next week. I need to do some work on the forms, I just kinda banged them together and pushed them. They are quite spartain... they are functional but the form... could use some improvement. Baaaaaaaaad joke.
With that I am going to go create the project and wiki, write a quick scaffold of a GDD and make an initial commit. Maybe post again tomorrow, if not Monday.
Cheers.