Tuesday, November 26, 2013

Playing with Blocks

To be honest, I mostly just played Skyrim this week. And I regret nothing!

How do I say this? Basically, I wanted to make Minecraft before Minecraft was a thing. Or, more accurately, I wanted to make a game like Dwarf Fortress that was played from a first-person perspective. It annoys me now that making such a game would immediately be taken as a Minecraft knock off, when it'd really be a Dwarf Fort knock off. Truthfully, the Terraforming game is actually this same idea, but with a different theme.

I started on such a project during my senior year of college. This is as far as I got before schoolwork and prepping for graduation started monopolizing my time.


What I learned from the experience is that Minecraft is much more technologically impressive than one might think. My project ran at about 15-30 frames per second, where a comparable Minecraft world easily did 60 on the same computer.

Recently I've been thinking of starting up the project again and working on it. For now, I want to stick with a fantasy theme, rather than working on the Terraforming game. The reason for this is that I have a much clearer idea of how I'd want to carry out the design in a fantasy setting. Fortunately, most of the work should carry over to a game set on Mars.

Before I left the project, I had only accounted for square blocks. In an effort to make things look a little less blocky than Minecraft, I'm going to include other block types. These are the three basic shapes. Each of these can be rotated and scaled to produce many different shape types. Additionally, the shapes can be inverted (replacing empty space with filled space, and filled space with empty space) to produce more even more shapes.
Hopefully, by next week, I'll have something more to show. However, given that both Thanksgiving and my Anniversary are coming up, I'm not anticipating getting a lot done.

Tuesday, November 19, 2013

Words, Words, Words

Salutations! So I bounced back a forth between a few things this week. I did a little more work implementing the programming language I designed. Bittersweetly, I encountered a few small problems I hadn't foreseen. While this was frustrating, it was also nice to have them called to my intention.

I also worked some more on the math library (see this post for relevant links). At one point, I modified the game to start using it, so now the game's kinda stuck until I either finish the math library or at least get it working well enough to function. My choice to include concepts from geometric algebra is making it difficult to complete. It's hard to find good reading material on the subject, and often even harder to wade through it. I love the subject, and I've enjoyed learning about it, but it can be a little overwhelming at times.

When I started the original library (years ago before I'd even heard of geometric algebra), I used templates to implement things (including some fancy recursion and inlining to avoid unnecessary loops). I continued that way for a while, but it quickly became more trouble than it's worth. So instead, I wrote a program to generate the code for me.

Another one of my interests, not mentioned till now, is language. Specifically, constructing languages. Years back, I started work on a conlang (short for constructed language). It went through many revisions, but I eventually stopped working on it. It's been gathering dust since. Fast forward to now, when I decide to drudge it up and start working on it again! The thing I always had the most trouble with was actually making up words. You might be thinking, "if you weren't making up words, then what were you doing?". Consider that making an interesting language (i.e. not just replacing English words with new ones) involves phonology, morphology, grammar, etymology, and a whole slew of other considerations.

For anyone who might be interested, this site has lots of good resources on language making. For breaking away from English pronunciation, you might want to look into the international phonetic alphabet. This site has interactive charts, complete with sounds. I recently learned about the Swadesh list. A short list of basic meanings. It's been very helpful, and has given me a good starting point for creating words. Here are some similar lists one can use.

Well, that's all I got for right now. See you next week!

Tuesday, November 12, 2013

Turning Things Around

I've been thinking a lot about what I'm doing with my life right now. It seems like my whole life (or at least my whole 'adult' life) I've wanted time to work on my own things, without being interrupted by school or work. When I decided to take a year away from work that was originally the intent; just to give myself time to do whatever I wanted. For various reasons I stewed on that decision for a long time. I didn't actually act on it until half a year after I'd decided to do it. During that time I had the idea that I could make games to support myself and continue not working a normal job. And I could do that, I still might, but that's not why I wanted to do this.

Since I moved I haven't really been happy. I got rid of work obligations only to build up artificial obligations around myself. It's been hurting my personal life and my relationship. Thankfully, I think I've started to turn that negativity around. So I'm going to get back to the real reason I'm here. If I happen to end up making something that makes me money, then that'll be awesome, but if not that's okay too.

I'm going to keep updating this blog, but from now on it'll cover whatever I happen to work on. You might see updates regarding the game (or other games!). After all, it's still something I want to work on. I just don't want to dedicate myself to it exclusively.

----------------

Now for part two of this post. I'll talk a little about the non-game things I've been doing. While I was at my job, I spent some of my spare time designing a programming language. I may eventually go into more detail about it, but for now I will sum it up by saying it's roughly halfway between Lisp and C++. Working with Regular Expressions in the past two weeks got me interesting in getting back to that. After a year or so of design considerations, I finally did some actual work on it. I used Bison and Flex to make a parser for it. A friend of mine suggested using LLVM to compile it. For those unfamiliar, LLVM allows you to write low level code that can then be optimized and converted into machine code for various platforms, rather than having to create each implementation yourself.

I did actually work on the game a little too. I started working on a 3D model of the basic robot in blender. If I ever get around to writing a PLY parser, I'll import the finished product into the game.

Tuesday, November 5, 2013

Back to Regular Expressions

So way back when I wrote this post, I mentioned I was working on a regular expression parser. I put that on the back burner for a while, but decided to revisit it this last week. I based my implementation on this article. I felt pretty pleased with myself once I got it working, though I'm still working on submatch tracking. Once that's done, I'll be able to use it to parse text based files like OBJ and PLY.

I feel like I should address why I'm not using any 3rd party engines or libraries. It's not exactly a wise choice for a game developer, especially for an indie. I don't really have a good reason beyond that I don't want to. I want to use this time as much for learning as for game development, and I enjoy tackling these sorts of problems. I like doing things my own way, and I get a certain kind of foolish pride out of knowing that all the code was written by me. Good choice or not, I'm going to stick to that.