December 30, 2012

Minecraft

Since I seem to spend lots of time playing Minecraft I have been thinking about what exactly I want to do for modding.

The first thing that comes to mind is waiting for the first revisions of the Modding API. The reason for this is I don't want to have to keep fixing on going changes to Minecraft and keep things simple. I like the concept of their modding API and will be working with Mojang on their Jira site to offer what I can to the development of it. It also means I can give feedback directly to the developers, now that is pretty damn rare for most development companies.

Lets start with the basics, what do I want to create. I have spent significant time 'researching', which is basically playing the game, and thinking about what I could easily add to the game to give it some more spice. Of course most of this depends on how much power I get from the Modding API, but I'll outline some basics.

1. I want to add a few basic cooking recipes. Like Apple Pie, Meat Pie, Sugar Cookie, etc. This should be simple and easy to do. I expect these to be trivial  to implement and would probably introduce me to some of the basics of their API.

2. I want to add another thing or two to farm. Maybe expanding upon my cooking concept I could add 'spice'. I'm even thinking maybe to add some alcoholic drinks and plants/items/blocks accordingly to make them. I would also add in a 'drunk' effect to the character I'm thinking something along the lines of what they do in World of Warcraft.

3. I want to improve trading, the current system feels clunky. It involves 'recycling' villagers to get the trades you want, there is little incentive to continuously farm certain items without having to keep renewing trades and other things. I know there is a ton of economy mods that exist in various ways, something with soft limits instead of the current hard limits would be better. As in, I buy an item, the price slowly goes up. I sell an item, the price slowly goes down. I would also scale items differently than the current ratios, they seem far to generous for diamond.

4. I want to improve fishing, the current system is boring. This would mean something like chasing the bobber, catching different types of fish, and a few other basic changes. Fishing overall should be more interesting, but just as it is in real life it can be fairly boring if you aren't catching them quickly.

5. More armor types, lessen the gap between items. Going from leather to iron, and iron to diamond, the jumps in power are insane. And in full diamond armor, unless you are playing on hard, you are basically untouchable. Even iron armor is pretty generous. I also feel there should be a few more tiers of armor, but I won't really go into those details. Ideally, a copper/tin ore and copper/bronze armor. I might add a tier after diamond called mythril, and make it incredibly hard to find. I would also be tempted to add silver into the game. Iron could be refined into steel and such. I am aware of mods which already do this, but I have a few other things I would extend this concept to.

6. Make armor more interesting. More RPG like. Currently, armor has a single purpose which is to reduce the damage taken by all sources. This is pretty decent, but because it only has a single role it has to be really strong to convince a player to make iron or diamond armor. Instead I would want to change it to have item affixes which add health, increase attack, increase movement, increase jumping height, increase tool strength, increase xp gained, etc.

7. More enemies/mobs. Currently, the number of NPCs in the game is pretty lame. I have a handful of enemies and a few passive mobs and a couple friendly. I know a few mods at different types of mobs, but I would also like to play around with my own version. Including mounts, guards, pets, etc. In combination with the previous idea, I would want to add factions, scaling enemies, scaling stats and other rpg elements.

8. More adventuring. The game currently is about setting up a base and eventually going to The End and killing the dragon. So after all that... then what? I'm thinking Quest-based systems with NPC villages, to gain reputation with various factions and earn rewards that are not possible in other ways. Quests which send you to other dimensions, get you to collect items, build things, send you to fight a boss, etc. The system would make the world feel more alive.

9. More item types. Tool wise we are in a pretty good shape, but armor-wise there could also be gloves, bracers, belts, rings, necklaces. More weapon types with different methods of attacking. The combat system could be overhauled to add in skills and a more complex battle system. Including staff's for magic and multiple ways to use the weapons. Spells/Skills/Abilities, etc could be in hidden tomes you find by doing quests, defeating bosses, and other difficult tasks.

10. Large-scale towns. Currently a village is a pretty simple concept, but what about expanding the idea to have larger places as well. With unique buildings and such, different types of guards, more rpg like and factions. Maybe even have 'kings' or 'leaders' which can be killed or allied with.

11. Large-scale combat and meta game. This is one of the largest concepts I have, which would be to literally re-create the Stronghold game in Minecraft. I've heard of other games being rebuilt in Minecraft and adding interesting twists, but this concept seems to be the most interesting but also the most complicated.

I have other ideas and such, but I figured I should lay out the basics. Obviously, there is no way I could do this list and as I descend the list things become a lot harder and more challenging. Of course, this all depends on what ends up happening with the Modding API. If I could assist with development of the API I would, but that is very unlikely.


December 23, 2012

What's Next

TLDR: I'm not going to continue Combatics Evolution. I want to write Minecraft mods and now need to convince myself not to re-write Minecraft to clean up the code.

For the last while, I have been playing various games and just relaxing. This is after a good crunch period with school and basically had little to no time to work on anything serious. I did do a couple of things and will highlight them below, but I also have had a few thoughts lingering in my mind which I will expand upon.

In that time, I wrote a simple platformer game with some Box2D and made a couple levels with Tiled. It was pretty epic, and rather fun. However, I decided to not develop it into something real. It was more just a play around concept and the game isn't easily something I can scale up as the uniqueness of racing against a clock as water rises gets old pretty quick.

I then took on the Java4k contest, I'm thinking its a nice once a year thing where I spend a day or two writing a simple game in 4KB. It is interesting working in those conditions because you have to think about what you're doing in a very unique way. I'm very happy with my work this year, as it was a much better submission this year with a lot less work.

During my exams, I needed something to play around with between exams to keep my sanity in check and also so I can easily have a break and go back to studying at any moment. I was working on a 3D version of Falling Sand which if you have no idea what that is, check out the link. I played this game years ago before I was really into programming and thought it was a neat idea. The 3d version is pretty cool, but getting it to scale up to an interesting size proved rather challenging. I then thought about networking some more and the idea quickly went away.

Of course, during this entire time I was thinking about Combatics Evolution, I tinkered a bit with a few things and did a ton of prototyping with networking to figure out what a good framework would be. In the end, I've come to the conclusion that the scope of Combatics Evolution is simply too big. If I want to turn it into a game, I'm going to have to scrap the networking and focus on the core game-play. The editor will stay simply because I will probably use it for developing the game. I'm just not feeling very confident in the project. As it is still too much to chew for a single developer without an artist without sacrificing my social life.

I did play around with the concept of having a server-side model, a proxy model on the client-side and handling the updating with a caching mechanism to keep the networking calls to a minimum. The client would be a simple thin client and focus on just rendering the information and submitting user input to the server. However, this would require rather large changes and I'm not sure it would even work out well at all without building a more serious prototype and that would not be a trivial task considering the complexity of map/units/effects/abilities/items/etc.

For the last year or so I've been thinking about building Minecraft mods. I've been waiting for the official moding API because I would rather not have to deal with the hassle of unbuilding minecraft, moding and repackaging. Then figuring out how to incorporate networking into the whole puzzle, and working with bukkit to support my single-player mod. Well, I did play around with LWJGL and brushed up on some low-level OpenGL. I honestly cringe at the idea of building UI by hand... Additionally, unobfascated Minecraft code is brutal to work in and some of the glaring design flaws in the overall code structure drive me nuts. I seriously would spend hours rewriting Minecraft instead of working on the Mod, but never the less. It can't be that bad if in about 3 hours I was able to turn the heart meter into a health bar and make it scale with your level.

This is a pretty damn long post... anyways, bottom line is. I don't want to work on Combatics Evolution anymore and I feel like modding Minecraft could be a lot more exciting.

December 7, 2012

Java4K 2013

Well it's that time of year again. It amazes me how much I have learned over the last year. This contest I was able to really focus on features as I know a number of tools to help  with compressing my game into 4KB and I know Java much better than I did a year ago.

The game is called BallDefense, I will shortly post a link to it once the game is officially approved. It is actually a very deep game with a ton of different features and functions. I did use a number of formulas to scale and generate the game to keep things low of memory cost. Hopefully, this time I don't forget to do the community vote so I can vote on my game...

The source code should be publicly available after the contest, its rather complex and ugly for my tastes but when memory size is critical you have no choice than slightly ugly code. I actually have a couple bytes to spare with my game so any future request I should be able to accommodate  I'm slightly sad I don't actually have a high score, but I can probably squeeze it in later.

On a side note, I've been figuring out the best way to approach the networking for Combatics Evolution, but no work will be done until after I'm finished my exams. I have a feeling it might be best to strip things down and rebuild the battle system from the ground up with networking. Hacking networking into my current system will be error-prone and probably not work out very well; however, the battle system isn't a trivial thing to just code up so it will take a big effort to rebuild.

November 19, 2012

Tetris

On Saturday I was competing in an artificial intelligence competition. The objective of the game was to play head to head against other people at Tetris. The game is played with two teams, each team has a program running directly against the opponent teams program. The game is designed around needing to survive as long as possible while working to add lines to the opponents board, and thus forcing them to lose. To add a line to the opponents board you need to score two or more lines in a single move. The lines added to their board will typically have 5 holes, but could be as few as 1 hole, or a full empty line being added to the bottom.

The event was sponsored by Pason which is a very interesting company and from my initial impressions it appears to have a great work atmosphere. For the competition, each team can be either one or two people. I believe in total there was 48 teams registered. However, only bit more than 20 teams competed on the game day, which is still a fairly decent sized group. The morning round started off as a round robin with the main focus on getting a ranking for the elimination round. I ended up starting off in second position for the elimination round and was feeling pretty confident about my program. I made my way up to the finals and was pleasantly surprised by my opponent who wrote an excellent program. I lost the final round 34 to 72 in a match which started off with my program winning, but roughly halfway through the tables turned and I started to get dominated. A surprise, but a very respectable match and I congratulate my opponent on a wonderful challenge.

I had a blast and enjoyed the challenge of coding up a Tetris game and then designing and building an AI to play it better than I ever could. It was a good experience and I finally got to play around with Gson and JCommader. They are two libraries I am very impressed with and hopefully I will be able to work with them in the future. Gson offers an interesting version of serialization which is extremely easy to use but also a viable candidate for cross-language serialization. I personally like JSON significantly more than XML, but sometimes complex cyclic relationships are required and JSON isn't going to help you there. However, cyclic relationships are typically a bad practice anyways... The only places I use them are typically not candidates for serialization.

I guess second place on its own doesn't sound very exciting, but it does mean I won $1250 and I also got a $100 gift card for beating Pason's AI at Tetris. I have been asked what I will be doing with the money, my first thoughts are school and saving it up for tuition. I am also thinking to simply save the money for now as I'm sure in graduate school I will need extra money. As I mentioned before, I am currently taking a break from Combatics Evolution, but I am also making some good progress on Paint Party. While the application is still in its infancy, things are coming along smoothly and I'm hoping my team is up to the challenge and ready to dig into a decently complex project.

Next week I'll be attending an award luncheon for an Engineering Internship Merit Award. I'm extremely excited to have been awarded for my hard work at Autodesk. To top it all off, I have also been informed I've been recommended for the NSERC Scholarship by the University of Calgary. This has been a very exciting month!

November 17, 2012

The Current State

I have been very busy over the last few weeks and because of it I haven't had time for Combatics Evolution. I've decided to take a break from working on the game as I just don't have the time to commit to it right now. I played around with a prototype of a survival platformer game, it was a nice break from the regular work. I also was working on building an AI for a Tetris competition. That has been taking up a good portion of my time, its for Pason and I enjoyed working on it.

For the Tetris competition I got to play around with a few libraries I haven't had a chance to work with before so it was a good experience. Hopefully it will go smoothly, but I have a bad feeling the networking latency will play a bigger role than the ability of my AI. Lets put it this way, my AI can do 600k to 2M lines of Tetris in a couple minutes, but throw networking and a server on AWS, I do maybe 160 lines in a LONG game that usually takes a few seconds.

I also have been working on PaintParty, I hooked up the networking, basic interface and setup the serialization for the project to basically kick start it. I was surprised it only took me a few hours... but I guess that it was what happens when I'm reusing a lot of code from Combatics Evolution. Anyways, competition day, hopefully things go well :).

November 2, 2012

Two Week Cycle

I have to say, a one week release cycle is great when I don't have much going on. However, as things have been rather hectic and I'll be focusing on another major project soon Paint Party, I want to reduce the pressure on myself and switch to a two week cycle.

This week has had virtually no work on Combatics Evolution. Partly because I was exhausted from last week, partly because I am currently exhausted from this week, and I wanted to take a small break and play some Dishonored. Between midterms, exams and labs there simply isn't enough time to fit in any development during the last week. I'm still looking towards getting the combat ready for multiplayer as that will be one of the biggest features. Once I have it in a working state I will then be able to focus my attention more on performance and content. I have come across a few little tools I'd like to utilize for this project so I guess not all of my time has been wasted:

JCommander

For the server-side console I want to get JCommander to parse and process commands. The tool is designed to simply parse program command arguments, but the design of the library allows it to very easily be used for processing console input.

Sqlite4java

While Sqlite4java it isn't a pure-java solution it does support android, which makes it a great candidate for working with SQLite. I am planning on using SQLite as my datastore for profiles, as the current solution is really just a temporary way to get it working.

Apache Pivot

Typically I avoid using Apache for Java because of how they like to use various parts of their other libraries. While code-reuse is great, I don't like it when it comes to libraries because using different ones typically means I need to adopt large parts of the ecosystem for the dependencies. Some I can trim out with proguard, but when you have dependencies and the libraries have dependencies things get rather ugly with proguard very quickly. Anyways, Apache Pivot seems to offer a very handy set of features for building UI, I may consider this for a server admin UI in the future. I don't want to use Swing, AWT, or SWT so my options basically get very limited with Java.

Other JVM Languages

Clojure I don't really like, and I would much rather use the Python over it. In the years to come my opinion may change, but for now I won't touch it. It does work with android, minus a few quirks so if time permits I may dig into it some more. It does have a CLR and a Javascript version which would also be handy in other projects. It just hurts me a little bit when looking at the syntax and style. :(

Groovy is pretty cool, because it really focuses on adding very powerful constructs to Java. Groovy offers a clean syntax and really embraces the idea of being more of an extension to Java than a replacement. However, I'm not yet convinced about it since support on Android isn't good enough. 

Scala is awesome, and I would use it for my project if the Scala IDE plugin for eclipse is showing a ton of promise. However, until I get better integration with Eclipse I have no incentive to use it. I just feel naked coding in Scala without robust tool support... It works well with android, it is a little messy mixing it with Java code, but still workable. If anything, I would consider Scala in the near future as my main programming language since it offers a ton of high-level features and the complexity of the language is the only real hurdle. It does have a CLR version, which makes it highly attractive.

October 27, 2012

Combatics Evolution 0.1.6

After a few little minor headaches, I am proud to announce the first version of Combatics Evolution with multiplayer!

So far, multiplayer only works on the desktop clients for the map editor. There are chat channels and a server lobby. You can simply host the server by downloading the exe (for windows) or the jar file (for all) and running the application. There is a minor bug with the console at the moment, you will have to close the window to kill the server as I need to figure out a better way to support console commands.

Combatics Evolution v0.1.6 Release Notes:


  • Game progress is currently not cross-release compatible, previous profiles will not be able to function with the latest version.
    • Android Version will have errors if you attempt to use an old version.
    • Note: Long term profiles are in the pipeline.
  • Multiplayer Update
    • You can connect directly to servers, to launch a server simply run the server application.
    • Server Lobby:
      • View other open games
      • Create a new map editor session
    • Editor Lobby:
      • View map to be played
      • Chat while in editor lobby
      • Only host can start game
    • Multiplayer Editor:
      • Instantly view changes made by other users.
      • Save map locally
      • Exit from session
        • Note: In-game chat in a future release.
    • Currently, linked to google accounts and uses your name to identify you. Meaning, if you want to play with random people consider waiting until I implement nicknames.
  • There are tons of other changes under the covers.
  • I am aware of android performance currently being horrible, I will need to do a few optimizations soon, but I will be mostly focusing on networking right now.

The latest version can be found here:
Desktop Version
(Direct Link: Desktop Version)

Android Version

(Direct Link:Android Version)
Note: APK Download, you must have unknown sources enabled in the application menu.

Server EXE
(Direct Link: Server EXE)

Server JAR
(Direct Link: Server JAR)

Enjoy!

Goals for next update (0.1.7):


- Initial online battle support (with in-game chat)

Progress on 0.1.6 (Part 2)

I haven't posted an update for a couple days, and I wasn't really sure if I should even post this update today since I will probably be releasing the next version (0.1.6) tomorrow. Android will not have any networking at this time because I still need to hook up some authentication code for it.

Currently, for the multiplayer server it will be pretty barebones and only support one command: quit. However, for multiplayer support I currently have a server lobby, with joinable game lobbies and chat channels. Creating/Joining/Leaving/Destroying channels is currently automated but the idea of creating custom channels is quite easy to accommodate in the future. The editor appears to be working well over the network and the amount of changes to the editor itself was only a few lines of code. I guess I do know what I am doing after all lol. Obviously, the server code is quite a bit more extensive and as far as testing goes, 4 clients are working flawlessly on a local network.

Of course, some real world testing would be nice... but I have to settle with some local testing for now until I can deploy the server. Currently, I have a configuration file where you can set the port to run the server. More settings will be added later as needed and things like server name and such would be handy. The error handling on the client is very minimal so I totally expect a number of crashes related to networking in the first couple versions. Overall, it appears to be decently stable, but I'll take that with a grain of salt.

The next task will be online-enabled custom maps... Which is going to probably be a lot more work to get everything working reasonably over a network compared to the editor. Most of the server code can be easily reused from the editor, but battles have significantly more going on. Basically, I'm very uncertain about it only taking me a week to complete it on top of everything else I have going on. Naturally, I won't release anything partially working so if I can't complete it on time I will delay it by another week.

October 21, 2012

Combatics Evolution 0.1.6 Postponed

Last night I came to the conclusion an update would be rather pointless right now. The only real changes on the user side would be a chat system which would require the user to setup a simple server for hosting it. I have made a significant number of changes under the covers, but it has no real affect on the user. Needless to say, since things are busy right now and I don't really see a point in releasing a new version I am delaying the release by a week.

The goal is to finish off multiplayer-based map editing by next week. It was what I had originally hoped I could have done this week, but I was delayed by a number of things.

Goals for 0.1.6 (One week from today)

  • Multiplayer-based map editor
  • Deployable server

Goals for 0.1.7 (Two weeks from today)

  • Multiplayer-based custom maps

October 18, 2012

Progress on 0.1.6

It has been a busy week and I've had very little time to work on Combatics Evolution. It isn't totally unexpected as being a student full time does mean I have course work and midterms to worry about. I have been able to squeeze in a few new changes but am currently learning a handy little framework for networking.

My goal for 0.1.6 was to get the editor up and running over a network, but I think that goal is a bit ambitious considering I have a bunch of UI to create in order to make the whole workflow rather seamless. Currently, I have a deployable server but I'll probably have to package it up nicely for users to be able to easily create and run. It is built in a very flexible manner which will allow me to easily add/remove server commands and is written in Java since that allows the least amount of work to integrate with the client.

My goal is going to simply be creating a server lobby for the upcoming version and support text-based chat. I'll probably have to spend a bit of time kicking the android side to make the user actually able to log in. I hook into google accounts for the desktop side, so the android side isn't going to be a ton of work *crosses fingers*. Currently, the name will be the full name on your google account, but I will need to setup a database system to store 'nicknames' for people to use as their alias. I don't want to intentionally expose personal identifiable information to other clients.

Anyways, I'll probably cook up a few abilities while I twiddle my fingers on how exactly I'm going to hook up the editor over the network. So maybe a few new abilities will make it into the update.

October 14, 2012

Combatics Evolution v0.1.5

This update has been sitting around my computer for the last day or so, I have been busy with some assignments so getting this out was delayed a little bit. 


Combatics Evolution v0.1.5 Release Notes:

  • Game progress is currently not cross-release compatible, previous profiles will not be able to function with the latest version.
    • Note: Long term profiles are in the pipeline.
  • Battlemap Update
    • The campaign battle area has two maps which are randomly selected per battle. 
    • Starting locations are now displayed as white tiles (might make it more noticeable in the future)
    • Unit movement is now 3D based, and you will need to play around a bit to get a feel for how movement works.
    • Old maps are not compatible with this version, I have fix this for future releases to be compatible.

  • There are lots of other changes under the covers.

The latest version can be found here:
Desktop Version
(Direct Link: Desktop Version)

Android Version

(Direct Link:Android Version)
Note: APK Download, you must have unknown sources enabled in the application menu.

Enjoy!

Goals for next update (0.1.6):


- Migrate more abilities...

- Initial online play support (with deployable LAN server)

October 13, 2012

What is next?

Now that the map editor and combat systems are integrated, the only thing remaining with it is getting all the abilities implemented. Something I could probably do in a day of work, but it is not exactly exciting to do. I have built up a number of things to make the task trivial, but I just see it as 'content' and not really a feature.

This leaves me wondering what feature I should take on next, the things I have remaining are the following items:

  • World Map - A node-based map with regional views, cities and areas to explore.
  • Missions - A miniature world, sort of a series of battles up to a boss area.
  • Challenges - A single battle which challenges the player's ability with various aspects of combat.
  • Online Play - Setup a deployable server for LANs where players can create maps on the editor, play custom maps together, and chat. (Expand to Co-op based play later)
  • Enhanced Combat
    • Add map interactions
    • Fire/lava and water effects
    • Design pathfinding around new factors of the map
    • Add custom map events
  • Campaign Development
    • Start creating the storyline and foundation for the single-player game
    • Cinematic content
    • Quests
    • Character dialog
    • Developing the world map
  • Polish Interface
    • Reskin the UI to match the game
    • Add music to menus/world/battle
    • Add basic sounds during menu
    • Add options menu
  • Polish Gameplay
    • Add sounds and animations to characters
    • Add more character models
    • Create actual textures for the blocks and such.
    • Add more AI and different types for difficulties
    • Include threat and concern into combat model for smarter AI
    • Balancing (done after most other systems are in place)
  • Monster/Content
    • Add different/new enemies with special abilities
    • Give units attribute coefficients and scaling
    • Boss units and special battles
  • Polish Maps
    • Lighting Effects - Add lights and shadows to map to add a level of depth and quality to maps
    • Particle Effects - Add splash to water, smoke to flames, molten splash to lava.
  • Polish Items
    • Add names to items
    • Clean up item tooltip
    • Show current equip when swapping items
    • Perform comparison between items when equipping
  • Polish Characters
    • Improve Job Rank system
      • Provide attribute bonus for increasing ranks
      • Multi-tier abilities?
And I could probably spend more time thinking about other things here and there I want to work on. It is kind of odd, most of this is tweaking already existing parts of the game. Where to go next for 0.1.6+ is lurking in the background as I am wondering where this project will take me.

October 10, 2012

Progress on 0.1.5

Well, here is the semi-weekly update on Combatics Evolution.

Currently, everything is going fairly smoothly, with a few minor headaches. I am currently focusing on recreating the abilities to work with the new map system. The transition is very straightforward with a few minor changes to some components; however, I am also cleaning up some code and trying to make everything easy to work with for my own sake. In the process of cleaning things up I have caused myself a few headaches by first building things more complicated than what I need and secondly, rewriting things which don't really need it.

The combination of the two issues above has delayed myself by a number of hours, but its always a good reminder of why sticking to "keep it simple stupid" is the best decision in 99% of situations.

Anyways, below is a nice picture of what to expect in 0.1.5:

Combat post-0.1.5

This is an example of going from nothing to a custom created map combat in about 2 minutes. It is remarkably easy to do. While the number of things you can customize is pretty minimal, there is a ton of room for expansion. I like to give the player the ability to do what they want by making their own content. Developers typically need to create an editor for the game, so why not just build it into the game and let the user control the content if they want to? (Halo forge, Warcraft3, SC2, etc...)

As far as 0.1.5 is concerned, everything is done except for abilities. Which is something I have a habit of neglecting, but I'm making it an easier task so I don't feel as lazy about it.

October 6, 2012

Combatics Evolution v0.1.4


The map editor is essentially complete; the interface can be improved at a later time. I'm releasing today because it is thanksgiving here in Canada and I want to get out what I have before I completely break the ability system by migrating it over to the new maps.

Combatics Evolution v0.1.4 Release Notes:

  • Game progress is currently not cross-release compatible, previous profiles will not be able to function with the latest version.
    • Note: Long term profiles are in the pipeline.
  • New Editor Features
    • Create, Load, Save and Delete maps
      • You can configure the size of the map in all 3 dimensions with sizes between 6 and 24 blocks. Keep it smaller on android devices.
    • Change viewing angle
      • Normal - Isometric
      • High - Orthogonal downwards view
      • Low - Orthogonal sideways view
    • Change map blocks
      • Add blocks
      • Change blocks
      • Remove blocks (note: the base layer cannot be altered)
    • Change starting locations
      • Currently editor only supports setting two teams, more teams simply involves additional UI work.
      • Add/Remove locations, and automatically resolves conflicts
      • To view the locations you will need to be in Violet or Orange mode and you can select which team to view with the adjacent button.
  • There are a number of other changes under the covers.

The latest version can be found here:
Desktop Version
(Direct Link: Desktop Version)

Android Version
(Direct Link:Android Version)
Note: APK Download, you must have unknown sources enabled in the application menu.

Enjoy!

Goals for next update (0.1.5):

- Migrate combat system over to new map architecture, this will completely break all existing abilities.
- Be able to play and load custom maps as well as a few built-in default maps in the campaign.

October 5, 2012

Combatics Evolution Movement Rules

I figure I should provide an update on the changes coming to the combat system. Since I'll be working on a 'block' like map system there are now a few new rules I need to consider for movement. Currently, the rules are fixed for all units, but I am considering the possibility of them becoming more dynamic in the future.

Below is an image showing the current ways a unit can move from a block to an adjacent block. Imagine the character is on top of the light blue block. They are able to move to any green block immediately beside them. This assumes there isn't a block in the way, as characters occupy two blocks above the ground.

Movement System post-0.1.4
I am about to begin the transition from the old map system to the new map system for combat. I have a few more things to tweak in order for this to happen, and I now have an excuse to create abilities using the 'builder pattern' (Software design terminology). All my current ability implementations will need to be updated to the new system, my current AI shouldn't require any changes (this is why modular code is awesome). If I don't complete the upgrade before my next update, then the old combat system will still be there (again, modular code rocks).

If you haven't gotten the picture yet, make sure your code is modular... my game is a perfect example of why you want to keep your code very flexible. Also, copy and paste is a sin when it comes to programming. I could probably rant for a few pages about why I feel sorry for companies who hire new graduates. Particularly the ones which have very little experience with good programming practices... something that seems to be completely overlooked in undergraduate degrees. Honestly, why universities give degrees in computer science and software engineering without making students take a course (or two) on 'clean code' baffles my mind.


October 4, 2012

Progress on 0.1.4

I have been fairly busy lately with other things happening; however, I would like to post the following image to show the current progress on the map editor:
Map Editor pre-0.1.4
I still need to implement loading and saving maps, but I don't suspect it to be an overly difficult task. A few things I should probably mention about this editor:

  • The red X in the top left will close the editor and bring you back to the menu.
  • The controls on the left are for normal navigation, but you can drag around the map as well.
  • I plan to also add a zoom button to the navigation (and to the battle screen as well)
  • The 4 main controls at the bottom are:
    • Blue - Select Mode - You can click, select and drag around the map but will not make edits to the map
    • Green - Add Mode - You can place blocks on the map by clicking on the map, you can drag around but you will place blocks as you click so I don't recommend.
    • Yellow - Edit Mode - You can change the type of block when clicking on it.
    • Red - Delete Mode - You can remove blocks on the map by clicking on them.
  • I am currently playing with the editor and I feel that working completely in isometric isn't ideal, so I will probably add more viewing angles so you can get a better idea of what you are working on.
  • There is also a block selection panel on the bottom right side (yes, it isn't in the above picture). This allows you to change what blocks will be placed, and you can cycle through all available blocks.
  • Top right text:
    • FPS - Current frame rate in the editor, android seems to pull off 20-35 fps on my low-end tablet. So I feel this will work for other devices of similar or better specs.
    • T - Number of triangles being rendered, more usually means lower FPS, I will try to reduce this number with more optimizations for android, but not sure how much lower I can push it.
    • X/Y/Z is the current location of the selected block.
Well, that should be a handful of information. Needless to say, things are going well and shaping up nicely. I'm aware the blocks aren't very good looking, I haven't spent any serious time trying to make them look good, something I can polish up in the future.

Anyways, back to work for me!

September 30, 2012

Combatics Evolution v0.1.3

Well after my problem magically went away... I'm talking about legit software voodoo, here is the latest version!


Combatics Evolution v0.1.3 Release Notes:

  • Game progress now saves
    • Profiles are currently designed only to work per version at this time, meaning your progress will be erased with version 0.1.4
    • Note: Long term profiles are in the pipeline.
  • Cleaned up the menu's this is now the official layout I plan to stick with unless things need to be changed again.
  • I have created a new map edtior, it is a work in progress and doesn't do much at this point as I haven't had much time to work on it.
  • Currently, you can have as many profiles as you like, but I might try to limit that in the future to only 6 or 7.
  • Difficulties are not implemented.

The latest version can be found here:
Desktop Version
(Direct Link: Desktop Version)

Android Version
(Direct Link:Android Version)
Note: APK Download, you must have unknown sources enabled in the application menu.

Enjoy!

Goals for next update (0.1.4):

- Get the edtior up an running for content creation. I will leave out custom tile creation unless I get time to work on it.
- Be able to load and save maps created in the map editor.

Combatics Evolution 0.1.3 Delayed

I have encountered an issue relating to deploying the latest version. The version comes with a very large number of changes which apparently completely break down during the serialization process after I apply proguard to the projects.

It seems this issue is related to something I'm not aware of, and the recommendations in the proguard manual haven't solved the problem. The alternative would be to publish unobfuscated code which is something I'm not comfortable with doing, so this version will be delayed until I can solve the problem.

The two main features that would be in this release is:
- Saving/Loading profiles.
- Initial parts of the map edtior.

I will provide an update once I can actually deploy this version...


September 27, 2012

Progress on 0.1.3

After a bit of planning and research I've finally determined how to handle saving the game between sessions. It is all working and was fairly straight forward, but it is not the final solution.

Essentially, I'm focusing on creating the temporary saves and I'm ignoring preserving saves between versions.    I figure once I get more of the fundamentals of the game fleshed out then I can worry about cross-version saves. I certainly have a long ways to go with many features I want to implement.

Right now my thoughts are on which feature to tackle next. I could spend time focusing on developing the combat, developing some actual opponents and build up the world map. Or I could focus on custom content creation and putting in the map editor. It isn't easy to decide because both will depend on each other, and developing them in parallel would be silly.

For the editor, I have a few ideas listed in priority and importance:

  • High
    • Cube-based map content (think Minecraft Classic but without the person).
    • Specifying spawn points for teams (only 2 teams for now).
    • Specify win/lose conditions from preset list.
  • Medium
    • Terrain tile sets, sort of like from Warcraft 3, but you could actually create them inside the editor.
    • Specify where units spawn and which type of units.
  • Low
    • Programmable custom event system (think JASS but I'd probably use Python).

Either way, I am on track for 0.1.3, a few more abilities might make it in but I won't make that a priority. Actually, I'm starting to think working on the editor first would be a better idea because it will influence work on a number of other systems... especially the work I've done so far for abilities. In fact, I think I will halt my work on abilities and focus my attention on the editor once I finish profiles.

September 24, 2012

Battle with Android

I am not very impressed right now, but this is what happens when you rely on third-parties. After updating my google plugin to the latest version my deployed version for android seemed to crash on startup. The problem was libGDX using reflection for creating my UI. The application exporter for android apparently obfuscates my libraries as well now. Which is fine, but not when the libraries I use expect the names/fields to be defined a certain way during serialization and reflection.

I have updated the Android version to 0.1.2b as a hotfix, so if you would like to grab the latest version I have updated it. The desktop client is unchanged because I don't attack my libraries viciously! Anyways, it took me a while to figure out what was suddenly exploding in the version I publish and why my local copy was as happy as ever!

So enjoy!

September 23, 2012

Combatics Evolution v0.1.2

I've been pretty busy working on hooking up and prototyping some future features so this update doesn't have nearly as many abilities as I would have liked to implement. I've also decided it probably would be a good idea to use a builder pattern for abilities to make changes in the future trivial.


Combatics Evolution v0.1.2 Release Notes:

  • NOTE: Game currently does not save progress.
  • Buff/Debuffs now display during the battle
    • Buffs and debuffs typically stack, there are a few exceptions to this since some debuffs do not affect the unit's stats.
    • The icon for the buff/debuff is the same as the attribute which it affects.
    • Each attribute-based effects can stack upto 3 times in both beneficial and harmful directions. Below is the code code used to indicate the stack level:
      • Blue x3 of the buff
      • Cyan x2 of the buff
      • Green x1 of the buff
      • Yellow x1 of the debuff
      • Orange x2 of the debuff
      • Red x3 of the debuff
  • More abilities have been added, mostly passives
    • More to come next update, I had to rework a number of systems for the next major update. This prevented me from getting as many abilities done as I had hoped.
  • Hooked up multiplayer authentication for desktop, android will come in the future but is not a priority at this time.
  • A 'Message of the Day' and the status of the online server is displayed at the title screen.
  • Other minor UI tweaks.
  • Other minor Bug fixes.

The latest version can be found here:
Desktop Version
(Direct Link: Desktop Version)

Android Version
(Direct Link:Android Version)
Note: APK Download, you must have unknown sources enabled in the application menu.

Enjoy!

Goals for next update (0.1.3):

- Continue to implement more abilities and use a better architecture for their creation.
- Support loading and saving of games (called 'Profiles')
- Not watch all of Minecraft Let's Plays from RoosterTeeth... (didn't help with this last update :D).

September 22, 2012

Windows 8

I had some fun and was trying out Window 8 64-bit to see what everyone was complaining about. In all honestly, I have to say I overall really like how they laid out everything and cleaned up the UI. The OS runs significantly faster and seeing how I pretty much never use the start menu other than to find a program I haven't used in months it was a welcoming change.

I did an upgrade from Window 7 because I didn't want to torch all my programs. It got me to remove a few programs, but I can't really complain since I barely used them. The upgrade however was pretty bad, it took well over 3 hours to upgrade my laptop. My laptop isn't a very powerful computer (by powerful I mean workstation class laptops), but with an Intel i7, 4GB of RAM, and a 7.2k rpm drive I wouldn't have expected such a long time.

After playing with it for a few hours, I'm very happy with it but it certainly is more orientated for mobile devices. If you are looking to buy a new laptop/'ultrabook'/etc in 2013 (assuming the world doesn't end), then I would suggest you get it with Windows 8. This is assuming you don't want a Mac or put some flavor of Linux on it.

Linux, in my opinion is a great OS for servers/development but I have tried and failed many times to convince myself to use it for anything else. I do feel right at home in both environments, but for everyday things and games I'm pretty much going to stick with Windows. Then again, I never enjoyed using vim or emacs. but they certainly do a great job for working with files on a deployed server instance.

Anyways, back to work for me, I got Combatics Evolution 0.1.2 on the way and just want to finish making some more changes.

September 19, 2012

Progress

I am certainly enjoying logging my progress in a semi-weekly fashion so here we go.

I spent some time on the weekend relaxing and taking it easy, my courses are starting to pick up so I don't want to exhaust myself with developing Combatics Evolution on the side. I've started to implement some of the abilities, I'll probably avoid implementing some of the more complicated ones right now. I finished off the buff/debuff system over the weekend and have finished setting up the UI to display it. I think the system is really interesting and very dynamic.

I'm not sure how I should scale the duration of buffs/debuffs because as a party gains more members the time between turns per unit increases. So a 60 second buff for a 1 character  team is much better than a 60 second buff for a team of 7 characters. This is because on a single character team you get a turn roughly every 7 seconds, but on a 7 character team each character gets a turn every 36.5 seconds. (Roughly a unit becomes active every 5.2 seconds).

This means a character on a 7 player team will buff itself for 60 seconds and without rebuffing the character will only get to perform a single action with the buff active. In contrast to a single character team, the character gets to perform 7 turns with the buff active without rebuffing. I find this to be a bit extreme, while I do want both full-party 7 character teams to come with advantages/disadvantages, I feel this might be too good to keep your party size down low. I won't bother scaling it with party size at the moment, because of the other factors it could change, but I will have to keep it in mind later once I start worrying about balancing and more complicated combat.

My current goal for 0.1.2 is to get at least 2 or 3 active abilities completed per job, and as many passives as possible. I also think I should make sure the publisher for the applet warning shows my name instead of "UNKNOWN" because I have a feeling that could scare people away.

September 15, 2012

Combatics Evolution v0.1.1


Of course as promised, the latest version has been released. This one comes with a significant number of changes and I will try to highlight as many as possible, but I know I will miss a few. I should also mention since classes are starting to get under way, development will slow down significantly for the next couple months. I will continue to release updates on a weekly basis.

Combatics Evolution v0.1.1 Release Notes:

  • NOTE: Game currently does not save progress.
  • Removed level limit restriction.
  • Warrior abilities are mostly implemented.
  • Any abilities marked with (NYI) are not yet implemented and will not do anything.
  • Added animation to main title screen.
  • Abilities tab can be accessed by units who have a Rank 2 or higher job.
  • Each world map location has various options:
    • Shop - Location where you can buy/breakdown/sell items.
    • Barracks - Location where you can hire new units to join your party.
    • Inn - Location where you can pay to fully heal your party, at a cost.
    • Camp - Location where you can rest to fully heal your party, with a secret!
    • Battle - Location where you can fight against AI opponents
  • Movement has been revised in combat, everything requires time to perform and scales with skill speed, except a few NYI instant abilities.
  • Fully integrated buff/debuff system, UI for it is an invisible placeholder and will need to be implemented at a future date.
  • Masteries have been enabled, it requires level 20 which I realistically don't expect anyone to get to in this game right now.
  • Other minor UI tweaks and fixes.
  • For testing purposes I have left in an auto-win button.
The latest version can be found here:
Desktop Version
(Direct Link: Desktop Version)

Android Version
(Direct Link:Android Version)
Note: APK Download, you must have unknown sources enabled in the application menu.

Enjoy!

Goals for next update (0.1.2):

- Implement more abilities (I have finished designing them and setting up most of the underlining code)
- Hook up icons and interface for buffs/debuffs

September 11, 2012

Path Finding and Patch 0.1.1

Over the last few years I've had to write a number of implementations for path finding. Some of them were extremely robust and scaled into the tens of thousands of units! However, Combatics Evolution is significantly smaller when it comes to the number of units and size of playing area.

Currently, the map is a 12x12 grid, but I could easily set it to any size. I plan on supporting up to a 24x24 map with 7 units under the player control and a maximum of 11 enemy units. I have set the map to being completely flat right now with grass as the only terrain type. That will be something I'll focus on changing once I have finished adding a number of unit skills into the game.

I didn't like my original implementation for moving units around, it was a simple and got the job done but that is about it. Coming up in the next patch I have changed it so you can actually see the steps the unit takes (animations are still to come in the future). It also means movement isn't instant and I'll have to deal with collision and path finding. I think I have sorted it all out, and basically if a unit runs out of spaces to move before getting to the destination it simply stops moving as far as it can. When running a battle on a 24x24 map and only needing to run the pathing algorithm while a unit is moving, there was no effect performance. Which is great, because I want to target Android and efficiency means longer battery life for everyone!

Anyways, the scheduled release for 0.1.1 is September 15. There are a number of improvements already and I still have a few more days to sneak in a couple more changes!

September 9, 2012

Combatics Evolution v0.1.0

Technically I have until tomorrow, but I figure I could get this out now. Not that I really expect a whole lot of attention. :)

A number of features are currently disabled because many are simply works in progress. While they are mostly finished I am not comfortable with putting them out yet since they are far from being polished.

Combatics Evolution v0.1.0 Release Notes:


  • NOTE: Game currently does not save progress.
  • Unit max level is 5.
  • Basic combat with simplistic AI.
  • Units only have 3 abilities:
    • Move - moves the unit instantly up to (3) squares away
    • Attack - attacks an adjacent tile for 100% weapon damage
    • Defend - restores health equal to 200% weapon damage and faces targeted direction.
  • Map editing is currently disabled.
  • World map only has 4 test locations.
    • INIT (Access to everything)
    • Battle Test (Access to battle only)
    • Shop Test (Access to shop only)
    • Barracks Test (Access to barracks only)
  • Barracks is operational, you can purchase additional characters.
  • Shop is operational, lowest level item you can purchase is 5 which ends the game. You can also sell items for gold.
  • Battle is operational, enemies scale with your levels/units.
  • Inventory is fully functional, swapping, viewing, deleting items.
  • Equipping items is fully functional, swapping, viewing, removing items.
  • Abilities are currently disabled.
  • Masteries are currently disabled.
  • Options are currently disabled.

It can be found here:


Desktop Version
(Direct Link: Desktop Version)

Android Version
(Direct Link:Android Version)
Note: APK Download, you must have unknown sources enabled in the application menu.

Enjoy!

September 5, 2012

LibGDX Sliders

Yes I am seriously making a post about this. For the longest time my biggest dislike with LibGDX was the slider widget because it didn't provide snapping or vertical support. It drove me nuts and for the last year and a half I have been tempted to write my own.

I just grabbed the latest source and was super excited to see this has finally been implemented!!! This is great news for everyone! And since I'm here, I should provide a quick update since my last post.

Updates:

  • Working on the combat AI, it's going to be really primitive for the first release as I don't want to spend too much time on it. Basically, it finds the closest target and attacks it till it dies.
  • Added combat text, you know the damage/heal numbers and when attacks miss/are dodged. Still need to figure out how to get LibGDX make the motions smooth...
  • I've cleaned up some artwork and added the splash screen. You can see it below.


Next:

  • Need to get the world map into existence, did a little bit of prep work for it. I won't make it draggable or anything since I'm waiting for LibGDX to actually implement the drag methods on the ClickListener class... (I could do it myself, but I'll just wait)
  • Work on some of the class abilities, and hook it up to the action bar.
  • Get the AI to use class abilities.


Thoughts:

  • Debating if I want to use SQLite for storing all the enemy/story/quest/world information. Trying to see what java wrappers are good enough to use cross-platform.


Splash Screen!

Anywho, back to work for me!

September 4, 2012

Combatics Evolution

After having put out an initial deadline for September 10, I am starting to worry things will not be polished enough to do an early alpha preview. I am probably just paranoid, but I do not feel ready and I am worried about rushing it. Now, obviously this would be an early alpha preview so most features are not going to be playable. Right now, I have the sudden urge to be lazy so this is a great time to make a blog post.

The name of game is Combatics Evolution.

As far as I can tell the name is unique and nobody has taken it. Of course, I am still debating if I really like the name or not. It just feels a little bit too long for my tastes and usually people put 'evolution' in the name for sequels/etc.

Regardless, the game has had a number of sources for inspiration. The core mechanics of the game is sort of from Final Fantasy Tactics; however, I'm aiming for a real-time orientated combat system. League of Legends gave me a few ideas for combat/items/abilities but I could have picked a number of games and said the same thing. The main area I heavily expanded into was items, I wanted the feeling of an item hunt from Diablo, but being less random and allowing you to focus on getting the stats you want instead of simply rolling a dice over and over. The skill system from Diablo 3 intrigued me so I decided to mix it into the idea of a multi-class role system.

If you read that and are going WTF, well I don't blame you because until you actually see it, it isn't easy to explain. Unfortunately, I can not post any screenshots at the moment because I need to sort out my license agreements with some of the art work I am using. The down side to being a lonesome indie developer with limited art capabilities...

Initially I was thinking to create a simple website on Google App Engine to provide a download link and add some basic information about the game. However, I have decided since I'm constrained with time trying to polish things up for a public preview I'll just provide a link to a download from this blog. (I can just add a link to the side here). Yes, I'm being lazy!

August 29, 2012

Web Applications

In my quest to look for web hosting solutions, I came across Google's App Engine (GAE). It looks to be the perfect solution for hosting information and alpha/beta builds for the previews I want to do with the game I'm working on.

I'm very familiar with Amazon Web Services (AWS) but its actually funny how backwards it feels compared to GAE. First of all, Google gives you an indefinite free-tier where as Amazon only gives you 12-months. Mind you, Google limits things a bit more, but honestly for small little start-up projects the limits are very reasonable. Their approach is significantly more friendly than amazons and they're tool support integration actually impresses me slightly.

Put it this way, I can work simultaneously on the core game, desktop, Android, HTML5 front-ends as well as a hosting solution all from the exact same IDE. Best part is I'm working in Java across all platforms and can link code directly between projects. At this time I won't be creating the HTML5 front-end simply because there are some minor game-breaking issues related to it.

Access the source code of my game to load information about it to display it on the website? Why not?

GWT is pretty freaking awesome, not going to lie. I was looking into Lift, Cherrypy, Tornado... okay PHP as well... but really I can't argue with a Java environment and Lift is a bit overkill for what I need, so no point jumping into Scala.

The more I explore GAE the more obvious of a choice it seems... hopefully I don't encounter any nasty surprises with it, but I won't hold my breath.