Sunday, March 5, 2017

Update #11

    Alright, I'm still a little sick, but I feel well enough to write something for this post. I'm not entirely sure "Progress Update" is the right thing to call these posts, so I'm just going to start calling them "Update" since for the time being I'm not actually able to work on the project. I probably shouldn't actually even be allocating the time to make these posts, but it's important to me that I don't forget about this project since I really want to make this game.

Learning to Art:

    My drawings are starting to get somewhat alright, I've still got along way to go before I'm able to make anything fap worthy, but it's getting to the point where I'm seriously considering buying a scanner and sharing them.

Game Ideas:

    Ok, so new section that I'm not entirely sure what to call it, but this is going to be where I talk about things I want to do for my game. For this post I was hoping to delve a little bit into math, but I seem to have misplaced my notes, so we're just going to cover the basic idea. For this post I would like to continue talking about sky boxes, or more specifically that thing hello games promised for No Man's Sky but apparently couldn't figure out how to do, realistic orbiting celestial bodies.

    There are two ways to have realistic orbiting celestial bodies, the first of which is to make it part of the physics simulation like the way universe sandbox did. This will produce accurate results and will even allow bodies to interact with each other and affect one another's orbits, but is very cpu intensive, must be run continuously even when no one is there to see it, and can't handle large skips in time.

    The other way to do it (and the way I intend to) is use mathematical models (I don't remember which ones or I would specifically name them) to predict where an orbiting body will be at any given time, like how Kerbal Space Program dose. How this basically works is if you know the mass of the object being orbited, the mass of the orbiting object, and the initial position and vector of the orbiting object then you can predict where that object should be in it's orbit at any given time. The advantages of this is it requires very little cpu time compared to the physics based method, it only needs to run when it's needed (such as when the player is looking up or the game wants to know what season it is), and it can easily handle large skips in time both forward and back. The only real disadvantage of this is that celestial bodies won't really be able to interact with each other, but that shouldn't really be an issue as I don't intend to place them close enough to one another for them to interact.

Sunday, February 19, 2017

Progress Update #10

I was originally planing to get into some maths for this post, but I'm sick and can't really focus right now, so perhaps next time.

Sunday, February 5, 2017

Progress Update #9

Well, as I have sadly been too busy with things to work on this game since the last update, but I have been at least setting aside time to learn how to art. However just leaving the post at that seems kind of lame, even though no one reads these. So after some thought, I have decided I'm going to talk about some thoughts and ideas that I have for this game as filler. Hopefully the occasional person that accidentally finds this project with think it interesting.

To start off with, I would like to talk about the shape of the world. As I stated in the first post I made, I'm going for a voxel box aesthetic kind of like Minecraft. It's a simple look that is easy to code and simple to art. But unlike Minecraft, I would also like to have a planet that is about the size of earth and is a sphere but voxel box worlds don't really do round. So how do we solve this? Well we can start by connecting the east and west edges of the map, turning it into a cylinder (or more accurately a conveyor belt). This gives us a roundish map that if you travel east or west long enough you'll eventually get back to where you started, but isn't a sphere. The first thing that dose come to mind to make it a sphere is to pinch the ends, but buildings built on the surface will start to look kind of weird as you approach the poles, so we can't do that. The only solution I have been able to think of is actually to just fake it. By that I mean we take the X, Y, and Z position of the player and convert that into Longitude, Altitude, and Latitude and then use that to figure out what angle everything in the sky should be at if you were on a sphere. The problem with this is that the closer you get to the poles, the more the illusion breaks down. At the pole it's self the illusion would produce such a horrid nightmare that I think it might be best to set up an instant kill zone long before the player reaches it. But between the north and south of a particular latitude (which should be further north/south then any player would have reason to travel) it should look quite nice as the position of the sun, moons, and other planets change to reflect your current position.

With that I'm afraid I need to get back to work and will have to wait until the next update for more of my thoughts and ideas.

Sunday, January 22, 2017

Progress Update #8

once again I've had more unexpected things pop up that i need to deal with, so i haven't had much time to work on this and at the moment it looks like there might be a few more of these updates where i won't have much to show.

Code Update:

    I've started working on a memory manager for the game. The reason is that when your dealing with allocation and deallocation of small bits of memory, fragmentation isn't too much of an issue. But if you need large chunks of memory, you could potentially wind up with large chunks of wasted space. I'm hoping to really did into the chunk system soon to begin work on the world it's self, but for that I'm going to need gigabytes of continuous unfragmented ram.

learning to Art Update:

    I've picked up a book on drawing, so hopefully I won't be wondering around blind anymore and it will speed up my learning.

Sunday, January 8, 2017

Progress Update #7

I'm afraid I've been a little busy with other things, so haven't had much time to work on this project the passed few weeks. So Happy New Year to everyone and hopefully I'll be able to make some progress for the next update.

Saturday, December 24, 2016

Progress Update #6

    Merry Christmas everyone! Last post I noticed my view count steadily increasing and asked people to leave a post to let me know they were genuinely interested and boy are the results in! The view count plummeted to zero with the number of posts to match! So I think I can safely conclude that no one gives a fuck about me or my project. However I intend to continue to make these posts to document my progress if nothing else, although that may change at some point in the future.

Code Update:

    I have continued work on the character controller and things are starting to feel pretty good in the movement department, but I'm still trying to figure out how to solve a few of the issues I'm currently facing. I was kind of hoping to be able to get version 0.2.0 out for Christmas but then I realized just being able to run around on a flat map pushing boxes is kind of boring, so I'm going to get some terrain generation in there as well before pushing out the next version.

Learning to Art Update:

    Shading is really quite boring, so I stopped working on that for now. I figure I'll probably pick it up again later when I actually have something to shade. Instead I realized that if my end goal is to be able to draw people, I should probably be learning to draw people. So I found a picture of someone standing in the simplest pose I can find and have been trying to draw her. So far the results aren't great but I am seeing improvement with each attempt.

Sunday, December 11, 2016

Progress Update #5

I'm noticing my view counter for these post is slowly going up, I'm curious if people are actually reading these posts or if the views are all coming from miss clicks and spiders. So if your actually interested in what I'm doing, go ahead and leave a comment.

Code Update:

    So what I have been working on is the character controller, which as the name suggest turns mouse movement and key presses into character movement and action. I've managed to solve a few issues i was having before, but still a lot of work to do on this front, so I'm going to probably be spending a lot of time trying to figure out how to make this work. As I have been working on it I'm also starting to realize I've been thinking about the relationship between entities and their physics shapes all wrong. I've been thinking that entities having 1 shape that can be used to get their position and rotation information and this is fine and dandy when your dealing with test cubes and simple shaped objects, but is going to really bite me in the ass later when I want entities comprised of multiple physics shapes. Now if this was a game that used simple pre-made animations, it wouldn't be an issue as all I would have to keep track of is the entity position, the animation name it's currently playing, and the time when that animation started, from that I could easily reconstruct everything needed. But as that I intend to make extensive use of procedurally generated animations for things like jiggle and ragdoll physics, I need a better way to keep track of that information then I currently have.

Story time:

    Earlier this week I started working on another programing project and for it I needed to work with a part of the Windows API that I've never touched before, so I went looking on MSDN for some example code. After a bit of searching I found a page that said the example code that I needed was part of the Windows SDK. I pulled up the Windows SDK and couldn't find any example code anywhere, so I thought, it's probably just installed without something checked in the installer, I'll just reinstall it and that should fix everything...Windows SDK broke super hard. Except for a few tools, the Windows SDK directory was completely empty. After a few more uninstalls/re-installs, I decided to bite the bullet and try a manual uninstall. I quickly realized that the uninstaller doesn't so much uninstall as just delete a few files and call that good. It left a complete mess everywhere, there must have been at-least one registry entry for every single file in the SDK scattered all about the registry. I gave up trying to delete them all after a few hours and looked for other solutions. Where upon I discovered the SDK has a repair tool hidden away. Running it restored most of the missing files, but I was still missing some of the Windows API headers and libraries as well as all the crt headers and libraries. Now I'm not entirely sure the crt is supposed to be part of the Windows SDK before Windows 10, but I ran a search on my hard drive and the files where no where to be found. After a few hours beating my head against the wall trying to figure things out, I finally turned to others for suggestions where upon someone suggested using a virtual machine. I installed the SDK on a virtual machine and got all the Windows API files I was missing, but no crt files. I did a lot of googling in hopes of finding a solution. Most sources I found said I was just in the SDK while some others suggested that it might actually be part of Visual Studio it's self, I checked visual studio's install folder and no crt files anywhere. I also know that I was able to compile and run programs just fine before messing with the SDK, so it must have been part of the SDK. At one point I got frustrated and realized I has just been yelling at bing for a solid 10 minutes. The only lead I could find on a source of crt header and library files was Microsoft's new ucrt (yet another version of crt that Microsoft is trying to force on us because that worked so well all the other times they did it), so fine, white flag raised, how do i get it? It's part of the Windows 10 SDK. So i grab the Windows 10 SDK and install the damn thing. It gets to about 97% done and then stops and rolls back the install. The resulting novel that was the install log report contained a typical cryptic Microsoft error message that took me an hour or so to find the meaning of. The error in a nut shell was basically "your not running Windows 10", which it seems like a real dick move to do when the web installer (I'll discuss my disgust for web installers some other time) is at 97%. This left me in a bit of a pickle, because I needed those files, but I quickly thought of a solution. While it was installing I changed the permissions of it's root folder to block everyone from being able to delete files or folders so that it couldn't actually remove anything when it started rolling back. This worked perfectly and gave me the files I so desperately needed. I took the files, shoved them in the appropriate locations and then compiled my program, SUCCESS!!! The program compiled with no problems and so I ran it. It died with a missing the ucrtbased.dll error message, this confused me because I always statically link the crt as a way to doge the weirdness caused by Microsoft continuously creating new versions. so to see if I was accidentally using the dynamically linked crt libraries, I removed them. I then recompiled my program and again it compiled just fine. When I ran it again it complained about missing the ucrtbased.dll. Really puzzled at this point, I removed the static crt libraries to see what would happen when I compiled it. The compiler complained about missing the static libraries when I tried to compile it again. My only conclusion is that for some reason the statically linked libraries still require the dll, which is something I've never encountered before. But after i don't even want to know how much time, I finally got it working, so that's enough for now, I'll deal with it another day.

Learning to Art Update:

    For arting it up, I've been working on shading. I'm not entirely sure how useful shading will be exactly, but I'm sure it's a good skill to have none the less. For it I found out about and made my first tortillon (no idea how to pronounce it) and it's really good, possibly even too good. The thing is so good at shading that I kind of feel like using it now at my skill level, it would become more of a crunch then a tool, so I have sat it aside and have been trying learn how to shade without it. I do however seem to have come full circle and am once again trying to learn to draw strait evenly spaced parallel lines.