As I said in my last few posts I worked with CreateJS for a while and was able to make a little progress here and there. Although I’ve seen some really fantastic pixel art games, I’m just not a pixel art guy. So while I could create a 2d game with graphics that look like they were made by an eight year old, ultimately that’s just not what I want. So I’ve decided to change directions once again, and it’s back to THREE.js.
This time around I’m doing things a bit different. First, the story I am developing is a simpler and aimed more towards adult humor. Nothing raunchy, just references to alcohol and some dirty jokes. Second, I’m sticking to a specified schedule for development. I have a certain amount of time each day devoted to specific tasks. Monday through Friday is artwork and coding. Saturday is marketing and social media. Sunday is planning and administration. This means I’ll be posting here every Saturday and eventually will move into posting on Twitter, Instagram, etc. I’ve only been doing this for a week at this point and I’m already quite pleased with the progress I’ve made. Since the amount of time I want to spend every day on this project is specified in the schedule it’s a bit like punching into and out of a job. I sit down, I work on whatever the task is for that day, and then I quit. This both forces me to do something every day and prevents me from going on binges where I spend hours and hours every day for several days in a row, then get burned out on the whole thing. Hopefully this will continue to be an effective way to develop the game.
Speaking of the game, I don’t want to say much in terms of details right now but it’s a 3d single player RPG set on a small island. Here’s a very, very early art preview of the harbor and some bridges:
As I said, I’m making decent progress and really hope to be able to keep moving ahead at a relatively steady pace this time around, so stay tuned.
I’ve made a little progress tonight. I now have a very basic scene of a character walking around. He is animated, although animations aren’t implemented for all 4 directions, so if you’re moving at all it show a “walking left” animation, and when you stop the character idles looking south, regardless of what direction you were walking when you stopped. It’s very rough, but it’s a start. I have created a very basic map of Alliston using Tiled, and the game shows multiple layers with one being dedicated for collisions. Collisions work, although the way they work right now is rough and disorganized. I’m still enjoying CreateJS. I’ve been reminded once again that I’m no artist. I’ll spend some time in the near future watching and studying some Youtube videos on creating pixel art. Hopefully I can get to a point where I can create decent looking placeholder assets, and who knows? Maybe one day I’ll have a fun game that people are interested in and I can hire an actual artist to recreate all the sprites and tiles. For now, I’m just happy with a goofy little guy wandering around on screen, not being able to walk right through the bushes.
It’s been several months since I posted anything here and just as long since I did any real game development work, but I’m back. I haven’t been completely idle during all this time. I’ve continued playing with different game engines and experimenting with small projects. The core problem is that I just can’t find something I really like.
For going on 15 years now I’ve wanted to write a game that was playable in a browser for free. I’ve thought about different ways to monetize such a game but honestly, that’s secondary at this point. I just want to finally make something. I don’t want to use a platform like Steam because I don’t want to be tied to producing a completely finished product before releasing it. I want to create a game in chapters and release them over time, then have the ability to go back and rebalance previous content on the fly. Also, I don’t want players to need a client (or even an account) to play my game.
As I said, I’ve looked at numerous libraries and engines. Phaser frustrates me to no end. MelonJS is hard to follow. Godot is awesome but I don’t like the way games get exported. GDevelop has the same issue. Maybe I’m just picky or lazy because I don’t want to spend the effort to actually learn the tools that are available, but in any case I just can’t get motivated to use any of them. There are only 2 libraries I’ve ever really liked. First is Three. Unfortunately, that’s obviously a 3d library and at this point doing anything in 3d is just outside of the scope of what I’m practically capable of doing. The other is CreateJS. I’ve known about CreateJS for years and I appreciate that it is simple and intuitive. It doesn’t hide too much from me or try to do too much for me. That has good and bad effects. I can write some code using it and can really tell what is happening, but then it obviously doesn’t have many features of a “game engine.” Still, it’s what I’ve decided to use because I have been able to create some of the most very basic features of a game in just a few days using CreateJS whereas I spent weeks just trying to understand the interface of Godot, or how to do simple things with Phaser or MelonJS. One big downside of CreateJS is that it isn’t actively developed any more. I haven’t found any issues with that up to this point, and it’s open-source so I can always change it myself if necessary.
So that’s the plan for now. I’m working on a simple, small 2d CRPG using CreateJS as the basis for a custom engine. I’ll post more about the game’s story, and possibly even a very small demo of where I’m headed within a few days. 2020 was a garbage fire and I wrote it off completely, but I’m trying to be positive for 2021 and one of my big goals is to finally publish a finished game this year, so stay tuned.
It’s been over a year since I posted here and I had basically given up on writing games, at least in the format I’ve always wanted to use. But I’ve picked back up here recently and made some really good progress really quickly, so maybe the 100th time is the charm, yeah? In any case, I’m working on a new (old) game and plan to post about it here soon.
I’m spending time here and there working on Codex Magnus but I’m honestly struggling a little. One issue is that I’ve started playing DDO again and that’s a major waste of time (of which I don’t have much) but more than that I am having trouble deciding how to move forward. There’s not much to the game as it is so you would think that picking a feature to add would be simple, but for some reason it’s not. It’s like everything that’s left to do is so big that I’m having a difficult time figuring out how to break each piece into manageable chunks. Here is a partial list of things that are left to implement:
State management system
Dynamically loading/unloading map chunks
Map ports (for interior locations or moving from one major area to another)
Lots and lots and lots of art
I’m sure there are even more things I’ve left off this list but that’s plenty. When I look at an item like “Battle system” it’s difficult to imagine how to create a very first step, much less a finished product. Plus I’m still fighting with Phaser a pretty good bit. I still believe it’s just my lack of experience with real software development but looking through the examples for Phaser 3 and going through the documentation can feel like falling into a black hole. Specifically, I’m trying to figure out the plugin system. The Phaser documentation says it’s really powerful and useful, but so far it’s been mostly a headache for me. I’ll keep plugging away, but it’s frustrating how slow the process is.
I have a new version ready to go but have been lazy about releasing it. I’ll really try to do that this weekend, and maybe doing so will get my motivation back to where it needs to be.
As I said a few weeks ago I have decided that my original plan was just a bit too ambitious. I still very much want to create a browser-based role playing game, but I have decided to go with a 2d game that will hopefully be more manageable for a single developer. I’ve gone back and forth a number of times but I’m writing it here so that I will stop waffling and start coding: the game will utilize Phaser 3. There, I’ve said it so now I’m committed. At this point I honestly don’t like Phaser all that much. It does some cool stuff, but the documentation is a bit of a mess since there was a relatively recent major version change from 2 to 3, but it’s actively maintained and will clearly do everything I want it to do, I just have to figure out how to make it work. I feel a little bit like I’m jumping out of the frying pan and into the fire because I became frustrated with the 3d game due to my constant fighting with the pipeline I was using, and I’m afraid that Phaser may end up presenting many of the same challenges, but hopefully it will start to make sense once I’ve committed to using it and have spent a significant amount of time with it.
I will get into the plot of the game in a future post but the core story is about a young man who gets caught up in a world of danger because of his father’s involvement with a mysterious, powerful book called Codex Magnus. The story will be mostly linear and will the game will feel very much like the older JRPGs like Final Fantasy II/IV and Secret of Mana.
In an attempt to familiarize myself with Phaser I plan to write at least a few tutorials on it and post them here. Hopefully this will force me to really examine the documentation and understand it so that the tutorials will be useful and development of the game will be easier.
This is an exciting time and hopefully things will move fast, so stay tuned.
After much consideration I’ve decided that a 3d game was just too ambitious for now. I still believe it is totally possible to make a game the way I was trying to do it, just not with the abilities and resources that I have to devote to the project right now. Instead, I have decided to create a 2d game that will act as a precursor to the 3d game that I eventually would like to build. I’m going to keep the details light for a little while as I sort out exactly what this new game will look like, but I’m thinking very much along the lines of the older Final Fantasy games. That is, a party-based single player game with a largely linear storyline and tile based graphics. I’ve been doing some prototyping and so far it’s predictably much, much simpler to work in 2 dimensions than 3, so things are progressing quickly. I will probably have to eventually get some outside help on the pixel art because I’m just not much of a 2d artist, but there’s time to figure that out later.
I’m going to give myself until January 31 to get my ideas completely worked out in my head, then on February 1 I’ll post some concrete details here about the story, the technologies I’m using, and hopefully a timeline of when a playable product will be available.
Penrith was feeling a little bare. I have some friendly trees, a few buildings, even some random fences and water, but the ground was still pretty bare. When walking around it was a little tough to tell if you were even moving because the trees might be far off and since there are places where there is little variation in the color of the ground, it was sometimes fairly unsatisfying. So I created tools to add grass to my scenes. There’s only one type of grass at the moment, and the whole process is Super Unoptimized™ but it already looks 10,000% better.
I also turned on shadows for the screenshot above, so that helps. The tool allows you to basically paint on grass, and it works surprisingly well. Eventually I’ll need to add in multiple type of grass but for now I’m happy with it and will probably move on to something else.
I had a chance over the Thanksgiving holiday to sit down with my brother and talk about the game. There are, obviously, a virtually endless number possibilities when creating a game and picking a coherent direction can be tough. Talking it over with him really helped and we decided on a slightly new direction for the game. Since I started on this incarnation of the project I have been thinking of Lyridia as a multiplayer-focused game. I was doing this primarily because I thought that I would end up with a game that other people wanted to play. While this is an important goal, in order to keep working on this in my spare time I really think I need to make a game that I want to play. Hopefully it will also be a game that other people want to play, otherwise what’s the point? But I think it’s reasonable to assume that if I like it, at least some other people will too.
So here are the highlights of the new design for Chronicles of Tright: Lyridia.
The core of the game is a single-player experience
There will be a primary story that takes players all the way through the game with side quests that are not necessary but will enhance the experience.
Multiplayer features will be added later
Extra content (like instances and raids) will be available for those that enjoy that type of play, but will not be necessary to play or finish the game. Public areas, chat, an auction system, and other features are also planned.
The story will require you to make decisions that affect the rest of the game. This means there will be multiple versions of the same core story and multiple ways to finish the game. A reincarnation system will allow players to play the game over and over, making different choices along the way each time.
One big challenge is going to be writing a story that is complete and yet can be extended later if needed. Typically in an MMORPG if you want to add more story, or increase the level cap, you just create a new area and create a story for it. For this game, increasing the level cap or adding more area to the game means I have to modify the whole story to include the new content. I can still add side quest content without messing up the core story, but I don’t think it would work to add content for players at level 60 if the game’s main story ends for players at level 50.
Obviously this is still a very big challenge and will require lots and lots of planning to avoid having to totally redo things later, but I’m excited to have a specific path to follow, and hopefully that means progress will come a bit more quickly.
I’ve missed my December 1 deadline for a demo version of the game, but that’s due to the redesign. I’ll have to see just how much time it takes to fully flesh out the story, but hopefully January 1 is a reasonable time to have something playable up and running. We’ll see.
Math is just hard. I’m an educated person. I’ve never been afraid of math. But sometimes it’s just hard. Especially when dealing with 3d graphics. I fully admit that there things going on in the background of the game that I don’t understand. THREE.js does a great job of abstracting away much of the dirty work, but sometimes things come up that have to be dealt with at a low level and that can get downright frustrating.
Here’s what I’m talking about. I have been working on getting Penrith to the point that I can release a demo-type version of the game. That means adding objects to the world, modifying the terrain to be somewhat interesting, and testing as much as I can along the way. This was all going pretty well until two weird things cropped up. First, my player character started moving *very* slowly. This was confusing because the movement at each frame is based on the game’s framerate so that the speed at which the character moves should be framerate independent. I noticed it especially on my faster development machine. It turns out (I believe) that THREE.js caps the display frame rate to 60 frames/second, but this cap is not reflected by the Clock object. So if the game is running fast enough that it is looping through my main loop at, say, 100 times/second, then the delta on the clock for each loop is going to register 0.01. But if the renderer is capped at 60 frames/second, then at each frame the character is moving 1/100 of the distance he should move in a full second, but only actually doing that 60 times/second, so he movement speed is dropped to 60%. The bizarre thing is that the faster a machine is, the more noticeable the drop. If a computer was capable of looping 600 times/second, the character would at 10% of the desired speed. On the flip side, any machine not capable of looping more than 60 times/second will never see this problem. It was simple enough to just test if the delta time was less than 1/60 and, if so, set it to 1/60, but it was still frustrating to find.
Now, the more complicated problem. My collision detection system is still a bit of a black box to me so I’m thrilled when it works and slightly befuddled when it doesn’t. To make a long story short, I had to apply the world matrix of the parent of each collider object to the points of the triangles the collision system is testing against. Without this tranform the colliders were not rotating and positioning correctly over the rendered objects and I was seeing strange behavior. Again, it only took three lines of code to fix, but required several hours of testing to find the problem nonetheless.
In any case, math is hard and I’m still moving forward. I hope to have a version of the game up and running so that multiple players can simply walk around Penrith by December 1st. I think this is a reasonable goal given how close I am to that point right now.