Man, has it been a while. Not that a lot has been happening in my life really. Well, a few things have happened, and putting them down all at once makes them seem kinda intimidating. But mostly I just haven't had anything to write about, and even less time to do so. But today I find myself, quite unexpectedly, with about 30 minutes of time, and just enough desire to blog.
...and now it's 12:30, and I've discovered I have a lot more to write about than I thought. So I think instead of doing one giant check-in post, I'll do a series of posts talking about things in my life, and how I feel about them. Stay tuned!
The Orange Blog
Wednesday, July 22, 2015
Monday, November 3, 2014
Checking In
It's been quite a while since I updated this thing. Not much has changed since my last post, but I did say I'd check in occasionally, to affirm that I continue to exist. Work is still keeping me super busy, though I'm glad to say that I enjoy my job and get along with my coworkers. One reason that I haven't been more active since starting (aside from lack of time) is that my contract has a fairly strict non-compete clause. Unfortunately, the game project I was working on is very likely covered by this clause. That's disheartening, to say the least, but c'est la vie. I can't be too angry with the people handing out my paychecks. I should be safe to work on some other things, so long as those things don't make me money and are thoroughly unrelated to what I do at work. In particular, I've been thinking about getting back to work on the programming language I've been designing. Anyway, that's all I got for now. Back into the shadows I go!
Tuesday, September 23, 2014
Slowing Down
I am starting to realize just how little free time having a job has left me with. I haven't worked on my projects at all this week. I think for now, I'm going to switch from regular updates to occasional updates. Which is to say, I'll update this blog when I have something to write about or show, rather than every Tuesday. Even if I don't have anything, I'll try to at least check in every few weeks.
Tuesday, September 16, 2014
Busy Week
Between the new job and moving, I haven't had any time to work on my project. Unfortunately, that means no post this week, and possibly next week as well.
Tuesday, September 9, 2014
Cutting Corners
Couple of things. First, I've officially started my new job! I've never had to clarify this before, but this blog is strictly for side projects and personal ramblings. I will never make posts about anything I do professionally. While I'm happy and excited to be working again, it does mean I'll have significantly less time to work on side projects. Thus, the already infrequent updates are likely to become even less frequent. I'll also be moving this week, cutting down on my free time further.
Second, I don't think I've ever put out this disclaimer: I did not make the textures currently in use. I took them from the Dokucraft texture pack for Minecraft. The skybox I found with a Google search. These are obviously not the final textures, and I fully intend to make my own some day.
Now to reveal what I was working on last week. I've modified the game to support more block shapes!
The new scheme includes all the old shapes, plus some new ones like like half-blocks and half-slopes, as well as many more complex shapes. This change forced me to rework how textures are applied, which is why everything is dirt rather than grass. I had already planned on switching to decals for grace, but that'll require me to modify some art assets.
Second, I don't think I've ever put out this disclaimer: I did not make the textures currently in use. I took them from the Dokucraft texture pack for Minecraft. The skybox I found with a Google search. These are obviously not the final textures, and I fully intend to make my own some day.
Now to reveal what I was working on last week. I've modified the game to support more block shapes!
![]() |
Before |
![]() |
After |
Tuesday, September 2, 2014
PAX and Life Updates
This week, I went to PAX! It was great fun, and also tremendously exhausting! Before that, I made some more progress on my project, but I'm gonna keep that under wraps until I'm done. Additionally, I received word today that my background check finally went through, and I'll be starting my new job within a week! This also means we'll be able to move into our new place!
I started writing a post with more depth, but didn't like where it was going. Now it's late, and I'm still tired from the convention, so I think I'm just going to let it go until next week.
I started writing a post with more depth, but didn't like where it was going. Now it's late, and I'm still tired from the convention, so I think I'm just going to let it go until next week.
Tuesday, August 26, 2014
Water is Fancier Than You Think
Progress? On my project? It's more likely than you think. As you can probably see from the above picture, I've been working on water. While it may not look that impressive, this actually involved several significant changes. To get to this pretty scene, I had to do the following:
- Deal with having two blocks in the same spot (for water intersecting the shore).
- Add support for transparency.
- Remove internal faces from between world chunks.
- Add support for non-solid blocks (so that the player could walk through the water).
- Add support for animated textures.
Lets cover each of these in detail:
1. Deal with having two blocks in the same spot (for water intersecting the shore).
Allowing each cell to hold two different blocks would double the memory I'm using, so that wasn't a feasible solution. And if I ever needed three in the same spot, I'd be back where I started.
The obvious answer was to use extensions (the same technique I'm using for vegetation and decals). However, I wanted the water to look like one large body, rather than a bunch of cubes. This meant eliminating internal faces. Unfortunately, extensions don't take adjacent cells into consideration during the mesh building phase.
So I introduced a new extension type for blocks. The meshing algorithm was modified to handle these the same way it handles normal blocks.
2. Add support for transparency.
For those unfamiliar with game programming, properly handling transparency is actually quite difficult. To get it looking right, you have to render the faces from back to front. Unfortunately, the most optimal way to render non-transparent things is front to back (and with blending turned off). Thus, the best solution was to create two meshes, one opaque, and one transparent. The opaque meshes are rendered first, front to back. Then blending is turned on, and the transparent faces are rendered back to front.
I also had to modify the meshing algorithm to account for the fact that transparent faces don't hide opaque ones. There are also still some problems that can arise from having multiple layers of water in the same chunk that I have yet to fix.
3. Remove internal faces from between world chunks.
Until I made this change, the meshing algorithm only took into account blocks in the same chunk. Unfortunately, this lead to underwater walls being generated between chunks. I had to modify the algorithm to take neighboring chunks into account. This also meant waiting until all those neighbors were loaded before running the meshing algorithm in the first place.
4. Add support for non-solid blocks (so that the player could walk through the water).
This was relatively easy. I simply added a flag to each material indicating whether it was solid or not (likewise with transparency). This flag could then simply be checked in physics, and non-solid blocks could be ignored.
5. Add support for animated textures.
I spent a long time thinking about ways to accomplish this. The solution I settled on ended up being stupidly simple. I simply built a table of animation info. that corresponded to each texture. This info is passed to the shader, which does some simple math to figure out which texture to draw each frame.
This did force me to start using array textures, but that also got rid of some aliasing, so it was a good move all around.
I also did a few other miscellaneous things, including some minor optimizations and bug fixes. All in all, it was a very productive week!
Labels:
animation,
block,
game,
transparency,
water
Subscribe to:
Posts (Atom)