• Advertisement


  • Content count

  • Joined

  • Last visited

Community Reputation

12 Neutral

About Lyfe

Personal Information

  • Industry Role
  • Interests


  • Twitter
  • Github
  1. We're back with another update. First a little recap of what happened this week: We got our own banner and logo. Thanks go out logomakr.com where we made it. Our website is now in develpoment. I got no idea when it will be online but we're working on it. We started using Taiga.io to manage the development. It was frustraing to just have a good a idea or realised something that needed fixing/reworking in the concept and just forget about it or have it in an unorganised text file. We got a new team member: Helices, who will function as a Biology Advisor to this project. On that note: We are reworking the cell stage to be more realistic (as far as it doesn't sabotage fun gameplay in any way). We will do another entry on that once we deem it presentable. On the actual development front: The procedural meshes now work mostly as intended. They are being generated randomly from a basic cube shape with 26 vertices. For now that should work and adding more is basically just busywork if we really need more than that. When the player collides with this mesh all vertices with a distance to the player that's within a certain threshold will move away from the player based on a vector from the player center to the vertex. This functionality is planned out so far but not implemented. Slicing the mesh will be the next, more complicated step. Next thing I will be working on besides the website: The procedural environment. Since it would be pretty silly to just but up barriers around the map it should be infinite. To make this feasible all content has to be procedurally generated around the player. Logically it will be deleted again as soon as the player has a certain distance to it. This is true for all passive, floating objects, compound clouds and other cells. The distance should be high enough to feel natural for there to be change but also not so high that it affects the framerate. The rework on the cell stage results in there being five new compounds replacing the previous ones: CO2, Oxygen, Amino Acids, Glucose and Lipids. The will definitely be differentiated by their color and maybe by the shape of the clouds if it is deemed useful for the player and doable for a programmer. Interaction with other cells will be an interesting part. I don't want to unveil anything that will be part of the cell stage rework but I'll tell you everything we have for certain: To absorb other cells you simply have to move over them. If you have 30% more mass than they do - which is calculated via your organelles and your cytoplasm - you will absorb them and vice versa. One thing we want to get sort of experimental with is sound. Despite the background music there will be no ingame sound effects. And even the background music will mostly consist of some atmospheric sounds. So far there was no time to prototype this but we will try to get to it soon but for now planning and coding has a higher priority. That's it for this week's update. I'll leave you with a little insight into our code with which we generate the compound cloud mesh. void ACompoundCloud_Cell::CreateCloudMesh() { //vertex buffer //TArray<FVector> vertices; //Front vertices.Add(FVector(50.f, -50.f, -50.f));//0 vertices.Add(FVector(50.f, 0.f, -50.f)); vertices.Add(FVector(50.f, 50.f, -50.f)); vertices.Add(FVector(StaticMaths::RR(50.f, 150.f), StaticMaths::RR(-150.f,-50.f), 0.f)); vertices.Add(FVector(StaticMaths::RR(100.f, 200.f), 0.f, 0.f)); vertices.Add(FVector(StaticMaths::RR(50.f, 150.f), StaticMaths::RR(50.f, 150.f), 0.f));//5 vertices.Add(FVector(50.f, -50.f, 50.f)); vertices.Add(FVector(50.f, 0.f, 50.f)); vertices.Add(FVector(50.f, 50.f, 50.f)); //Left //2 vertices.Add(FVector(0.f, 50.f, -50.f)); vertices.Add(FVector(-50.f, 50.f, -50.f)); //10 //5 vertices.Add(FVector(0.f, StaticMaths::RR(100.f, 200.f), 0.f)); vertices.Add(FVector(StaticMaths::RR(-150.f, -50.f), StaticMaths::RR(50.f, 150.f), 0.f)); //8 vertices.Add(FVector(0.f, 50.f, 50.f)); vertices.Add(FVector(-50.f, 50.f, 50.f)); //Back //10 vertices.Add(FVector(-50.f, 0.f, -50.f)); //15 vertices.Add(FVector(-50.f, -50.f, -50.f)); //12 vertices.Add(FVector(StaticMaths::RR(-200.f, -100.f), 0.f, 0.f)); vertices.Add(FVector(StaticMaths::RR(-150.f, -50.f), StaticMaths::RR(-150.f, -50.f), 0.f)); //14 vertices.Add(FVector(-50.f, 0.f, 50.f)); vertices.Add(FVector(-50.f, -50.f, 50.f));//20 //Left //16 vertices.Add(FVector(0.f, -50.f, -50.f)); //0 //18 vertices.Add(FVector(0.f, StaticMaths::RR(-200.f, -100.f), 0.f)); //3 //20 vertices.Add(FVector(0.f, -50.f, 50.f)); //6 //Bottom //16 //15 //10 //21 vertices.Add(FVector(0.f, 0.f, -50.f)); //9 //0 //1 //2 //Top //6 //7 //8 //23 vertices.Add(FVector(0.f, 0.f, 50.f)); //25 //13 //20 //19 //14 //index buffer //+++++ Front //Lower Left indices.Add(3); indices.Add(1); indices.Add(0); indices.Add(1); indices.Add(3); indices.Add(4); //Lower Right indices.Add(4); indices.Add(2); indices.Add(1); indices.Add(2); indices.Add(4); indices.Add(5); //Upper Left indices.Add(6); indices.Add(4); indices.Add(3); indices.Add(4); indices.Add(6); indices.Add(7); //Upper Right indices.Add(7); indices.Add(5); indices.Add(4); indices.Add(5); indices.Add(7); indices.Add(8); //+++++ Right //Lower Left indices.Add(5); indices.Add(9); indices.Add(2); indices.Add(9); indices.Add(5); indices.Add(11); //Lower Right indices.Add(11); indices.Add(10); indices.Add(9); indices.Add(10); indices.Add(11); indices.Add(12); //Upper Left indices.Add(8); indices.Add(11); indices.Add(5); indices.Add(11); indices.Add(8); indices.Add(13); //Upper Right indices.Add(13); indices.Add(12); indices.Add(11); indices.Add(12); indices.Add(13); indices.Add(14); //+++++ Back //Lower Left indices.Add(12); indices.Add(15); indices.Add(10); indices.Add(15); indices.Add(12); indices.Add(17); //LowerRight indices.Add(17); indices.Add(16); indices.Add(15); indices.Add(16); indices.Add(17); indices.Add(18); //Upper Left indices.Add(14); indices.Add(17); indices.Add(12); indices.Add(17); indices.Add(14); indices.Add(19); //Upper Right indices.Add(19); indices.Add(18); indices.Add(17); indices.Add(18); indices.Add(19); indices.Add(20); //+++++ Left //Lower Left indices.Add(18); indices.Add(21); indices.Add(16); indices.Add(21); indices.Add(18); indices.Add(22); //Lower Right indices.Add(22); indices.Add(0); indices.Add(21); indices.Add(0); indices.Add(22); indices.Add(3); //Upper Left indices.Add(20); indices.Add(22); indices.Add(18); indices.Add(22); indices.Add(20); indices.Add(23); //Upper Right indices.Add(23); indices.Add(3); indices.Add(22); indices.Add(3); indices.Add(23); indices.Add(6); //+++++ Bottom //Lower Left indices.Add(21); indices.Add(15); indices.Add(16); indices.Add(15); indices.Add(21); indices.Add(24); //Lower Right indices.Add(24); indices.Add(10); indices.Add(15); indices.Add(10); indices.Add(24); indices.Add(9); //Upper Left indices.Add(0); indices.Add(24); indices.Add(21); indices.Add(24); indices.Add(0); indices.Add(1); //Upper Right indices.Add(1); indices.Add(9); indices.Add(24); indices.Add(9); indices.Add(1); indices.Add(2); //+++++ Top //Lower Left indices.Add(23); indices.Add(7); indices.Add(6); indices.Add(7); indices.Add(23); indices.Add(25); //Lower Right indices.Add(25); indices.Add(8); indices.Add(7); indices.Add(8); indices.Add(25); indices.Add(13); //Upper Left indices.Add(20); indices.Add(25); indices.Add(23); indices.Add(25); indices.Add(20); indices.Add(19); //Upper Right indices.Add(19); indices.Add(13); indices.Add(25); indices.Add(13); indices.Add(19); indices.Add(14); TArray<FVector> normals; for (int i = 0; i < vertices.Num(); i++) { normals.Add(vertices[i] / vertices[i].Size()); } TArray<FVector2D> uv0; TArray<FProcMeshTangent> tangents; ////The colors applied to every vertex and blended on the surfaces TArray<FLinearColor> vertexColors; mesh->CreateMeshSection_LinearColor(0, vertices, indices, normals, uv0, vertexColors, tangents, true); //Enable collision data mesh->ContainsPhysicsTriMeshData(true); mesh->bUseComplexAsSimpleCollision = false; mesh->SetSimulatePhysics(true); } If you made it to this part you probably read the code and in that case: We are still looking for anyone who wants to contribute to this journy into the unknown. And please don't look at me like that, the code is functional if not beautiful. Thanks, bye.
  2. This week I want to give you some technical insight into our project. I want to start with recapping what happened over the last week: The player movement for the cell stage is implemented and the GUI is wired up, too. There is now a health-bar, DNA-bar and you can see your current compounds as well as your compound balance. Currently I'm working with or rather exoerimenting with Unreal's UProceduralMeshComponent. My main goal is to create a mesh I can manipulate on runtime. The first thing I want to use it for are the compound clouds. When the player swims into them they should bend around him as if they were being absorbed while simoultaniously decreasing their value until it reaches 0 and the dissovle completly. Once I'm familiar with how this class works I will use it for the creature editor. So far it's the best thing I know of for creating meshes that can be generated on runtime. Currently I'm struggeling with writing an algorithm that creates a mesh that roughly outlines the shape for the compound cloud and mostly acts as a trigger and the bounds for the simulated clouds. On that point I discovered somethin you might be interested in this topic: So far I haven't tried it but it looks exactly like the thing I need for this. And something special: Version 1 of the Lyfe Main Theme is done. (Lyfe_Main.mp3) That's it for this week. I want to focus on the cell stage for this devblog as long as I'm working on it. This might result in shorter entries but we want to keep you up to date. We're also still looking for people to join the team if you're interested. UPDATE: I managed to create an actual cube with a procedural mesh UPDATE 2: We go some actual random shapes that will later function as the outline for the clouds.
  3. The Cell Stage - Gameplay

    We're currently using GIT Hub. So far we don't have anything fancy to show. The time I creates the project page for Lyfe is also about the same time we started working. Don't expect too much, we're working on this during our spare time after all. A picture of the current state is on the project page. Note that it's mostly placeholder art since we're still looking for someone dedicated wholly to creating the art assets and we've been focusing on code so far.
  4. For this weeks update I wanted to talk about something I'm currently working on (conceptually and actually in code): The Cell Stage and how its gameplay works. Disclaimer: I'm not promising anything I'm just explaining the plan we have for Lyfe and we will work hard to get as close as we can to that vision. Secondly Some of the info you read here might not yet be in the DesignDocument but it will be updated after this post. You start out as just a membrane with some DNA in it. Floating around one of the possible bioms. Different bioms have different spawn rates for different chemicals. We haven't yet fully worked out what chemicals will be there in detail but the basics are: Oxygon, Carbon (mostly as CO2 or simple Sugars), Hydrogen (since you are under water there is quite a lot of that so it might not necessary be a ressource), Nitrogen (as Ammonium), Phosphorus (organic Phosphorus), Sulfur. Since these are the building blocks for life. Since at the beginning you are not really a living organism yet you don't need any of it. You don't have any real means of propulsion at this point, too. You can simply wiggle around a bit and move forward this way or get carried around my the currents of whatever body of water you are currently in. At this point the game is like a low key cutscene. This changes when you meet your first other cell. It will weither be a "Proto-Mitochondrium" or Cyanobacterium. The biom you are in has influence on this. If you are somewhere deep in the ocean cyanobacteria might be more scarce since... you know... it's dark down there and photosynthesis doesn't work so well without light. As you might have guessed this unlocks the Mitochondrium or Chloroplast. (The other one can be unlocked later one as you move to other bioms over time.) Both of them can produce ATP which basically is the value of how much energy you have. The Mitochondrium uses sugar and oxygon to produce ATP while the Chloroplast uses CO2 (since Hydrogen might not be a ressource). To balance this the Chloroplast produces less ATP. As long as you have those chemicals left energy will be produced. Other organelles you unlock on your microscobic journy will consume it to give you an advantage in surviving. For example if you got a flagellum or cilia on your cell and move forward ATP will be consumed over time. The more organelles are on your cell the more is consumed. This will force you, the player, to think about what you really need to survive. Some organelles you might unlock include: Mitochondrium -> Produces ATP Chloroplast -> Produces ATP (but less) Vacuole -> Store more compounds Cell Core -> better defense agains viruses Cell Wall -> More health but slower Endoplasmic Reticulum -> Repairs Cell Golgi Body -> Produces Vesicel => Reduced cost for ATP production since compounds get transported faster Flagellum -> Movement Ribosome -> Produces protein => your acquire DNA faster Poison Vacuole -> Damages cells attacking you <Poison Excretion> -> Lets you excret poison to damage enemy cells Sensory Input -> Allows you to "see" Cilia -> Movement You might now have some questions like "what's it with allowing me to see?" So basically at the beginning - and I can't stress enough how much this is just the plan we're TRYING to follow - you don't really see what's around you. You can make out your surroundings as basic shapes. This part is basically some artsy-o vision through you see the game world. The simple reason we decided to add this is that having no eyes has a penalty in the creature stage and a consistant ruleset is an important factor in this, so it feels like one game. But we also didn't just want to make a black screen because that isn't fun. (Also we're up for suggestions on how we could solve this better.) Then: DNA. You acquire it through absorbing other cells. The same way you can unlock new organelles. The criterium that decides if you absorb the cell or it absorbs you is how much mass you have. One simple rule that works like one browsergame proofed. And apart from other cells viruses might also be a factor in gameplay. This is also more of a experimental-feature on which I'd like to hear your opinions. If you spot a virus you can swim away from it absorb it. If you pick the latter one of two things can happen: You gain a bonus or a malus for this "life". They are gone as soon as you die. Splitting your cell doesn't remove it. This neatly brings us to the next point: Splitting your cell and the editor. All I want to say about it in the cell gameplay is that you need a certain amount of DNA to split and open the editor. We want it to be something the player has to work for. After all Lyfe is supposed to be a game. Now we come to the control settings which aren't that essential to this entry but I'm currently working on them so I just want to throw this in here: The player can chose from one of three settings: Follow Mouse Move To Click WASD I think I mentioned all I need to make clear how this part of the game works except for one thing and we're still struggling with that: How will you, the player, progress through this stage. Of collect all the organelles but those just give you options to adapt to your environment but what is the overall goal you are working towards? For the other stages this was easy to decide because there are other games to look for examples. But for this part? Not even our big inspiration Spore really had something interesting in this place. It was basically pacman but with a full 360° range of motion. We want to improve on that. But as I said we don't have a 100% bullet proof idea, yet. As always we're open for suggestions. That's it for this week from the Lyfe team and me. Thanks for reading.
  5. Introduction - Organ Tree

    Ok,ok. I get what you mean. So far we plan on having the movement calculated from your creature's bodystructure BUT also add different types of legs that give you +1 speed (just to give an example; maybe we might also just restrict that to the 'campaign') because it makes sense from a gameplay point of view. Just to answer that point because it's something important to me, too. About removing amitious features: We are not a company. We don't have deadlines. This has it's ups and downs. For one we are a small team doing this because we share a common vision of what could be which might slow down development. On the other hand we have all the time to publish it and can stay faithful to that vision. We just want to make the best version of this game we can. I want to promise a lot but know I can't.
  6. For our first dev blog entry we decided to introduce you to the organ-tree which we already described in our design document. If you haven't read you can find it in the description of our project here. So about that organ-tree: This is it: The tool you use during the creature stage to unlock or as it will be called ingame "evolve" your organs/skin types/body parts. Now, this is still a very rough outline but I think the intention is clear. One important design decision we made is to split it into three categories: Aquatic, Terrestrial and Both, with you starting off mostly in the aquatic branch, since your life (or lyfe if you will) as a complex creature will start off in the beautiful and mysterious depths of the ocean. Parts from the aquatic part of the tree might be useless on land or even harm you and vice versa. For example you don't want to leave the water with gills on your creature because you will run out of oxygen very quickly. This doesn't apply to all parts, though. For aquatic hands for example it is more of a design choice (We might add gameplay functionalities later like aquatic hands help with swimming but aren't good for attacking while with some hands developed from the terrestrial branch you can claw at your rivals or prey). You might have noticed that every set of organs has one base set and four versions deriving from it with numbers at the end. Each new version will be a new model/have a new design and slightly different stats. We are not 100% sure if we can keep the 4 stages of each organ but we will try. Because you know what they say: "Shoot for the moon. Even if you miss you will end in the vacuum of space and die alone." What's next? The skin types. This is something where we really want to make use of the advanced technology we have compared to that from Spore almost ten years ago. Skin might not have an effect on the gameplay (yet, we're planning something for our nice-to-haves) but will make your creature look fantastic. The plan was keep it a small number of types but make them well differentiated. Eyes: Withou eyes you won't be able to see anything, pretty straight forward, BUT: How good your eyes are determines how well you see objects at a distance/how far you can see. As a little bonus we also added a branch that grants you nightvision if you plan on making a nocturnal creature. Finally: The brain. This is an indicator for your prograss in the creature stage. You start off with the first and most basic brain. You have to unlock all three upgrades to be able to enter the next stage which we will undoubtedly discuss at some point in this blog.
  7. Introduction - Organ Tree

    It will. Let's say you got your first set of eyes on your creature. With those it can see about 20m (or something, game play tests will tell). After you evolve (unlock) the second set you also have to add them to your creature to benefit from their increased stats.
  8. Introduction - Organ Tree

    We want to keep our development as transparent as possible to not generate unnecessary hype the game can't live up to. Although we are still a small team now we work on expanding to get the necessary resources to make this vision come true. And with the advancement in game engines since Spore we are fairly optimistic we will improve on a lot of its shortcomings.
  9. Introduction - Organ Tree

    Thanks for the reply. We will definitly do our best and some more. What do you mean with 'advanced techniques'? With regard to what Spore did? Just asking so we know what people whant from this.
  10. Lyfe is set out to be a spiritual Successor to the now relatively old game Spore by Maxis. This is a project born from love for the idea of a game about evolution. So far our team consists of only two people but we plan on expanding this. Technicals: A rough DesignDocument.pdf is already in the works and done to a point where we can start to work on at least the first two stages. We plan on realizing this project in an already existing game engine since we are a small team and don't have the capacity to write our own. Currently this would be Unreal Engine 4.
  11. Hi, I wanted to introduce my/our project and also ask for some feedback on it. It is called Lyfe - A Game About Things. The subtitle started off as a joke between me and a friend when we talked about the idea and it kinda stuck to it. This friend is also the reason why I wrote "my/our project". We've been planning this for some time now and I thought since my springbreak is coming up I could really dig into it and try to make this dream become reality. So, the project then: I'm pretty sure a lot of people reading this will be familiar with the game Spore by Maxis. I think I just lost a lot of people writing this, didn't I? So yeah, this is the point we're starting from. We both really liked the game, loved it even, but it was lacking in some aspects. Also by now its almost ten years old, so we wanted to create a spiritual successor to it. I'm already working on a DesignDocument.pdf. It is not finished yet, obviously but will be constantly updated. For now the focus is on the first stage: The Single Celled stage. This is also one of the important points we want to make different from our inspiration material: Less stages and smoother transitions. As described in the design document we agreed on the stages: Single Celled MultipleCells Creature (includes Aquatic) Civ (Tribe and actual Civilization) Space We want to keep the transitions as fluent as possible, too. Then to the team: Currently that's my friend who's working on his A levels at an art school and me. I finished my third semester studying Informatics-Games Engineering at Technical University in Munich. We're both not working fulltime on this because of our degrees. I also don't see that changing anytime soon. Since we are just two people at this point we desiced not to write our own game engine but instead use Unreal (I'm more experience with Unity but I wanted to be more felxible on this project). Also if you're interested in this project and believe in the slim chance we have to succeed we are always open to take people on board. Now that I got that off my soul I'd like to know your opinion on our little suicide mission.
  • Advertisement