PistonDevelopers / piston

A modular game engine written in Rust
https://www.piston.rs
MIT License
4.59k stars 234 forks source link

game proposal #775

Closed advanced closed 9 years ago

advanced commented 9 years ago

Some of you might have read the issue #670 about collaborating on a new open source game. I have been in touch with @bvssvni to let him know about my current plan to develop a game.

My motivation to create such a game is to expose as many people as possible to the "open source" way of doing things . Not only to developers who already understand the benefits but also for people of other trade such as designers, musicians, voice actors, movie directors, … I believe a game is the ideal medium to converge all our the efforts to create something meaningful, something we can be proud of.

Hopefully this project can help generate momentum for the Piston framework and promote the creation of a new set of libraries that in turn could be used in other projects. It can be a testing ground for new features and test the limits of their implementation.

Now let's talk about the game. It is currently called project R where the "R" stands for Renaissance. It is a reference to the cultural movement following the "dark ages". Project R doesn't take place during that historical period but I hope we can achieve a renaissance 2.0 of our own.

The goal of this project is to create a highly customizable multiplayer game.

The main game: As a new player, you are asked to select a zone where you would like to start the adventure from. Every zone is culturally and architecturally different but it is possible as you evolve to travel to remote regions. You also receive some piece of land where you can build your home but Since you just started the adventure you don't have any gold to buy raw material and make your home. You are now required to go to the mountain area and collect some raw material. Because you have selected a specific zone, the bricks, tiles, and other structural element will look similar to the existing buildings.

Now that you have built your home, you can still go to the mountain area to collect raw material but this time to sell it to the local construction store. The resell price is subject to supply and demand. This is one of the many ways you can earn extra gold.

Gold can buy food and useful items that can be stored in your home for later use. Without food your character can't survive long enough to explore this world and join new games.

Some items are free some other require gold. These items will be crafted by the community so they can set their own price or requirements. This is where the community can get creative.

You can customize your character look and personality. You can buy clothing and accessories to express yourself. Not all customization are available for purchase. For example, your daily food intake and energy expenditure will define your stamina and overall shape.

That's nice and all but it's pretty boring to collect items for no other reason than storing them. This is where you get to join a game .

Secondary game: The first game will be a 2D plan fighting game where characters are rendered in 3D but the "hitbox/hurtbox" collision is calculated on 2D objects. A fighter is a good first game because it doesn't require the creation of complex puzzle or intricate story. With a minimal set of tools it is possible to play for hours. You have to understand your options and their consequences , make decisions in real time and also try to guess what your opponent is thinking by observing his/her movements and habits. Also for those who have heard about the project mugen, you can see what is possible when the community is given control over content creation.

You can join the fighting game by enrolling in a school or dojo . Every zone has a specific fighting style and mastery of one or more of the elements that make up the game universe. You learn from your master the basics of your fighting style and train with players that are about the same level as you. You don't get to use the power of the elements just yet but you can already start leveling up your basic attacks and can also compete for the rookie title.

Every week a competition is taking place and you have to fight a member of a competing style. You know in advance who you will be fighting so you can prepare and level up accordingly. All the fights are recorded and can be watched live by players who decided not to join the competitive mode or are just waiting for their fight to start. The next day is the main event where masters fight each other. The "master tournament" outcome will influence the game story and this is where we get to watch the next "episode"...

That's pretty much the idea behind this project I have skipped some of the features/ideas but I think for now it should be enough to get the conversation started. I hope some of you are still interested and if so I will be answering questions on this thread.

thanks for reading

yuripourre commented 9 years ago

I like the fighting game idea.

Why not use 3d hitboxes? It's not so difficult at all.

yuripourre commented 9 years ago

I have some code in Java to deal with .obj bone animation (3D) or pivot animation (2D). It's just a very simple draft but works Etyllic-Animator. Screenshot

advanced commented 9 years ago

@yuripourre thanks a lot for your message. about 3D hitboxes, we can definitely try that but I'm just afraid it would require more cpu/gpu and thus preventing people with older computer from playing the game at an acceptable fps.

yuripourre commented 9 years ago

If the chosen game was a fighting game I can help with that. :smiley:

advanced commented 9 years ago

@yuripourre of course, I gladly accept your help! thanks. I'm waiting a bit to see if there are more people interested then we can set a schedule or something like that.

bvssvni commented 9 years ago

I like the idea of a fighting game where you actually learn how to fight and that the learning experience is part of the story. This way you can develop your character through the actions you take.

You mentioned that there will be a competition every week. Is this in real time? Will people watch the game as they do with sports, with teams fighting each other using different styles? Maybe there is a way to appeal to casual gamers by having people competing at same level. At the same time it would be very interesting to make a story that evolves around the masters, such that players get the experience of both being participating in a universe and that something interesting is going on there.

Knowing your opponent in advance and preparing for the fight is interesting. The sport aspect of it, where players meet regularly to fight each other, and a story aspect which takes place with the masters of each style... those are good ideas.

I have little experience with 3D, but if @yuripourre will help out with that bit, and you also mentioned you knew some people interested in working on 3D and the story. I think a such project would benefit Piston tremendously.

bvssvni commented 9 years ago

Would it be an idea to make a 2D prototype first?

advanced commented 9 years ago

@bvssvni yes it's real time. and I would watch that! we can do that is by streaming the inputs so the viewer can replay them locally. It's cheaper than streaming videos and doesn't require any special equipment. About the 2D prototype it's not a bad idea. If this is what is required to launch the project I don't see a problem with having an 2D mvp.

bvssvni commented 9 years ago

Thoughts about fighting styles?

advanced commented 9 years ago

for the fighting styles, It's defined by the area you are living in. We can have some based on real martial arts like kung fu, ninjutsu, karate, muay thai, and some other non conventional. I have been developing a list of possible styles but I think developing the culture first is more important.

bvssvni commented 9 years ago

Maybe we should pick just what we need to get a basic prototype up and running.

yuripourre commented 9 years ago

I agree, just the basic to make it fast. And flexible to add more features easily, later.

unknowndevice commented 9 years ago

Are you talking about a fighting game like Street Fighter, Skullgirls, Virtual Fighter etc? If so you're woefully misunderstand the complexity of programming these kinds of games. Check out some of Mike Z's posts online about the amount of work that went into making Skullgirls.

bvssvni commented 9 years ago

@unknowndevice Link?

advanced commented 9 years ago

Hi @unknowndevice I'm very thankful for you comment. It will be closer to SF than SG but not so much like VF which would be in a different category. I make a distinction between 2D and 3D fighter and so VF type would require a different kind of engine.I'm not pretending that it is something you can bang over a week end but a lot of thought went into this process. I like that you choose to reference SG and mikeZ because I have read some of his articles and watched few videos too. Do you know that SG was initially built by a two person team? I understand the complexity behind such games but more generally I know how to break complexity into manageable chunks. Can you share with us something that you find particularly difficult?

@bvssvni I don't have a specific link because it's mostly forum post, guest post and interviews but if you have the patience you can watch this video recored at the last UFGT

bvssvni commented 9 years ago

If the player is to be rewarded for learning about the opponent in advance of a fight, then basing the mechanics on fast reactions won't work. The "main game" revolves around an RPG concept, and when a fighting game was suggested I was thinking of building on that concept.

There is a difference is rewarding players for learning a character (e.g. Street Fighter) and advancing within a fighting style. I thought the story about the masters within each fighting style was a good idea, because it makes players more motivated to build their skills. The mechanics of Street Fighter simply does not have any RPG element, because you can do all the moves straight from the start.

I thought you were not going to play as a master, but that they serve as a role of making the universe look bigger and more interesting. This would give the players a sense of purpose. I think exploring the differences in philosophies between the different fighting styles and their master's personality is more interesting than the particular mechanics of the fighting game.

It also goes into the idea of building a "culture". Renaissance was about rediscovering ancient culture and techniques that had got lost for centuries, where people lived in poverty and ignorance for no reason at all. It was the start of different schools of thoughts that made governments less tyrannic and let people contribute to society through important discoveries. This changed the course of history.

bvssvni commented 9 years ago

The reason to make a fighting game was to get a smaller project working before taking on the greater challenge of a world with story and puzzles. One could do this in a strategic way to build tech, but not putting that much effort into it. The story with the masters is to bind the game up some greater universe, with the goal of both developing the world and its cultures and make people interested in contributing to new projects based on the same universe.

If I remember correctly, this statue http://hum120.files.wordpress.com/2011/02/nike_of_samothrace-greek_art.jpg was an angle put in a place where the wind was almost always blowing, making its appearance more life like. Centuries later, the art from middle age looked like http://1.bp.blogspot.com/-FP_45j-3uK8/T0wfPUAu0JI/AAAAAAAAALY/CtBOrps1Ljc/s1600/Philo_mediev.jpg where the focus was symbolism and not to mimic life. Those two kinds of arts were produced in different ways. The first one might have been made with the purpose of making people in that city feel special, while the other might have been made because everybody else got something similar.

Lots of material arts evolve around getting your mind into a state where you can make progress. I also like that women like Ng Mui are part of marterial art history. There are lots of good ideas to build a story.

advanced commented 9 years ago

@bvssvni very few modern fighting games take into consideration new comers. If you give a full set of moves like street fighter then I can guarantee that most people will have no idea how to actually derive strategy from these moves. I think that is the main reason why this genre is not as popular as it could be. It's better to master the basics and then build up your arsenal according to your current goal and weaknesses. For example, if you keep getting hit at close range and that is the main reason for your losses. You might then consider training your close range attacks to improve the speed. Alternatively you could train your attacks to increase the range. Of course balance has to be taken into consideration but I think you get the idea.

About the masters, I don't think they should be playable. the goal here is mostly to drive the story and showcase what you could do if you joined a particular style.

A quick note about fast reaction, I think it's only beneficial at the higher level but then again it's not "the" determining factor. An average player can react in time if he is anticipating his opponent moves. For that you need to know about the property of his attacks and spot his habits and preference.

"build tech, but not putting that much effort into it" can you elaborate?

bvssvni commented 9 years ago

I played a boxing game once where you practiced speed, strength etc. and became part of the game play. If you used the punching bag, then you increased your strength, but if you used the speed ball, then you increased speed. It was an old game on PS1. Are you thinking of this kind of game play, where numbers increase as you practice, or do you think of a meta-game where the difficulty of playing is tuned so you have to practice the moves to get good enough? I think of the first kind as involving some RPG element and the other as the typical fighter game (Street Fighter etc.)

With "effort" I meant whether we should try to make a game comparable to Street Fighter, which I don't think we should do. We need to build the tech for 3D graphics because at the moment this is what lacks most in Piston.

advanced commented 9 years ago

I'm leaning toward a combination of accumulated points that you get by fighting and some deliberate training like your boxing game. Training can take place in the dojo or some dedicated areas(possibly hidden). Training can also serve as a way to learn about strategies. It is a fun way to keep new players engaged. I guess we can say a training session is like a mini game.

ok i understand better. thanks for clarifying. I was not sure about the word "tech" but it's pretty close to what I was thinking.

do you have other questions or you think we can start talking about project organisation and short term goals?

bvssvni commented 9 years ago

We can create a repo for the project and create issues in the project for further planning. Does "project_r" sounds like a good name?

You should be aware that Rust is going through lots of breaking changes, so if I work on a game I need some help keeping stuff up to date.

advanced commented 9 years ago

Ideally /projectR but it's already taken so I have setup /project-renaissance. /project_r is shorter tough. I don't really have a preference both work for me. if you prefer project_r then you can set the org and invite me otherwise we can keep /project-renaissance.

I'm aware of the current state of Rust and the introduction of Cargo broke quite a lot of stuff too. That should be temporary. how do you expect the changes between 1.0.0-alpha and 1.0 to affect piston ? I ask that because if necessary we can delay the development a bit and spend more time on the spec and recruiting.

bvssvni commented 9 years ago

We need a repo to do further planning. I am not sure about creating another org yet, because in the beginning there will mostly preparations and most of the work will get into the Piston libraries.

I can create a "project_r" repo under PistonDevelopers and then we transfer this to the org later, if that's OK with you?

Is there a list of expected breaking changes somewhere? The things we use in Piston is mostly things the standard library depend on, so I expect there should be some solution to migrate to even if it breaks. There is an #[unsafe_desctructor] in piston-current but we are not using any syntax extensions. Not sure about Gfx, but we can stay on Rust nightly if it won't work with stable Rust.

advanced commented 9 years ago

project_r repo works! I wait for you to create it and we can move the discussion there. Merry Christmas to you all

bvssvni commented 9 years ago

I created a repo https://github.com/PistonDevelopers/project_r

bvssvni commented 9 years ago

Closing this.