Questica -- Another Gosh Darn Pixel Game

Just a quick and dirty update for today, we have something much more cool and exciting coming tomorrow
to show you all!

First, I’ve changed the entire tile rendering system. Types of tile are ordered by depth and drawn one
on top of the other from deepest to highest. Each type of tile has images for each type of edge so it
can be smoothly drawn. Before, the deepest tile type would be drawn entirely, and each one above it
would only draw the tile in the corner of the tile that had that type. Now, tile draw edges such that
it covers every edge except for the tiles deeper than it. To illustrate the changes I have this gif:

http://www.questica.net/Images/DevLogs/6-8-16/newtiles.gif

A few other fun features I’ve added are beaches that generate by the ocean and foggy areas that work
with the shadows!
[tr][td]
http://www.questica.net/Images/DevLogs/6-8-16/beaches.png
[/td][td]

http://www.questica.net/Images/DevLogs/6-8-16/fog.png
[/td][/tr]

This fog… IT LOOKS SO DAMN GOOD.
Could we get a gif of it please? ::slight_smile:

Sure :slight_smile: I’ll be adding some better fading effects soon so there’s not any popping

dwF_eA9PLgc

http://www.questica.net/Images/DevLogs/contenteditor/editor.png

Over the past couple days I’ve been working on this new content editor to replace my old one (and therefore, the 2 I made before that as well xD). However, each time I rewrite this stuff it always gets much much better!

This editor is built entirely from class reflection of the data objects being edited, which is something I’ve wanted to do for quite a while. I always found it really tedious to add a new control to the editor and link it to the data when I can just have a generator do it all for me! The code is relatively straight-forward using Java Reflection, so I won’t go into the code (unless some people really want me to). I’ll just go over some of the features I’m especially proud of.

Specifically, arrays. You can directly manipulate arrays of data in the objects, whether they are primitives or objects.

http://www.questica.net/Images/DevLogs/contenteditor/intArrays.gif

You click the plus button to add an element and the minus button to remove an element. This array will automatically generate if there is an

int[] intArray = new int[0];

in the class definition.

http://www.questica.net/Images/DevLogs/contenteditor/objectArrays.gif

This gets generated if you have something like this in the code:


public static class Drop {
	public String name;
	public float probability = 1;
	public int min = 1;
	public int max = 1;
	public Drop() {}
}
		
public Drop[] drops = new Drop[0];

The editor will also change the Class of a specific object if you want it to be of a different subclass. Just clicking on one in the tree on the left will copy all of the data over to a more specific subclass with more fields. I am also planning on implementing a component system like in Unity.

http://www.questica.net/Images/DevLogs/contenteditor/changingClass.gif

The preview at the top of the frame will automatically update with the new collision info, and eventually with the shadow and light info once I put that in

All of this will, of course, be available to people who want to make mods of the game. I will integrate features specifically for making and packaging mods when the game gets to that point.

Oh my oh my, this is really good stuff. This is the first time I’ve read this thread and I’m mightily impressed. Love how you’ve breathed new life into an older technique. It’s really lovely.

I am posting about your drops. Looking at the class…

Looking from Diablo 2, getting certain items from one drop was a chance on a chance on a chance which just made things overly rare and when it did drop definitely nothing good.

I would keep the drop list, but not have global drops at all. The probability could be morphed around to: a chance to drop anytthing followed by a chance for a normal, rare, unique item followed by a final 0-typedrops.length random chance to get that item to be dropped.

I would also like to state with said method, you would need to have a lot of variation on who drops what or else people would say, farm goblins all the time for potions. It would be not only boring, but what if I wanted to fight something else for a change.

Thanks for the comments! ;D

I will absolutely add a bunch of variation to the drops, there aren’t any global drops at the moment, each creature has it’s own list of items that it drops. I will certainly consider adding a new groups for “rare”, “normal”, and “common” drops to make sure something fun will sometimes drop. One of the main things we’re focusing on as well is that everything in the game can be used for something so you don’t get any useless drops

Thats okay for items, but what about weapons and armor? There needs to be useless drops for these.

If you can use a drop to craft a weapon or armor it does not qualify as useless anymore ::slight_smile:

Although you could have one particular item that serves absolutely no purpose but makes the player believe they have something to look for, I like pulling that sort of tricks ;D

J0 :slight_smile:

Gives play a staff near an alter
Staff turns humans into sheep for a bit
Staff caption: “It is rumored that turning a human to a sheep upon an alter will yield sacrifice for the gods. He who sacrifices for the gods will ascend.”
Player kills sheep on alter for no reason

I like it.

There’s been some features added to the engine lately:

  • The game’s assets are now treated like mods, and are compiled into a universal texture atlas, making the load time on my SSD down to milliseconds and 4 seconds on an HDD
  • We implemented PF4J allowing limitless non-api extensions from the game’s code (see below)
  • There’s a Questica VisUI theme in the works (see below)
  • We migrated everything (game and test-plugin) to gradle, allowing us to quickly test plugin framework features
  • Configuration file system + Dedicated server option

Game assets are now a giant mod!
This, plus the new modding ( not plugin! ) framework allows for people to replace game assets with mod assets!

Plugin framework!
This plugin framework allows for modders to add new world-entity classes, extend game functions, and generally extend engine features making for limitless expansions to the game’s code/engine. So in short, plugins expand the engine, mods expand the game.

VisUI themes!
This isn’t necessarily final, but we wanted an expandable VisUI theme for people to tinker around with. Currently, it uses the same font as the game, and features lots of broken text-boxes!

Gradle!
With gradle we have the game and plugin in separate projects, making for very easy and quick prototyping on the plugin side. So expect much faster and better managed demos!

Configuration file system + Dedicated server option
We used Apache CLI to parse commandline arguments and have the game managable from the commandline only. Adding --no-gfx will run the game without graphics and run the world as a server, which is essential for dedicated servers. This doesn’t mean you won’t be able to start the server on a running game, that’s staying in! Plus, we plan to add a feature in the future to have mods and plugins download from the server, then cache locally. Allowing for amazing multiplayer experiences (roll-play anyone?)

Expect more gameplay-oriented features in the future!

I wrote a simplistic, plenty extendable plugin management guide on the wiki.

Whats your method? Expand on it please! :slight_smile:

I used Decebal’s PF4J:

It’s a lightweight plugin managing system (50kb!) and it does everything we need without using XML. It supports library dependencies, and even plugin blacklists or whitelists, plus there’s a Maven repository for it so I can use it with my gradle scripts

It looks like to me you rather not make your own. They are really simple. By looking at the readme.md, it seems like its like mine - outside jars. I don’t use XML either. I have a config file set up inside the jar to manage import and hold metadata. I assure you, blacklisting is impossible. Disabling in one file is gross. Gunz: the duel modders would just change either the name or whatever of their injected DLL, which altered the original functions to spam gun fires and such. Java makes that process much more simple :slight_smile:

My version supports outside dependencies too, but not ones that reside in the jar. More like next to the jar. That is an organization issue which is fixed by folders containing files.

My version is very light weight offering no features other than to have plugins. No annotations. It seems like that guy wants you to use interfaces for some ungodly reason. You should use abstract classes, for they can actually hold data in the main entry function.

If you ever seen Bukkit (minecraft server) plugins, they bounce off the SAME idea and SAME workings as my plugin model. Bukkit turned out amazing and when it dropped thats when I quit minecraft. I was a server plugin maker at one point ._.

Bleh. I am not upselling and promoting mine to use. I am just comparing and talking about.

Make use of what ya got :smiley:

Those are all very good points :slight_smile: We might end up rolling our own eventually but this one works well enough for now. Everything does extend from abstract classes as you mentioned, because I like them much better as well.

On a separate note, Cody, our artist, recently moved into the apartment with me and we’ve started making Behind the Scenes videos for the game. They are pretty rough at the moment, but hopefully quality should increase as we get more practice. Here’s Episode 1!

Y7bCvL2mimc

MS paint? :o

(Also, not going to write about the fact that it looks more and more amazing… Oh wait…)

Yeah. Okay. Sure. Why don’t you make a game in pixel art that looks absolutely stunning. But that’s just not enough right? Here’s a wild idea: Why don’t you make it in M S P A I N T

I quit.

How about Windows XP Windows Paint :stuck_out_tongue:

Hahahahah, I’ve tried to convince Cody to use some other program but he really likes MS Paint for whatever reason :clue:

When this game is finished, no one will joke that it was developed in Java. However, they will NOT forget the CODY SIN. :point:

Jokes aside: seeing your progress since last December is exciting. The lighting system is beautiful. Mod support sounds wonderful. In-game map editing? Please bury me in this pixelated goodness. I could go on, but you get the point. Keep up the great stuff, Questica team. :slight_smile: