Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length

 
Advanced search

1368046 Posts in 64191 Topics- by 56125 Members - Latest Member: Morgarten

October 20, 2019, 12:42:44 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsThe Tribute of Legends (Coop #NotZelda)
Pages: [1]
Print
Author Topic: The Tribute of Legends (Coop #NotZelda)  (Read 749 times)
Daid
Level 3
***



View Profile
« on: September 21, 2019, 12:23:09 PM »

So, I saw the #NotZelda tiles and sprites from our very own tigsource member xix (also known LunarSignals)

And I just have to make a zelda game from it. Now, I'm just a hobby game developer, mainly just programming, working in my few free hours in the evening that I have from time to time. But working with this art is proving to be really nice, as the quality is good and it's actually quite a complete set.


Now, my first goal will be to have the "classic" adventure mode, which will be close to the original first Zelda game. But with a bunch of tweaks here and there.

Also, because just another zelda clone would be just another zelda clone. And, there is already a bunch of those. I set myself a hopefully unique goal. I want coop play. Local coop and network play. And not just "2 players need to be on the same screen", no, everyone is free to roam around the map as they want, and as many players as you would want.
This gives all kinds of interesting issues to solve, like what to do with important key items that you can find. But that will come when I get there. First I need to get the basics to work.

I'm using my self created game engine. So lots of code from scratch. I've made a multiplayer game before, so I am not in completely unknown waters.


Now, back to the art. The art from xix is great. It also includes an example map from the first zelda game. Which is awesome, as I'm not that good in map creation. However, there where a few issues with this map:
  • It is only an image. The source is lost.
  • It uses different tiles then are in the #NotZelda pack, especially ground colors
  • Many tiles are layered, actually being 2 or 3 different tiles drawn on top of each other
  • The large image uses a different palette then the actual tiles
I've spend a few evenings sorting this out. Writing a script that processes the large image, and matches tiles from the actual tilemaps in there. There was a bit of manual work involved, matching the 900 different unique tiles. But the end result is there:

Got the whole map now, loaded and chopped up in Tiled.
It needs some minor corrections here and there, but that is fine. As I need to add enemies, caves and stuff as well on each area. So I need to go over each area anyhow.


As getting the full map processed was a bit of chore, I've also worked on the code side. A lot of it is actually preparation and making sure it works later in both network and split screen modes.


Quick recording of the current status:
Sorry, this gif is way to fast, something went wrong with recording the delay between frames... just don't blink! Shrug
And sorry that it is so large.



As you can see the cave contains darkness, and is lit by fire. Very happy with that effect. Also, basic sword attack works and very simple enemy starts to work as well. (I had some old code that I could copy) The HUD is already showing, the coin next to the sword is actually a placeholder for the button that is bound to the sword.


The gif doesn't show the map screen transitions, but you can walk to other areas and the screen scrolls then. This was actually  a lot more complex then you would think. Because the old area should still exist for other players that might be there, and the new area might have players on there already. So there is all kinds of on-demand loading and unloading happening, and multiple areas existing at the same time independently.


That's it for now. I'll show some actual split-screen mode working on my next post. But now I will catch some sleep.
« Last Edit: October 09, 2019, 11:53:51 AM by Daid » Logged

Software engineer by trade. Game development by hobby.
The Tribute Of Legends Devlog Co-op zelda.
EmptyEpsilon Free Co-op multiplayer spaceship simulator
Daid
Level 3
***



View Profile
« Reply #1 on: September 23, 2019, 11:13:14 AM »

Fixed the screen recording speed. Note that I build this directly into my home grown game engine: https://github.com/daid/SeriousProton2/commit/a3f0ca336da633d045ebfdb954321458a46ce69e
I've also reduced my window size a bit so the images no longer are larger then the forums.


Quick showoff of 2 player splitscreen, and the first dungeon areas. Ignore the enemies and the chest, those are not loaded from map data but are just added for testing.

You can see the old area disappearing after the scroll is done. I will clip this off at some point. But right now it's not my main priority.
Same for the water walking, water tiles are marked as water, but collision isn't setup for those yet. But water has the added complexity of the raft and ladder items.

Which brings us to items, only the sword is sort-of implemented. So lots of work there as well, as there is about 10 usable items. And I guess just as many items that indirectly affect things like keys and other key-items.

Also, I've checked which zelda 1 enemies I can map to the graphics that xix made. And, I'm a few things short:

Or, better put, I have about half of them covered. But enough to get started and worry about the rest when I get there. Biggest missing is something for the octorock, which is pretty much the first enemy you encounter. But on the other hand, I have 4 versions of the Moblin. So I think I will just use those.
Same goes for bosses, 5 larger enemies have been made by xix. But the legend of zelda features 8 bosses (well, 7 and 1 is only used as miniboss)

Oh well, I'll start with what I have, and solve the rest if I ever get there...
Logged

Software engineer by trade. Game development by hobby.
The Tribute Of Legends Devlog Co-op zelda.
EmptyEpsilon Free Co-op multiplayer spaceship simulator
Daid
Level 3
***



View Profile
« Reply #2 on: September 27, 2019, 12:16:44 PM »

Ok, my goal for now. Is getting the first dungeon completely playable.

I've mapped out the dungeon in the tilemap editor:

Still misses enemy placement, and a few key items like the map compass and bow.
Got key doors and "all enemies killed" doors implemented in the backend, pretty happy about that, doors are always a bit tricky. Note that I see bombable walls also as doors, they just require a different type of key.


Now, I figured I didn't want to make a 1:1 copy of Zelda1, there is the "zelda classic" project for that. I want to modernize a few things, fixing a bunch of "flaws".
So I will:
  • Make keys unique per dungeon. Zelda1 had a global key counter, so you could use keys for one dungeon in another dungeon. Some dungeons even had too few keys to complete them requiring "external" keys.
  • Add the big/boss key that you need to get to the boss.
  • Make the "key item" that you get in each dungeon a requirement to finish that dungeon, for example the bow can be missed in the first dungeon, and isn't required till dungeon 5 or something in the original.
  • Add little things like chests instead of just items on the floor
The whole keys unique per dungeon thing is interesting, I wrote some python code to validate if a map contains no soft-lock conditions. I was a bit worried that it might be too difficult to test, but I think it's doable as you just need to validate a single dungeon, so the amount of "which door do I open with this key" choices are limited.



But, to get dungeon 1 working, I just need (in random order)
  • Inventory system working, so you can collect keys and the big key, as well as the bow.
  • Chests to function properly, giving the item, remembering that they are opened, showing what they gave you
  • 5 different enemies, instead of just the 1 placeholder I have. And a boss.
  • "push block" to open a door logic
  • enemies that carry an item
  • Inventory menu with item selection so you can activate the bow
  • Fix water tiles having collision
  • Fix entering a door that closes behind you
  • The dungeon map
  • The dungeon compass
Logged

Software engineer by trade. Game development by hobby.
The Tribute Of Legends Devlog Co-op zelda.
EmptyEpsilon Free Co-op multiplayer spaceship simulator
Ishi
Pixelhead
Level 10
******


coffee&coding


View Profile WWW
« Reply #3 on: September 27, 2019, 02:06:53 PM »

Interested to follow this project, the idea of a fully multiplayer Zelda is a nice one. Am curious to see how you will solve the things you mentioned like handling ownership of key items and whatnot, when you get around to it. Good luck! Coffee
Logged

Daid
Level 3
***



View Profile
« Reply #4 on: September 28, 2019, 12:45:23 PM »

Interested to follow this project, the idea of a fully multiplayer Zelda is a nice one. Am curious to see how you will solve the things you mentioned like handling ownership of key items and whatnot, when you get around to it. Good luck! Coffee
Well, it is an interesting problem indeed. And I've already given it some thought.

I think there are a few different types of key items:
  • Single use. Gone after using. The normal keys are the prime example of this, but there are some other examples. The thing that needs to be unlocked is gone after using the item.
  • Multiple use item. You keep after using. But obstacle is gone. For example bombable walls require a bomb bag, but after using it the wall is gone forever.
  • Travel item. You need this to pass an obstacle every single time you arrive at it. Zelda1 example is the ladder and the raft. In later games the hookshot is prime example.
  • Non-essentials. Upgrades that make you better/stronger, but are not actually required. Like health upgrades, sword upgrades, optional weapons.

And I think these 3 require different handling. But before I get into that. I need to explain something else first. And that's different multiplayer styles. I think people play 2 different types of "coop" game. And I think I can best call those "buddy" and "party".

Buddy: In a buddy style game play, you and your friend(s) start a game. And solve it together, clear example of this is the 2 player multiplayer in portal 2. And 2 player multiplayer in Commandos 2 (which I think many people didn't even know exists, but is awesome).
Most easy distinction is, you wait for each-other and work closely together. And generally all players are pretty "hardcore" gamers. A single save game is always played by the same group of people. Progress is generally done together, working together.

Party: In a party style game play, people just join casually. Not everyone is as dedicated to the play. People might join/leave the game during the session or not be available for a next session. People just want to play together, that's the fun bit. Difficulty and thinking is less important.
Borderlands and Magicka have this style very clearly. Progress made by anyone counts for the whole group, and progress can be made by anyone. Most Wii style party games fall in this style as well.



Note that I think both styles are fun. They just require different people or different moments.



So, for the both different styles of play, things might need to act differently.
Buddy
For a "buddy" style game, all players having their own items could be fine. And travel items and non-essentials should just be collected-able by everyone (example, a chest contains the bow. And everyone can grab 1 bow from there when they visit it). But multi-use items might not be gained multiple times and must be traded or used by the person who has it.
And non-essential upgrades could be a 1 time deal, requiring you to share and think who gets what.

Party
But a party style might be more suited for a shared item pool. Where if one person collects an upgrade or key item, it's available for everyone. Speeding up progress and requiring less working together and more "bashing forwards".
Available for everyone can still mean different things, it could mean a direct upgrade for everyone. Or that you maybe you can collect it from the starting area as well after it was found.



For my TheTributeOfLegends, a clear distinction will be, in "Buddy" style the game won't really start till all players are ready. And if someone leaves the game needs to pause, as he/she might have a key item that would be otherwise inaccessible. While in "Party" style, joining and leaving could be done at will, allowing for more relaxed setting up and playing.


(And that's more then enough text without pictures for now, as for progress. I can have keys now, per dungeon. But still need to make the chests function properly. And no inventory screen yet. Progress is slow)
Logged

Software engineer by trade. Game development by hobby.
The Tribute Of Legends Devlog Co-op zelda.
EmptyEpsilon Free Co-op multiplayer spaceship simulator
JobLeonard
Level 10
*****



View Profile
« Reply #5 on: September 29, 2019, 02:50:40 AM »

There has been multiplayer Zelda before (four swords), are you stealing any ideas from that?
Logged
Daid
Level 3
***



View Profile
« Reply #6 on: September 29, 2019, 12:06:27 PM »

There has been multiplayer Zelda before (four swords), are you stealing any ideas from that?
While Four swords and Triforce Heroes are nice and interesting games. It's not the result I want.

Mainly avoiding ideas from that... because:
  • Linear progression. No picking your own route. No sequence breaking.
  • No permanent upgrades. Each level it it's own mini game.
  • No inventory, just 1 item slot next to the sword.
  • Fixed number of players.
The communication system from triforce heroes is a nice touch however. But the games are focused around the multiplayer "gimmick". I want a more classic zelda experience with multiplayer mixed in it.


As for progress, tiny bit:
Sometimes the simple things really are important:

Not perfect, but good enough for now. Showing what you get from a chest is kinda important.
It also remembers that you opened the chest now, kinda important :-)
Logged

Software engineer by trade. Game development by hobby.
The Tribute Of Legends Devlog Co-op zelda.
EmptyEpsilon Free Co-op multiplayer spaceship simulator
Daid
Level 3
***



View Profile
« Reply #7 on: October 02, 2019, 04:45:00 AM »

As stated before, I'm going to tweak the dungeons a bit. The keys will be dungeon specific, and I will add a bigkey that is needed for the dungeon boss.

This adds the risks of making dungeon maps in a way that they can never be completed. Or, can no longer be completed if you use the keys wrong. So, I did what I do best. I wrote code.

My test script now reads in my room definition files, and builds this graph:

Room "2-5" is the start room of this dungeon. And as room "1-5" and "3-5" are directly connected to those, this is merged into a single node in the graph. In these 3 rooms, you can collect 2 keys. And you need 1 key to unlock the next 4 rooms. From there you can use a key or bombs to continue on.

(Room 4-1 contains the boss and 5-1 the dungeon treasure, but that's not marked on my data files yet)


Now, this is all great as a first step, as it shows how the dungeon is structured. But my script goes 1 step further. It tries to explore it in every possible way. For example, in this map there are actually 7 different ways to go trough the map if you do not have bombs. And 21 paths with bombs. Many of those paths have overlapping states, but none of them get stuck at any point and make the map unsolvable.

It's just a brute force, try everything test. Nothing clever, but due to the limited amount of possible paths, that is fine. I do wonder what will happen on the larger dungeons, but anything less then a few 10000 paths is easy to brute force.
Logged

Software engineer by trade. Game development by hobby.
The Tribute Of Legends Devlog Co-op zelda.
EmptyEpsilon Free Co-op multiplayer spaceship simulator
julcreutz
Level 0
*


View Profile
« Reply #8 on: October 03, 2019, 05:18:39 AM »

Looks really cool! I've always wanted to create a romhack for NES Zelda to make it multiplayer haha.
Logged
Daid
Level 3
***



View Profile
« Reply #9 on: October 04, 2019, 01:01:30 PM »

Looks really cool! I've always wanted to create a romhack for NES Zelda to make it multiplayer haha.
All the artwork credits go to xix. I'm "just" wrapping code around it.


Got all kind of weird unfinished progress now. For example, bombs can be placed, explode, but have no explosion animation. But that did allow me to test the bombable walls (which work almost the same as doors)

Got 4 different enemies now, skeletons, goo enemies, bats and these skeletons with swords that attack you:

Ok, I said, unfinished progress. The sword does not actually hurt you yet.
But chests can now spawn properly after all enemies are killed instead of always being there.

Enemies are scripted, so that took a bit of work to facilitate that, but it speeds up working on enemies after that. Unless, I need some new feature exposed to the scripts. Which is pretty often in the early enemies.

Current plan:
  • Make this enemy attack actually damage you
  • Implement the bow weapon
  • Add a boss, so the first dungeon is "complete"
  • Start adding network multiplayer related code. As I prepared a lot of things for this, shouldn't be a god impossible amount of work.

So the first big goal will be a network multiplayer enabled first dungeon. Sounds like a big goal, and it is. But it's an important milestone to reach to ensure the project is viable for me.





Also, completely random. I've been thinking about something. It would be nice if you could trade items, so that key items that are in limited supply can be exchanged. That made me think 1 step beyond that. What if you could trade heart containers?
This means if a good player joins up with someone that is not so good of a player, you could trade away a few heart containers and balance it out a bit more.
Even at the start of the game, where you both start with 3, you could trade 1 away and have a 2 vs 4 hearts.
I'm not sure if this would work in the end, but it's an interesting thought I think.
Logged

Software engineer by trade. Game development by hobby.
The Tribute Of Legends Devlog Co-op zelda.
EmptyEpsilon Free Co-op multiplayer spaceship simulator
julcreutz
Level 0
*


View Profile
« Reply #10 on: October 05, 2019, 10:24:30 AM »

The trading part sounds really interesting! I'm looking forward to the multiplayer
Logged
Daid
Level 3
***



View Profile
« Reply #11 on: October 09, 2019, 11:53:32 AM »

So... I took some time to see to the multiplayer code. Yeah, change of plans, but that happens. I was just itching to hard to start working on it.
It's a bit hard to capture, but it works:

My commit log the last few days is pretty much "more multiplayer fixes" on repeat. One of the larger changes required was actually in the background tiles. I wanted the server to tell the client what to render, but these tiles are multi-layered made from multiple images. So sending that all from the server to the client properly required some thinking work.
I wanted to make sure this is controlled from the server, to open the door for custom maps or even procedural generation.

Still a lot of improvements to make. But the basics work, walking, attacking, going to other map areas, opening chests. And the enemies are working as well. Few minor glitches, but overall it works quite well.


Bonus screenshot: 8 local players, for, when you have too many controllers or something Smiley



Know how your todolist grows faster then it shrinks?
  • Level 1 boss
  • Special room where you collect the bow
  • Dungeon treasure
  • Player death and respawn
  • "Join game"/"player setup" screen
  • Proper random item drops from enemies
  • Dungeon map
  • Dungeon compass
  • Sword pickup in first cave
  • Text messages when opening chests (including "you already have this item")
  • Inventory menu
  • Saving/loading
  • Overworld enemies
Logged

Software engineer by trade. Game development by hobby.
The Tribute Of Legends Devlog Co-op zelda.
EmptyEpsilon Free Co-op multiplayer spaceship simulator
Pages: [1]
Print
Jump to:  

Theme orange-lt created by panic