Java-Gaming.org Hi !
Featured games (90)
games approved by the League of Dukes
Games in Showcase (753)
Games in Android Showcase (228)
games submitted by our members
Games in WIP (842)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  [Libgdx][Akka] TAnima- mmo rogue-like  (Read 1143 times)
0 Members and 1 Guest are viewing this topic.
Offline ByerN
« Posted 2018-04-09 11:27:41 »

TAnima

Goal
S-F MMO rogue-like with dynamic action, unforgettable experience, satisfying cooperation and big dose of humor

Gameplay
  • Player is starting the game in Hub (town) at the first floor of tower (TAnima)
  • Hubs are safe places where player can meet other players, NPCs, refill backpack, party up with others before going for the adventure. PVP/PVE is prohibited here.
  • Player's goal is to move through all floors of the tower, collecting items, getting experience, fighting monsters along with other players divided into parties
  • Dungeon party size is limited (or dungeon is scaling along with party size- to decide)
  • Player collects titles and glory points along with major achievements (killing boss, clearing dungeon)
  • If player dies, his character is reseted and spawned again in the starting hub
  • Titles and glory points are not lost after death
  • If player (alone or with team) finishes dungeon, he is able to go to the hub of the next floor
  • Glory points can be exchanged for vip content (skins for example)
  • Player can buy glory points
  • Game is preety hard and fast. It's easy to die and play again. Player skills and knowledge are important for being the best in this game

Technology
Client - Libgdx/Java/Scala
Server - Akka/Scala/Java/Libgdx-AI

Newest look
<a href="http://www.youtube.com/v/k0ua5YeQ5WU?version=3&amp;hl=en_US&amp;start=" target="_blank">http://www.youtube.com/v/k0ua5YeQ5WU?version=3&amp;hl=en_US&amp;start=</a>
<a href="http://www.youtube.com/v/9W-AM5aGnvQ?version=3&amp;hl=en_US&amp;start=" target="_blank">http://www.youtube.com/v/9W-AM5aGnvQ?version=3&amp;hl=en_US&amp;start=</a>
<a href="http://www.youtube.com/v/ZocFkwFska0?version=3&amp;hl=en_US&amp;start=" target="_blank">http://www.youtube.com/v/ZocFkwFska0?version=3&amp;hl=en_US&amp;start=</a>

Dev Vlog
I am documenting progress on youtube. For now i am trying to fit daily basis Cheesy
If you are interested in watching TAnima development progress, please check devvlog below and/or share/subscribe my YT channel! Smiley
VIDEO: First runnable dev-version
VIDEO: Weapon effects added
VIDEO: Basic AI (state machine) added
VIDEO: Basic game-feel hacks
VIDEO: Shield for defending aganst attacks
VIDEO: Level decorators and walls contour added
VIDEO: Attacks stamina usage
VIDEO: Pathfinding, room patterns
VIDEO: AI Behavioral Tree
VIDEO: First boss added
VIDEO: Lighting
VIDEO: Shop and EQ
VIDEO: NPC and texting
VIDEO: Jumping and falling
VIDEO: Client-Server
VIDEO: Action puzzle
VIDEO: Local objectives
VIDEO: Dungeon instances
VIDEO: Making of TAnima logo
VIDEO: In-game tutorial (scripting)
VIDEO: Shop and crowdfunding
VIDEO: Trashy the garbage collector Cheesy

I'll be really thankful for your comments and support in development. It will be really helpful! Cheesy
Offline Springrbua
« Reply #1 - Posted 2018-04-11 14:59:24 »

Very nice style, I like it  Cool
How long did you work on this game until now?
Offline ByerN
« Reply #2 - Posted 2018-04-11 23:19:52 »

Thank you Smiley It is about a month of development after my working hours.
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline SolitudeGaming

Junior Devvie


Medals: 4
Projects: 1



« Reply #3 - Posted 2018-04-11 23:47:59 »

Looks very nice Cheesy
Offline Springrbua
« Reply #4 - Posted 2018-04-12 06:03:05 »

You only needed 1 month for this, even if you only work on it after working hours?
I am currently working on a little game too, however I can't motivate myself to work on it every day, so the progress seems to be very slow...
So respect for that!
Offline ByerN
« Reply #5 - Posted 2018-04-12 07:11:21 »

Thank you Cheesy At start, the progress was rather slow. I didn't know how to find motivation. That was the main problem. In my job I've found out agile patterns really effective. I wanted to use something like this but dedicated for one person team.

So I do following sequence every day:
1 (BEFORE SLEEP). create short backlog with few features to add (if exists, add few more). Features has to fit one day long work and can't overwhelm you. So they should be easy. Never let your backlog be empty. Don't waste to much time on thinking about design. It's always changing and you will get better idea later,
2. at the end of the day, get something from your backlog and decide to do it tomorrow. It's important to not do this at the day start. At the end of the day you are tired enough to make quick decisions and in the morning you already know what you have to do.
3. go sleep,
4. wake up, work on game for few hours (feature selected yesterday from backlog)- you are very effective in first hours after waking up, don't waste it,
5. go to job/life,
6. meet friends/free time,
7. work on game (you have to finish your task before end of the day),
8. document and publish your work. Videos are fast and easy.
9. watch a video with a result of your work (and comments if there are any). Game is not satisfying for you, but you see it going better everyday. That gives you motivation.
10. Back to 1

Programming:
- User some version control (I use git). Do commits often. Always after finishing atomic change. Your game has to compile and run on each revision. Sometimes you need to just drop for example 1 hour of your progress to go other way
- If clean coding takes too much time somewhere, do it dirty. You will refactor it later (when you need it or when you can't look at your ugly code anymore)
- Make use of TODO comments in code. It's easier to find what you need to do. Usually your IDE is supporting searching of todo comments
- Don't waste to much time on graphics/view but don't forget to work on it over time. At start I was working with just rectangles with text describing what it is. It's not that good because you are losing motivation if you watch only the placeholders for a long time.
- Always have fun. I've spent 15 minutes yesterday to set animation speed of main character to fit shopkeeper from crypt of the necrodancer. Why? To watch them dancing together xD

Maybe it will be helpful for someone. Finding motivation is a hard thing Smiley

Maybe some of you got more tips and would like to share it? Cheesy
Offline Springrbua
« Reply #6 - Posted 2018-04-12 08:18:50 »

I started using a Todo-App, in which I write down some kind of backlog.
As you said, it is important to keep a backlog, because if not, you have to think about what to implement and that causes your motivation to go straight down.
Working on the game in the morning sounds like a good idea, but I don't think I could keep that up Cheesy
My biggest problem is, that as soon as i face a problem, which takes some time to fix, I loose motivation and go back to play games instead of making games.
Offline meva

Senior Newbie


Exp: 3 years



« Reply #7 - Posted 2018-04-12 20:48:41 »

Hi,

Looks beautiful:).
I like the rocks on the ground which move when you shoot.

It's amazing that you could done it within only one month!

I'm also developing a game after work hours, but the progress is very slow.
I can only spend less then an hour a day late evening, so I am tired and not very creative.
It is better to say how many hours did you spend working on your game.
In my case, I started around 4 months ago, so here are my calculations

122 (days) * 1 (hour a day) * 0.7 (not every day I can work on the game) * 0.7 (some preparing issues)

So it gives roughly 60 hours.

I think your rules are really helpful. I have to try them once. Maybe my progress will speed up.
Offline ByerN
« Reply #8 - Posted 2018-04-12 21:15:04 »

Thank you guys Smiley

Skillful dirty coding is helping with avoiding stucking in hard problems. Next morning, these problems seems to be trivial and it's easy to fix/refactor it.

Working on game takes me around 4 hours daily. Exception are lazy weekend days (without any distractions like life or something) where it looks like 8hour (1 md). I take breaks often to regen. These breaks cannot be like watching tv because it is making me lazy. There are many little things that are helping in long working (like looking through the window from time to time to avoid headache). The most important for me is to always achieve my daily goals. It helps a lot with motivation problem.

Thanks and let me know if it was helpful Smiley

Offline ByerN
« Reply #9 - Posted 2018-04-13 18:12:30 »

Added multiple things (see devlog):
-shop, equipment, torch, health potion, secondary item
-npc and text messages
-jumping, abyss (instadeath floor which you can jump over)

What do you think? Smiley
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline ByerN
« Reply #10 - Posted 2018-04-15 15:09:59 »

Game has been splitted into server and client. It's possible now to run multiple players Smiley
Offline ByerN
« Reply #11 - Posted 2018-04-17 18:58:55 »

Added local objectives (video Smiley)
Offline ral0r2

Junior Devvie


Medals: 2



« Reply #12 - Posted 2018-04-19 12:51:01 »

Guess you have to be quite experienced in libgdx and networking? To pull all this off including multiplayer within one month must require some experience Cheesy . Good job, thanks for sharing this with us.
Offline ByerN
« Reply #13 - Posted 2018-04-19 14:36:06 »

Thank you! That means a lot Smiley

I am working on networking all the time as backend developer in my job. Few years ago I was making some simple games in libgdx so I knew this lib a little Cheesy


I've just added in-game tutorial along with NPC scripting. It will be launched at start for new players. (see video Smiley)
Offline meva

Senior Newbie


Exp: 3 years



« Reply #14 - Posted 2018-04-21 21:44:09 »

Hi, maybe I missed something, but where can I find a playable version of your game?
Offline ByerN
« Reply #15 - Posted 2018-04-22 00:24:52 »

Hi. For now it's not released. Waiting for more content. I think that it will be good enough in 3 weeks for early demo Smiley
Offline meva

Senior Newbie


Exp: 3 years



« Reply #16 - Posted 2018-04-22 19:50:19 »

Great!
 Grin
Offline ByerN
« Reply #17 - Posted 2018-04-22 21:06:46 »

I've started making town (per floor hub for all players). Today:
-shop- shopkeeper filling empty item slots in his shop according to actual item pool
-junkyard- where you can sell your items and donate for better items in the shopkeeper's pool

(check video in presentation)

What do you think? Smiley
Offline ByerN
« Reply #18 - Posted 2018-04-23 17:53:02 »

Trashy added Cheesy (see video in my post)
Offline ral0r2

Junior Devvie


Medals: 2



« Reply #19 - Posted 2018-04-23 20:11:44 »

TAnima

Technology
Client - Libgdx/Java/Scala
Server - Akka/Scala/Java/Libgdx-AI


Would you mind telling a little bit about your netcode (client / server interaction)? How do you handle client side prediction?  Is there a certain reason you decided to use Akka and Scala and what parts of your server are in Java and what in Scala? Are you planning to release a master server or will every player be able to host their on games? In case everyone is able to host their on games how are you going to deal with portforwarding? Sorry for all this questions, I'm just curious Cheesy
Offline ByerN
« Reply #20 - Posted 2018-04-23 21:20:58 »

No problem Smiley

How do you handle client side prediction? -> for now there is no client side prediction. It's hard to do it with non-linear actions (you move one tile at one key press). In future, some of interactions could be changed to functions and it will be send from server to client. For example: I have some periodic traps that are firing up in certain sequence. For now server is triggering client if trap is up but I could send just a trap firing function to the client (only view context ofc). But it's much harder Smiley
I was thinking about basic predictions like move before server accepts it (and correct if something is wrong) but for now when I test it in live env, I see that transfer is fast enough to not cause visible lag. Live tests will show up if it is needed or not Smiley

Is there a certain reason you decided to use Akka and Scala -> I am using Scala and Akka in my job. I like it very much and I wanted to test it in more stressful env. I've found Scala much funnier and faster (development) to use than Java. Akka in my opinion is great approach for scalable server side applications and it's great experience to open mind for actor model. I really like it Smiley For now most of client side is done in scala as well.

what parts of your server are in Java and what in Scala -> Actually almost everything on the server side is done in scala. Before I was using java for procedural terrain (rooms) generation but now I don't need it. Only some LibgdxAI LeafTasks are wrapped with Java because for some reason annotations are not working well. I think that I've done something wrong in Maven. It's hard to find something in the internet because noone is using scala with libgdx as I see.

Are you planning to release a master server or will every player be able to host their on games? -> for now master server. I want to control game population Smiley

In case everyone is able to host their on games how are you going to deal with portforwarding? -> If I would like to go this way, I would use vpns or hole punching.

I hope it helped a little Smiley If you have any questions- ask me Smiley
Offline ral0r2

Junior Devvie


Medals: 2



« Reply #21 - Posted 2018-04-23 22:32:08 »

No problem Smiley

How do you handle client side prediction? -> for now there is no client side prediction. It's hard to do it with non-linear actions (you move one tile at one key press). In future, some of interactions could be changed to functions and it will be send from server to client. For example: I have some periodic traps that are firing up in certain sequence. For now server is triggering client if trap is up but I could send just a trap firing function to the client (only view context ofc). But it's much harder Smiley
I was thinking about basic predictions like move before server accepts it (and correct if something is wrong) but for now when I test it in live env, I see that transfer is fast enough to not cause visible lag. Live tests will show up if it is needed or not Smiley

Is there a certain reason you decided to use Akka and Scala -> I am using Scala and Akka in my job. I like it very much and I wanted to test it in more stressful env. I've found Scala much funnier and faster (development) to use than Java. Akka in my opinion is great approach for scalable server side applications and it's great experience to open mind for actor model. I really like it Smiley For now most of client side is done in scala as well.

what parts of your server are in Java and what in Scala -> Actually almost everything on the server side is done in scala. Before I was using java for procedural terrain (rooms) generation but now I don't need it. Only some LibgdxAI LeafTasks are wrapped with Java because for some reason annotations are not working well. I think that I've done something wrong in Maven. It's hard to find something in the internet because noone is using scala with libgdx as I see.

Are you planning to release a master server or will every player be able to host their on games? -> for now master server. I want to control game population Smiley

In case everyone is able to host their on games how are you going to deal with portforwarding? -> If I would like to go this way, I would use vpns or hole punching.

I hope it helped a little Smiley If you have any questions- ask me Smiley

Your input is much appreciated, thanks! Really interesting. May I ask in what field you are working?

PS: This might be relevant for you at some point, there are some good tools (at least from my experiences) to emulate things like high latency, packet loss etc. Just telling you in case you will reach the point of implementing client side prediction and are to lazy to set a live test up Smiley But you probably know about those tools anyway I guess Smiley
Offline ByerN
« Reply #22 - Posted 2018-04-23 22:39:18 »

May I ask in what field you are working? -> backend developer in telehealth. Now it's IoT project.
I am designing server to be fault tolerant. Later I will create some test env for it. This kind of emulation that you are talking about is relatively easy. Thanks Smiley
Pages: [1]
  ignore  |  Print  
 
 

 
ivj94 (586 views)
2018-03-24 14:47:39

ivj94 (49 views)
2018-03-24 14:46:31

ivj94 (383 views)
2018-03-24 14:43:53

Solater (63 views)
2018-03-17 05:04:08

nelsongames (110 views)
2018-03-05 17:56:34

Gornova (159 views)
2018-03-02 22:15:33

buddyBro (704 views)
2018-02-28 16:59:18

buddyBro (92 views)
2018-02-28 16:45:17

xxMrPHDxx (494 views)
2017-12-31 17:17:51

xxMrPHDxx (734 views)
2017-12-31 17:15:51
Java Gaming Resources
by philfrei
2017-12-05 19:38:37

Java Gaming Resources
by philfrei
2017-12-05 19:37:39

Java Gaming Resources
by philfrei
2017-12-05 19:36:10

Java Gaming Resources
by philfrei
2017-12-05 19:33:10

List of Learning Resources
by elect
2017-03-13 14:05:44

List of Learning Resources
by elect
2017-03-13 14:04:45

SF/X Libraries
by philfrei
2017-03-02 08:45:19

SF/X Libraries
by philfrei
2017-03-02 08:44:05
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!