Okay so I rushed the completion of the game so it wouldn't bother me by school start.
90% of development time was killing slimes for sticks.
The golden rule of all game development is every new feature is shitfaced broken in a hundred different ways until you've tested it... a hundred different ways.
Hence I've been killing so many slimes.
Looking back... What would I do differently if I were to start from scratch?
Firstly, I refactored the inventory system so many times, and it needs another refactor now actually. I would have saved days of work if I pre-planned with class diagrams 'n' shit.
I would have took off some time to build some tools to help me test things faster, such as giving items in the inventory by having a cheat menu or something. I should've also split all business logic from the visual representation so I could automate testing. That would've saved so much time. Especially for testing balancing the exp gains/costs..etc...
Even tho the game is complete, I'm a little bit ashamed I will actually refactor stuff for fun. Gosh, that's so nerdy. But I can't help myself. Neatly knitted systems are so satisfactory X_X
Anyway, I hope the game will be enjoyed. I sure enjoyed making it.
As the summer is coming to an end, I've been rushing to finish the game. It'll probably be published here on Newgrounds tomorrow. I reached a bottleneck when it came to world-size. Expanding the world would require a refactor, which I don't have time for right now.
The main problem right now is that scene managment is run by strings, so renaming shit would requrire lots of labor. Save data is string based, which in turn is pretty unstable. Making a massive singleplayer game would require secure data.
Other than that I think the system is fairly robust and expandable. I'm going to look into mobile opportunities, as well as revisiting multiplayer options. I think it would be cool to have a marketplace area that's multiplayer. I also have in mind to redo the world system so it's split into nodes, and then possibly make my own heightmap thingy in 2D...
I'm less than a month away from updating a big update to the game. I hope Newgrounds is okay with me releasing it as a new game, so more people will see it.
Major changes: Been working on fleshing out the content of the game. That means, many more interesting quests with somewhat storyline, NPCs, monsters and items. Noteably magic and alchemy is much more useful.
Instead of one giant world, I've decided to split up the game into several "Levels." You travel to them via NPCs, portals, etc transportation devices. Splitting up scenes was easier said than done X_X - but in the end, this saves memory and allows me to have a bigger scope of the project - even if I'm going mobile.
Durability on items. Whew, that had me refactor the entire system. Easier said than done.
*Removed the minimap - it wasn't very useful anyway.
- I hope I can find an artist can help me to create a fancy world map.
- Finish fleshing out the world and quests - increasing the game's length
- Different music for levels maybe
If Henry Ford asked what people wanted, they would've told him they wanted faster horses.
Game designers are faced with the same problem. When you ask for feedback for your game, don't focus on what they're suggesting, focus on why they suggest it. As a game developer, you have a better understanding and power to completely redo mechanics that players would've never thought of. If you know WHY your game is interesting for players, and if you focus on WHY people are suggesting thing, it's much easier to find out what to change, who to listen to and whom to ignore.
Henry Ford did not try to make horses faster, he focused on why people want faster horses, so that they can travel faster. So he invented cars.
Been done with my exams, now I've been working on my game!
I've been working on the general look and feel of the game, adding more things to the world to make it feel more alive.
Other things I've added:
A tutorial that reveals first the inventory, the quests and then the stats menu, so the player donesn't get overwhelmed.
A bunch of items and details to the world such as cartwheels, mushrooms, birds flying up in the trees that fly away when you hit that tree, bunnies that steal the carrots on the ground, hedgehogs that do hedgehog stuff, etc.
Item stacking, now items can stack to a certain amount depending on what type of item (yay)
Magic wand that autofires magic missiles.
New dialog UI
Next: I will continue fleshing out the world, make much more interesting quests, items and abilities.
Autumn semester been busy, this semester not so busy, got time to work on this.
I dropped the multiplayer because I will not be able to make it actually work right now. I'd rather make a decent singleplayer game than a crap multiplayer one, and if I follow good practices I will be able to easily convert it to multiplayer again.
I've been real busy with working out the nit-bits of each little mechanic of the user experience when it comes to interacting with items and stuff in the world.
To craft you can either drag an item on another, or right click, select use, and the click on another item, or right click on the other item and select the crafting option.
Smoothed out the combat, feels pretty good now.
I think I am close with finishing the core game mechanics for this iteration. Then I will add content, add the menus and figure out saving data, add achievements integrated with Newgrounds and then do the art and graphical design.
I will release a simplistic version of the game for general feedback, etc. And then I will re-release the games multiple times with more contents.
Been a little uninspired to make a progress post due to my computer broke down and I haven't been able to make a lot of progress as I'd like. But regardless:
I went with a whole different world design... players can move up and down, left and right as they please.
Skills, gaining exp, leveling up.
You can equip any item as of now. Cuz why not.
New items to interact with: Anvil, furnace, different types of ore.
Attackable NPC. Players can also fight eachother. Players drop items at death.
Adding furnace recipes and anvil recipes is done via inspector in Unity. Everything is handled automatic. What took 10 minutes in flash takes 1 minute in Unity.
Doing the ground work takes longer in Unity, but it will be possible to make a lot of content, fast, when I'm done.
This is how I edit the world, I have made a custom inspector that visually displays the spawn range of each item. The spawn range is also the area where the NPC spawned is to wander.
Yeah doing weekly updates.
So far: Mutliplayer is going good and is more or less non-buggy now. Players can chat, run, crouch, change colors of their heads... all working good and dandy. Seems like making the game for MP was a doable challenge. However, the main challenge will be to make the game handle big servers and actual MP problems like cheating. I will need to figure out how to split up the servers. So maybe I will have to rent a couple servers that can hold like 100 people. Another challenge in front of me is optimize the game so the client only retrieves information from the server that it actually needs. (things in a certain proximity.)
I'm aiming for a highly-scalable game. In comparison to Kingslayer which was holding barely by a thin thread. Which brings up a dilemma in game design...
I have made the camera follow the player horizontally, so the "area" is much bigger. However, I can't seem to figure out how to handle the world itself. If I were to do it like I have in Kingslayer1, I would want to design a system in Unity that allows me to make areas much easier, like:
This would be the most complicated approach. And it would be hard to make the world look artistically beautiful. However, despite the hard work of setting it up, creating and managing the game would be easier. By splitting areas like this it's obvious to know what information is relevant. (client/server)
Another approach would be to have the entire world as a stretched out in one area. And to make transportation not amazingly boring, I would have quick-travel points around the world. This is slightly more "realistic" than the method above. And it makes more sense of a "physical world."
Lastly, scrap the original Kingslayer1 world design and have the player move up and down as well, and travel to another cave layer. This gives a perfectly realistic sense of the physical world. Maybe use Minecraft's chunk system to manage resources. By using Unity's new sprite drawing tools I can make the world pretty easily. Adding enemy spawns, adjusting their spawn range and walking range, and much more, in a visible scene!
+overground2, overground3 ... etc, for second floor places in houses for example.
The problem by doing this, however, is I would re-think graphics. I would need to spend much more time on animations such, if for example, rooms in houses were physical space instead of a new "area."
With so much time spent going directly up and down, I feel I must draw animations for going up and down. And this crashes with the gameobject-hiarcy-animation system I have. And I would be forced to use sprite animations. But that doesn't compliment the way I want do handle equipment and character customzing. I could go 3D mode and have it a isometric game, but I want to stick with 2D on this project.
So what I can do instead, is limit players to walk on paths, and avoid the paths being directly up and down IN LONG DISTANCES ... that way I can get away with not having up and down animation.
Houses would be sorta funky... I guess I will have to live with that. I would also need do some pathfinding. Hopefully Unity has some prepared goodies for me to do that :/
So, a way to deal with buildings is to have different views on clients, depending whether you are inside or outside the building. The player walking inside the house would still be at the position in the world of the actual house, but the view is different. This could actually work, but the main problem is that it's a funky hack. On Client 1: the space of the house on the Y axis is walkable floor, like the rest of the game. But on Client 2 the space of the house on the Y axis is HEIGHT ... so, the Y-axis have two different meanings depending on whehter you're inside or outside. I don't know if I like that.
Adding items to the game is very easy at the moment. All to do is create a new item prefab, add any sprite and type in an ID.
All items has the same sprite size, and will resize automatically. So any sprite with any size fits. Todo: IDs will be assigned automatically in the future.
I have created an inventory and crafting system.
Items will behave like I originally wanted to in Kingslayer1, but couldn't, due to techical incompetence. Each item picked up is it's own slot in the inventory, instead of the same type of item is stacked up at one slot.
Items can be freely dragged around and can be dragged on each other to craft.
Creating crafting recipes is very simple now. No code required.
Items can also be dropped, by dragging the item outside the inventory.
I have been experiementing with multiplayer! It's kind of buggy right if join multiple games in one session, but right now, after a lot of headaches, It's very functional. Players sync up properly and items are synced up.
It will be exciting to see if I'm going to continue to make this for online. It's definately a challenge, but it's a childhood dream of mine to create an online game!
I have completed my first year taking a game programming bachelor.
I have now a greater understanding on object orientated programming, as well as some knowledge about Unity.
I will now re-make Kingslayer in Unity.
Looking back at the way I did it in AS2, I now cringe on how hard I made it for myself to add new content.
If I wanted to make a new weapon, for instance, I would have to:
- Draw the sprite (duh)
- Edit the main code in like eight different places, which are scattered over 5000 lines of code
- Edit code in the smithing code.
- Manually adjust an icon for the item
- Add a new button in the smithing menu
- ... and like sixteen other annoying things.
Making the Mithril armor/weapon set took an entire day and more.
If I do it correctly in Unity, all I would have to do is:
- Draw the sprite
- Create a new Item prefab and set all the propertiers in the inspector panel
- Create a new Anvil-Recipe prefab and set the propertiers in the inspector panel
With this system, making a new armor/weapon set would be a matter of quick copy pasta and the only labor would be editing the names and the recipes and requirements in the inspector panel. If I'm fast that would take less than an hour.
The Unity version will be made with a fast resizeable and expandable approach right from the get-go. It will probably end up having much more content than the Flash version.
I will make an update blog in a month.