resumed coding a game maker

in #codinglast month

I started working on a (2d) game maker again after a very very long pause. unlike making a game where you create images, possibly create a story line, create a nice gui, and very specific game mechanics. Ideally the game will be developed on a web browser, then uploaded to a blockchain in parts. I also intend to use it elsewhere possibly off chain. But that is a long time from now. The basic editor isn't complete yet, haven't started the process of saving to webstorage yet, nor the process of compiling the saved data, nor has the basic player interface technically been started yet.

Developing a game maker means you really don't have to care about what images you make, you don't need a story line-and initially you don't need a fancy gui. All you really care about is collecting and organizing data, and just about every game mechanic a developer would want.

Now it's not to say that creating a game is easy. Even Final fantasy created 35 years ago used some 937 sprites-many of them animated; just to demonstrate how tedious it is. http://www.videogamesprites.net/ . To be fair, many of them are the same thing just with different color schemes; here are 18 basic sprites that was transformed into 108. http://www.videogamesprites.net/FinalFantasy1/NPCs/Townsfolk/Men.html . The NES color pallete was kind of limited, so at least that limited debate about color schemes. OMG, everyone's white; Cancel japan.

Creating a story line isn't too bad. Super mario bros was trying to save princess toad stool, only to save a shroom instead until the 8th world. But certainly there are game with more complexity such as role playing games.

And that is the direction I am going with at the moment. Later I want to include standard and ccg card games and board layouts, but that isn't my focus. a ccg mechanically is about the same as an rpg, just less so.

I decided not to let uses upload images. If the content goes to a block chain, it is there permanently. That's not to say a dedicated person won't try to find ways to hack their own webstorage data or alter the data through javascript. Just a deterrent that could annoy future end users. Before I coded this week, I was able to make a 16x16 animated gif from my previous efforts. With tweaking, I can get larger gifs working. however, I'll need to rewrite the code to rotate say an 16x48 image 90 degrees. More work to do. Certainly fixing gifs is important. Also there is still an issue with some gifs not printing off the bottom line-Important, but trying to relearn the algorythm and manually trace the error could take a few days and I am not ready to do that just yet.

image.png
It's ugly, I know; Don't really care at this stage. Although I forgot to give the labels the correct dimensions [of 48x48; the dimensions are correct in memory], this is a simple gif maker using pure javascript; it actually creates an animated gif in base64 form-not just simulate one through javascript.

When I resumed the project I figured I had a total of 23 main categories of things [modules] to work on [excluding board games] on the editor. I've added 4 more, and temporarily commented out one as obsolete and considering a second. I keep adjusting the organizational structure particularly when I see it is premature to finish it . Eventually I'll put all the modules in menus.

As I get to closer to completing more modules, I have to go back and make sure that the higher level modules can access the required data. More than that, I also had to let go of my idea of what an standard rpg would look like as to allow the level of customization I wanted users to have so new modules became necessary to avoid, believe it or not, a more sloppy experience. In many cases I chose to seed the new modules with examples of what one might expect in games as to leave direction, and since realized it helps solved other organizational issues too; A status type effect doesn't have to be the familiar rpg "poison","sleep", stun", but it could be [mario] "jumping", "standing","running", "climbing", "dying", or just "1","2","3". Those optionally"descriptive states will be seen in class refined module [eventually], and a skin set can be assigned to each.

image.png

It's kind of like a rollercoaster. The more you advance, the more you have to step back. The more you look at the categories of what is about done except for [gui enhancements and] y, and keep moving ahead the more you keep having to ask what is the best way to implement this. More so because it is moving away from object dependencies, and more towards what are the event triggers and how to carry out the events....without letting a malicious developer introduce their own code. for equipable items, sure it is fine to assign say a minimum strength requirement. But at the present moment the act of talking to a character relies mostly on game progress[event] completions; What is the best way to have an npc give a custom message if you reached a certain stat level. Should the test be at the npc level and possibly create a conflict with the game event decision model, Should an npc be given a trait to use an alternative decision model, should a message box appear letting the gamer decide which message [which also means giving a title to each message] , should there be game event id locations dedicated to player stats, should the test be embedded in a message box properties. Perhaps more opportunities will reveal themselves along the way.

image.png
Even this is still far from complete. handles text well, but I still need to implement a system of telling it to print user stats and images. I'll work on the diction of accessing items near the end; when it is time to work on selection boxes. Not saying it was, but suppose a fight in the early final fantasy games was mainly interacting with three main selection boxes. The command box, and a box of monster images, and a box of allies.

One of the newer modules is user actions. Don't think of action as mario jump, but more like "talk" [to npc]. I have yet to implement them for a player class. But suppose the fix [which I will be adding] for now is to assign say "steal" to certain classes such as a classic "thief", but that skill has to be learned before it can be used [outside of battle, or possibly in battle in some cases]. That fix is not sufficient, and it would break my current idea of game [and map and chests] events progress ids; I may have to introduce player events ids. The to do lists just keeps growing just thinking about it; And in trying to get screen shots, I just learned that trying to load a save image back to edit still tries to call a 16x16 tile (not just a mislabel). I mean really; the image module is the very first basic module. It feels discouraging to see that, but there is kind of a need to get to the full hierarchy first to fully know what is required of the lesser tiers before trying to perfect them.

One of the newer modules yet to be developed is to extend the concept of player classes. This may also make me create yet another module called races. At the moment attack types, races, and defenses are in the same module. It may sound dumb to keep them together, and there are arguments that can be made either way. I think I know an easy solution, and that would be to include select boxes rather than separating the data. And I think that implementation could give me more fighting options besides the basic combat triangle [which I originally wanted to do before scrapping] and also the basis for a module to create more options besides the basic str/int/dex system, but it is going to be nasty to implement as it would dramatically change other modules. Although it is easy to create the idea of say a fighter class. There is of course an issue of gender; There are only two genders. I mean sure, someone could dress up a female npc as a male or vice versa, but there are only two genders I could have just left a developer to individually create a fighter_m class and a fighter_w class, and I suppose they still could if they wanted to account for or contradict the biological differences between the genders; And before someone calls me a bigot, suppose it was a race of spiders. I am assuming in this day, people would demand that women are just as powerful as men in terms of game play. And so the idea was to make this extension of the character class just to set various skins for various user defined game states. But keeping in mind older games, or even not so old, many fighting classes could each have a race assigned to it. And with that, why not also include race bonuses. Should say a dwarf fighter have a higher def state, or an elf archer higher dex, a harpy mage have improved evade against physical attacks. Speaking of which, sounds like I will need a module to define race/elemental type evasion by attack type. Suppose there was a way to implement nfts into this process; way too ahead of myself at this stage.

I have a general layout of defining items, though again many things will have to change-especially in regard to equipability. Some games may include a weapon [other armor, pets [not included yet]; and even pets can have armor in some games, and mounts [don't even want to begin]] that can gain levels and stats. I am at the point of being aware of it, I could extend the player class module to include equips, pets, level scaling monsters, and whatever else I wanted to level. But its more like I would have to deal with two separate item arrays. One your basic array of item number and item quantity, and the other an array of item objects that can no longer fit this simple model. Many games will also feature monsters that scales with player level, and I don't think there would be too much of an issue letting a monster feed off of the existing player class module.

As I chug along this week, I can see more and more how a 2d runescape could be made. Not saying the code would do that or anything close [at this stage, I am not doing server]. At this point, I haven't given much thought to xp other the two scenerios of: after winning a battle, does the xp all go to each survivor, or does it get split between them...oh, and how should it be issued to say an axe. Or if we jump to final fantasy 2 (nes); an axe skill level. Certainly, the character xp belongs in a player stat record. But in runescape, where would mining xp go. And so, as you see another module will be needed just to allow a user to define xp types-and whether the xp is at the player level or the character level or something else. Runescape also offers a different xp giving methods than traditional games; if you do damage, you gain xp.

What I am trying to say it is kind of easy making a [2-d] game if you have a understand the game mechanics and can implement a focused plan. There are many ways of coding things to work when all you really have to do is assign variable in memory and do whatever operation when required. I Can't say those ways are inherently wrong; they are probably inherently much faster programs too. In coding this, there is no focus planned. It's still storing data and performing operations on it as needed [albeit that is a part of it], but it is structuring so it can be used for all sorts of purposes. But the end goal is to make coding games easier so the average person can do it.

There is a chance I could put the project back in hibernation. Supposing anything I do ever makes money, I don't want to pay uncle sam so there is no rush to market until I am free [not to be confused with free as a bird] . I'd rather pay taxes in any pro-life country that will respect my rights and my ambitions in life; the exact opposite of this country. Also, I have homework to do, and mid terms next week. After tomorrow, I'll have to put up coding for a while....if I can. It will also soon be time to til the soil and plant seeds.

The optimist in me would like to believe I had 2 weeks left [ignoring classes] to get the editor done....until writing this. Some of the new modules I identified in writing this are just copy, paste, and edit-nothing too major. Now the optimist in me kind of believes one-two months for the editor, but obviously I kept let sliding the little things. More than likely it would be 3-4 months to finish the editor, but I could start working on another project soon.

Sort:  

I decided to suck if up, and add the desired user flexibilities even though that meant going back to ground zero for some modules. Although the basic combat triangle is seeded, that too is optional. So now instead of int you could raise your autism level if the game developer desired. I used somewhat of a runescape model of allowing attack equations to be modeled after categories of weapons as to avoid redundancy for a developer. In developing the system that determines [attack style] damage, I accidentally left a tiny bug of pulling out the wrong elements in an seeded stat array [hp, mp, str ,int ,dex ...] with a matching [0,1,2,2,2...]. Then I thought of ff6's atma/ultima weapon where damage depended upon hp-so I decided to allow the use of these other stats. The bug allowed an extra feature.

Also added an interface so a developer can choose how a level up based object will level up. I forget what module I put it in.

When I create the individual equips module, I can allow a little more optimization to the categorical approach. I Still need to create another module of allowing a developer to define state based defense, evade, etc. Should be a lot easier than the last one that had 3 dependency arrays [4 if I add images later for cosmetics]-I think this next one will just have one. Other than finishing off quite a few changes, I think i am going to have to approach the player class module from scratch. I already started it last night for the new customizable initial & level up stats, but I still have a lot of old stuff to purge in it and change a job more into a system of stat modifiers, abilities, what equip slots to allow, and what equipment categories. And I need to think more on abilities other than turn based npcs and simple actions on npcs like talk, fight, steal. As a seed I put in for xp things, I included an ice spell category [think ff2 nes, not in how horrible that combat system was;nuking your own heroes to gain hp and mp], and a fire resistance category, just for example. So an ice spell could level up, but I haven't decided how it might be implemented. With allowing different hp types, it should also be possible to assign objects different types of hp and certain weapons that deal different types of damages (oops, back to the drawing board on that last module-actually that could be saved by a selection box; and it also means in the future a question of what set of hp does it mean for an npc to die; and do they have to die to provide loot; can a npc have modular hp; a kill count before really dying; can an npc give different loot tables based upon how it died). I ask these things in view of runescape's harvesting systems. But I am still lagging behind in the mechanics of all the ways an ability can be learned, implemented, and restricted....without letting a developer introduce code.
As I said, got to climb up the ladder, then step down. I am still pretty low on the ladder.

I also need to give the equipment category table an attack speed too.

Congratulations @firstamendment! You have completed the following achievement on the Hive blockchain and have been rewarded with new badge(s) :

You distributed more than 20000 upvotes.
Your next target is to reach 21000 upvotes.

You can view your badges on your board and compare yourself to others in the Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP