Files
joshuafhiggins.github.io/index.json
2022-08-23 15:14:30 -04:00

1 line
14 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
[{"categories":["butterengine"],"content":"I feel like I wrote this code before...","date":"2021-08-08","objectID":"/butter-dejavu/","tags":["Butter Engine","Update","Programming"],"title":"Getting Deja Vu Right Now","uri":"/butter-dejavu/"},{"categories":["butterengine"],"content":"I feel like I wrote this code before… Up until last week, I have been working on the base rendering, textures, and 3D projection which all felt vaguely familiar (cough cough..TF2 OpenGL \u0026 Java..cough cough). As well as a basis for mod loading. But for this week, I didnt do much (less than I wanted to) but I did do research into physics, cameras, model loading, and entity component systems/ECS. ","date":"2021-08-08","objectID":"/butter-dejavu/:0:0","tags":["Butter Engine","Update","Programming"],"title":"Getting Deja Vu Right Now","uri":"/butter-dejavu/"},{"categories":["butterengine"],"content":"Base Rendering Im really happy with the way this got done. The mesh class makes a bunch of BufferObjects that hold the OpenGL pointers and have base functions for cleanup. This allows very easy derivatives of the Mesh class for whatever they needed. public class FooMesh extends Mesh { //... @Override public void Create() { //Make our VAO VAO = new BufferObject.VAO(); VAO.Bind(); //Array of non specific BufferObjects bufferObjects[0] = new BufferObject.VBO(vertices, 0); //Static classes that inherit BufferObject. //These are binded and attached with no intervention bufferObjects[1] = new BufferObject.CBO(vertices, 1); bufferObjects[2] = new BufferObject.TBO(vertices, 2); IBO = new BufferObject.IBO(indices); VAO.Unbind(); } //... //Rendering, method calls are pretty self explanatory. //Inputs aren't final. //I'm not happy with the Entity being passed in for rendering when Entity's hold meshes public void Render(Entity entity, Camera camera) { VAO.Bind(); enableVertexAttrib(); IBO.Bind(); material.Bind(); shader.Bind(); SetUniforms(entity, camera); DrawElements(); shader.Unbind(); material.Unbind(); IBO.Unbind(); disableVertexAttrib(); VAO.Unbind(); } } Derivatives were made when going through the tutorials but were ultimately removed for the approach of having a better base because having a different Mesh for color and then for texture and then color, but color is never used… It was just a headache for general refactoring and keeping them up to date. A lot of buffer stuff was taken from TF2 in Java \u0026 OpenGL. ","date":"2021-08-08","objectID":"/butter-dejavu/:1:0","tags":["Butter Engine","Update","Programming"],"title":"Getting Deja Vu Right Now","uri":"/butter-dejavu/"},{"categories":["butterengine"],"content":"Textures Right now, only Albedo is being used and the Material class is nothing but a holder for SlickUtil Textures. I want the Material class to hold all of the textures without order and you leave it to modders to make their shaders and textures line up. Im only using SlickUtil right now because of the ability to load Textures from class resources rather than the file path. But Im ultimately going to replace it with my one Texture class because of the [model loader](#Model Loading) not using class resources. Supposedly we can load from resources, and call the function to load model from memory or textures from memory with STB, but I have no idea what the size of the buffers should be. Smiley is rendering but streched!\r","date":"2021-08-08","objectID":"/butter-dejavu/:2:0","tags":["Butter Engine","Update","Programming"],"title":"Getting Deja Vu Right Now","uri":"/butter-dejavu/"},{"categories":["butterengine"],"content":"3D Projection JOML is being used for math and matrix loading and what not but this may change (see the physics section). Once I did this, it kinda made me think about what next. I thought I should focus on an ECS system for holding positions, rotations, etc. which right now is the Entity class that should be derived from but will change (see the ECS section). This was kind of the thing that spun off into the unproductive week. Although this was not easy at all because the shader was originally going from different matrices in the wrong order. //... uniform mat4 model; uniform mat4 view; uniform mat4 projection; void main() { //How it should be: //gl_Position = vec4(position, 1.0) * model * view * projection; gl_Position = projection * view * model * vec4(position, 1.0); //... } But here it is now working just right: Smiley looking better now\r","date":"2021-08-08","objectID":"/butter-dejavu/:3:0","tags":["Butter Engine","Update","Programming"],"title":"Getting Deja Vu Right Now","uri":"/butter-dejavu/"},{"categories":["butterengine"],"content":"Mod Loading The Main class no longer holds any GLFW and is instead held in the Window class, similar to the Mesh class and BufferObjects. Mods right now hold a lot of control over whats happening. This is still subject to change because while this was going to be a render engine, it quickly became this bigger thing and the order of events right now is: Rendering (v0.1) -\u003e ECS/Physics (v0.2) -\u003e Audio/Sound (v0.3) -\u003e Events/Mod Loading (v0.4). So we arent even done with v0.1 and shouldnt worry about the specifics of this just yet. I just want to emphasize that this is a render engine before a game engine, no matter how much I want the latter. ","date":"2021-08-08","objectID":"/butter-dejavu/:4:0","tags":["Butter Engine","Update","Programming"],"title":"Getting Deja Vu Right Now","uri":"/butter-dejavu/"},{"categories":["butterengine"],"content":"Cameras Absolute pain, never again. Jokes aside I just need to do more research because right now it looks like this: Should just leave it static right now with no movement… ","date":"2021-08-08","objectID":"/butter-dejavu/:5:0","tags":["Butter Engine","Update","Programming"],"title":"Getting Deja Vu Right Now","uri":"/butter-dejavu/"},{"categories":["butterengine"],"content":"Physics Well, more of the research of it for Java. The best solution would be to use JBullet, an outdated port of Bullet. Its the easiest to set up and using LibGDX port while similar, has no real prebuilt support for shapes and has to be done manually. LWJGL has a binding, but with a client-server architecture which is just terrible for doing anything simple. The only problem is, it uses javax.vecmath while right now Im using JOML. Managing both is a pain and javax.vecmath has Transform objects, similar to Unity, so Im gonna need to refractor a lot to use vecmath. ","date":"2021-08-08","objectID":"/butter-dejavu/:6:0","tags":["Butter Engine","Update","Programming"],"title":"Getting Deja Vu Right Now","uri":"/butter-dejavu/"},{"categories":["butterengine"],"content":"ECS For ECS Im gonna go with Ashley, a LibGDX solution. It seems like the only one used for games but not hard to build from scratch either, as a concept. Of course, Im not going to dump a bunch of hours into custom-made when this is good enough. Although I dont know much in this and it is mainly up to developers on how they should organize this and this may change. ","date":"2021-08-08","objectID":"/butter-dejavu/:7:0","tags":["Butter Engine","Update","Programming"],"title":"Getting Deja Vu Right Now","uri":"/butter-dejavu/"},{"categories":["butterengine"],"content":"Model Loading This is in no way finished as it is not grabbing all possible data right now, which is kind of driving me nuts but Im gonna try to ignore it for now until the data being grabbed, like material data, can be used in engine. Here it is so far, using the smiley texture and the dragon model: Model loaded!\r","date":"2021-08-08","objectID":"/butter-dejavu/:8:0","tags":["Butter Engine","Update","Programming"],"title":"Getting Deja Vu Right Now","uri":"/butter-dejavu/"},{"categories":["general"],"content":"General things I need to do with the site","date":"2021-08-08","objectID":"/general-catchingup/","tags":["Website","General"],"title":"Catching Up \u0026 Centralizing","uri":"/general-catchingup/"},{"categories":["general"],"content":"General things I need to do with the site ","date":"2021-08-08","objectID":"/general-catchingup/:0:0","tags":["Website","General"],"title":"Catching Up \u0026 Centralizing","uri":"/general-catchingup/"},{"categories":["general"],"content":"Catching Up Theres a lot that hasnt been covered yet on other projects that would just take way too long to write pages and posts for those pages on projects that were canceled or have seen very little progress. I plan on updating this site every week with what I have been up to. ","date":"2021-08-08","objectID":"/general-catchingup/:1:0","tags":["Website","General"],"title":"Catching Up \u0026 Centralizing","uri":"/general-catchingup/"},{"categories":["general"],"content":"Left Click Counter Mod The only thing I would change or work on with this is the system detecting left clicks. Which looking back, is not at all accurate. Although this would require me to change the updating system and as explained in the centralizing section, this probably wont happen. ","date":"2021-08-08","objectID":"/general-catchingup/:1:1","tags":["Website","General"],"title":"Catching Up \u0026 Centralizing","uri":"/general-catchingup/"},{"categories":["general"],"content":"Game Time Mod I think this would be more suited as a general-purpose desktop app that works similar to the way Steam keeps track of hours. It would also be a general-purpose, statistic-keeping app with a name change. ","date":"2021-08-08","objectID":"/general-catchingup/:1:2","tags":["Website","General"],"title":"Catching Up \u0026 Centralizing","uri":"/general-catchingup/"},{"categories":["general"],"content":"Sparticus Yeah ummm… got a little too ambitious with it. At the time of the announcement, I knew very little about Unity, and because of how Unity works at a very high level, you either use tutorials or sit confused about it, doing nothing. Aside from that, texturing alone took forever and got me burnt out. The networking, which was promising at first, turned into a system that I was making changes to with no idea if anything was working. Essentially a programmers worst nightmare, being stuck in a pandamonium of whether to continue or not with something that would be a pain to debug later. Im not completely lost on the idea. Sonic Ethers ray tracer for Java Edition is still in early development and doesnt use any of the fancy RTX/DLSS features or the AMD counterparts. Continuum Shaders have similar goals, like redoing the graphics engine with the latest OpenGL and then going to Vulkan later. They also plan on using the new ray tracing and upscaling features too! Google Search Console for the website clearly shows people have an interest in high fidelity, PVP clients. ","date":"2021-08-08","objectID":"/general-catchingup/:1:3","tags":["Website","General"],"title":"Catching Up \u0026 Centralizing","uri":"/general-catchingup/"},{"categories":["general"],"content":"Underground Duels This project started sensibly as a way to play a deathmatch FPS on school Chromebooks and learn how to use Mirror Networking at the same time. One small problem though, FPS games are very mice reliant. The alternative would be to have keys on the keyboard function similar to joysticks. It also always bugged me that the only way people talked about networking movement in Mirror was through always trusting the client. This bugged me a lot. Then I remembered of The Ship. A fun, murdering delight with the remastered (Remasted) made in Unity! But no progress was made here either as its extremely hard to decompile and C# out of Unity 2015 due to so many issues with version compatibility that its not worth the hassle for anyone to do. The remastered version is broken now as no localhost connections will work despite whatever configuration. I sent an email to their support team on the issue and offered my help to fix it, but I havent gotten a response. ","date":"2021-08-08","objectID":"/general-catchingup/:1:4","tags":["Website","General"],"title":"Catching Up \u0026 Centralizing","uri":"/general-catchingup/"},{"categories":["general"],"content":"TF2 OpenGL \u0026 Java Postponed until Butter Engine is “done” read here on my current work with Butter Engine for more info. I followed LearnOpenGL.coms tutorial to get started on this. This was kind of my deja vu when working on Butter Engine. ","date":"2021-08-08","objectID":"/general-catchingup/:1:5","tags":["Website","General"],"title":"Catching Up \u0026 Centralizing","uri":"/general-catchingup/"},{"categories":["general"],"content":"Weeb Detector Although just a one-off thing, I may add more prank features or make it Linux/MacOS compatible. It did help me get more familiar with networking in Java. ","date":"2021-08-08","objectID":"/general-catchingup/:1:6","tags":["Website","General"],"title":"Catching Up \u0026 Centralizing","uri":"/general-catchingup/"},{"categories":["general"],"content":"Centralizing I would like to merge the Sparticus site into here and update Left Click Counter mod to use this site for updating and whatnot, but seems very easy to over-engineer and mess up the update process. So Im going to leave it like it is for now unless I get bored and run out of projects. Im also working on adding a page on here for every project. So when Im old and decrepit, Ill update my first ever Minecraft mod. ","date":"2021-08-08","objectID":"/general-catchingup/:2:0","tags":["Website","General"],"title":"Catching Up \u0026 Centralizing","uri":"/general-catchingup/"},{"categories":null,"content":"About","date":"2019-08-02","objectID":"/about/","tags":null,"title":"About","uri":"/about/"},{"categories":null,"content":"\rA banner I made\rThis site is the best place to catch up on my projects and to get the downloads for my projects when they come out. I work on various things like game development to modding Minecraft. Any project will have its own subdomain and page. If you want to talk to me personally about something, heres my email. ","date":"2019-08-02","objectID":"/about/:0:0","tags":null,"title":"About","uri":"/about/"}]