amaaazing job, really enjoy the art style! But im too getting the blue screen of death
Oh no! ??? I really have no idea what’s causing this. Do you know if your graphics card supports frame buffers? (If not I’m surprised it’s not just crashing). It would be stellar if you could run the game with the console and let me know what the console output is ;D That, or add me on skype (gamecreator10000) and we’ll try and get it sorted out!
Hey purenickery! I’m happy to see that the development for Questica is going on well
I went to have a look at your website, too! And noticed a few things going wrong there — you’re not providing anything more to test, so I’m giving feedback on what you have right now, heheheh ;D
-In the forum part, I believe there is a typo in “Last Editted [day] [month] [date], [year]”, should it not be “Edited”?
-The “Questica” logo looks good but the letters are nearly the same colour than the background (I reckon it’s light-grey-ish or maybe very light-blu-ish) so maybe you should take a look and perhaps change the colour of either element (I’d go with the logo since the background looks very good that way) :point:
J0
Hey J0! Thanks for the feedback on the website! We’ve had a new logo for a while I just haven’t gotten around to putting it up on the website yet :-X
Sorry about how slow it’s coming along, college is turning out to be pretty time consuming :cranky:
For a long time, one of the most important things to us in this game has been Mod Support. Since this is a pixel art game with pretty simply structured content, it would be rather silly not to allow players to easily extend the game with their own custom content. We want to have this system completely integrated with the game while maintaining blazing fast loading speeds (well, as fast as java can get). I’ve been working on some pretty cool features over the last couple days dealing with the mod support so I figured I’d go ahead and share what’s been going on!
Here are my basic requirements for the mod support for the game:
- A player can have as many mods loaded at a time as they want, without conflicts
- A mod can add new items, scrolls, and objects to the game, or overwrite existing ones
- A player can add and remove mods to an existing save game
- A mod creator can update their mod, and no existing save games with that mod will become corrupted or get new conflicts
In order to successfully accomplish this I need to trade off some of the conveniences of static object IDs. Each save game will have to store it’s own list of IDs for all of the objects, which will increase the size of each save game, but will allow for much more flexibility with modding and updating. The current system for starting a new game with mods is as follows:
- Load in all of the objects in the game
- Load in all of the objects for each mod, overwriting old objects with the same name
- Assign each object a unique short ID (allowing for 65536 objects)
- Save the map of ID-Object pairs to a file in the save directory
I’m also going to need some special functionality for loading in save games:
- Load in all of the objects for the game
- Read which mods are being used in the save file
- Load in all of the objects for each of the mods used in the save game
- Load the map of ID-Objects pairs from the file
- Check if any of the Objects in the map have been removed from the game, if so mark them as removed
- Check if there are any new objects in the game, in which case give them new unique IDs and append them to the map
Another minor down-side to this method is when a player is joining an online server, the server will first have to send the object maps before sending over the world and game data. However, the map tends to be much smaller than the world and game data is anyways, so it doesn’t seem to be a huge deal.
There’s only been one more lingering issue with allowing this much direct mod support into the game: packing the texture sheets. As I’ve said in a previous post, I take all of the textures in the game and pack them into one large texture sheet to increase drawing speed. That’s not very special though, as almost every pixel art game, or even 2d game in general does this. I want to have it so the mods get packed in with all the game’s other textures. Before, I had it so the game packs all the game’s textures together, along with the mod’s textures, when the game loads. This takes about an extra 6 seconds of loading at the moment, and it’s only going to get longer as the game gets bigger.
In order to fix this problem, I’ve decided to cache all the most popular mod combinations on the user’s system. When you start a game with a combination of mods, it will still have to pack all the textures together on the first time it loads, however it will cache all of those packed textures on the file system in a folder. Right now, I’m taking the current version of the game, then appending all of the mods and their versions being used, and then hashing the result to get the folder to store the cache in. This way, if the same combination of mods and versions are being used it can easily find the folder where the cache should be. I know there is a possibility for hash collisions, but the probably is so low that this will happen, and it’s just going to be pretty funny if it ever does (and you can fix the problem by deleting the cache folders).
http://www.questica.net/Images/DevLogs/cache.png
Now, when the game is loading, it can check if there is a cache for all the mods being used and just load the cache in, which only takes a fraction of a second.
Have you already created a mod system?
I have created a dynamic mod loading system. It works by loading a JAR with a class extended by an interface or abstract class. You would have the distribution jar file which is absent of your game - only contains the utilities they will use to interact. All classes they execute should be blank too - as it’s pointless to make a jar with your game’s code.
I have a pretty simple system at the moment that allows for adding items, objects, and scrolls to the game with no code required! I am planning on extending it to allow people to make their own mod jars that my game will load in, but I haven’t added that part in yet ;D
The way I traditionally approach game design is that anything I can do (content-wise, script-wise, etc…) should also be able to be done by anybody else. It’s a good way to build extensibility and flexibility.
That’s pretty much how we’ve been going at it ;D It helps to keep the code a lot cleaner and organized too.
In other news, we’re going to try and start streaming development every once in a while, hopefully once a week. Coincidentally we’re doing a test livestream today in about an hour if anyone wants to check it out, just go to http://twitch.tv/sirazgames to check it out!
Hey, everybody! It’s been a while but I’ve been working on a whole lot of not very exciting back-end engine coding (which I may share here sometime soon). Here’s a couple cool things we’ve been working on however:
A preview for a new biome! (Made by a new artist!)
http://www.questica.net/Images/DevLogs/desert.png
Added functionality for editing the ground tile with the editor (works in multiplayer too!)
I really do like the water effect and the grass as many others have said. The game is coming along very very nicely. Like you, I sometimes feel need to take a break (work full-time as software trainer) but this sometimes inspires me to looks at more things to add to my game, heck, I’ve wrote around 100 things to add in lately and looking forward to implementing them. The advice on this forum is great, everybody helps out and says it as it is which is refreshing.
Just keep up this great work, learn along the way as we do and reap the rewards sir!
Thank you for the support ;D It does get a little overbearing at times but it’s very important to not give up. Your game is looking pretty fabulous as well, I’m excited to see where it goes
Many thanks Yes, you just have to keep working at it, I’m a firm believer if you try harder enough it will all work out.
I’ve added some new tree stuff last night and hoping to implement chopping of them and then some more building structures.
Thanks for you comment too, this is what keeps us all going
I’ve had to do a lot of refactoring of the base code in order to handle the larger maps effectively. I’ve always had the map split into individual chunks of tiles, but the system needed a huge overhaul. The big changes were:
-The entire map cannot be loaded into memory all at once, it is too large. I need to save groups of chunks to a file that can be loaded at run-time. I decided on groups of 8x8 chunks to minimize the number of files created and memory used in-game.
-Chunks very close to the player must be added to the sorting buffer asynchronously so there is no jitter in the framerate
-Chunks further away from the player should have all the entities update
-Zooming around the map in editor-mode should be quick and without lag
Here’s a visualization of the chunk loading and unloading as the player moves around
http://www.questica.net/Images/DevLogs/chunkLoader.gif
Next, I also implemented the asynchronous adding of objects to the sort buffer (so I don’t have to sort all the objects being drawn every single frame). Chunks coming in to view will be added to the sort and chunks going out of view will be removed from it
http://www.questica.net/Images/DevLogs/coastObjectLoader.gif
Since then, I’ve been working on making this all work in multiplayer, which is also proving to be a pretty monstrous task. Once I get that working I’m going to do a much larger post about how the entire networking system is set up!
This game is looking ridiculously awesome!
Also you should look into having the character’s heads before the text, instead of names. Just “SAM:” is too hard to process.
Thanks! There’s definitely a few things I’ll have to try out, and at the very least I’ll make the name show up in a different color as the rest of the text.
In other news, I added more functionality to the world editor. Finally adding houses is a pretty easy process!
http://www.questica.net/Images/DevLogs/shadows.gif
Alright pals let’s go over how to do these shadows.
In my post about the lighting, I went over the process to give each pixel a 3d coordinate so I’m not going to go over that part again here. Now, I can create a separate frame-buffer to store all the shadow data and reference that on each pixel to find out if it’s in shadow.
http://www.questica.net/Images/DevLogs/shadows/mapping.png
Based on the time of day, each pixel will look down at the shadow map based on the z height of the pixel. As you can see in the image, the line on the left comes from an area on the tree in shadow, but the line on the right comes from an area on the tree in the light, but they both map to an area on the shadow-map. When I draw the shadow-map, the G channel is used for the darkness of the shadow, and the R channel is used for the height of the pixel that casts the shadow. When each pixel checks the shadow-map to see if it is in shadow, if the pixel drawn on the shadow-map was cast by a pixel with a lower z value, then it isn’t actually in shadow.
This will guarantee not only that high objects are not in shadow when flying over trees, it also puts half of each tree in shadow based on where the light is coming from.
http://www.questica.net/Images/DevLogs/shadows/overlays.png
In this image, you can see the two lines are coming from different sides of the tree, but the line on the right maps to the shadow cast by the other tree. Since the height of the other tree is higher than the pixel, it gets put in the shadow of the tree to the right. In order to make sure all the shadows align correctly and that higher shadows are drawn on top of lower shadows, we just have to draw the shadows from left to right instead of top to bottom.
All together a scene looks like this now!
http://www.questica.net/Images/DevLogs/shadows/shadow_scene.png
And you get this nice effect when walking under the trees
http://www.questica.net/Images/DevLogs/shadows/walking.gif
I also have a few other wonderful updates for things we’ve been working on. Namely, the world editor! Here’s a few previews of what’s possible now:
http://www.questica.net/Images/DevLogs/shadows/house.png
http://www.questica.net/Images/DevLogs/shadows/grassHeight.gif
This is absolutely awesome. :o
That is gorgeous. Well done!
Thanks J0 and bornander!! ;D
I would also like to announce that we are planning to do a kickstarter in a few months (with lots of big updates between now and then), and we are planning to attempt to get the game on steam (so I’ll probably take up your offer on help with that, princec :))