Suggested (types of) branches:
Feature branches: 0…n - one for each ‘feature developer’
Merge-and-test branch: 1 - for merging and testing new features before pushing to the master branch
Master branch: 1 - for feature developers to pull from (to base their features on), and possibly to use for builds/releases
Example:
All feature developers pull the most recent master branch when starting work on a new feature.
Developer 1 works on his own local feature branch FB1
Developer 2 works on his own local feature branch FB2
Developer 3 works on his own local feature branch FB3
When Developer 1 has finished his feature, he pushes this to the remote feature branch FB1
When Developer 3 has finished his feature, he pushes this to the remote feature branch FB3
The person in charge of merging, manually merges the changes from the feature branches (FB1 and FB3) to the ‘merge-and-test’ branch and makes sure that all changes work together properly. If none of the existing functionality is broken by these merges, and the new features also work as expected, he merges the ‘merge-and-test’ to the master branch. Obviously we could have a small group of people in charge of the merge-and-test and the master branch, and the frequency is something that has to be discussed.
[HR][/HR]
This means that we would always have at least 1 perfectly working branch which everyone can use as a starting point, the master branch.
I think that this has a couple of implications:
Testing that all changes work together properly will be a lot of work as the number of features increases. I think we have to find a way to automate this as much as possible. I’ve read that UE(4) supports unit tests and feature tests for C++ code. It would be cool if this is also supported in blueprints. If this isn’t supported in the ‘blueprint visual scripting language’, I expect that it should be possible to write tests in C++ for blueprints. If every feature developer has tests accompany their feature it should be easy to test it when it’s integrated with the rest. We should also add all new feature tests to our regression test set for future merges.
In the example above, you might have noticed that Developer 2 didn’t finish his feature before it was merged with the ‘merge-and-test’ branch. If he misses a couple more merges and keeps working based on an ancient master branch, he might get too far behind for (parts of) his feature to work at all when integrated with the rest of the project, he might have to start again or at least redo some stuff. So you shouldn’t stay too far behind, either by working faster, splitting up the feature into smaller pieces, or by updating your local master branch when you notice there’s a new one available.
[HR][/HR]
I think we should be able to work with the Atlassian source tree for this, should help visualize which Feature branches are ready to be integrated and when they have last been integrated etc.
Looking awesome so far! Might I suggest that you guys make an explicit separation between the RTS engine itself and the RTS game you want to develop? A more generic RTS engine module with the actual game as a ‘sample project’ would be a lot more useful for the UE community than any specifically developed
For example, there’s little reason to specify resource types & behaviors on an engine level when it’s something that could be added dynamically based on a configuration file. You could also design around the common unit archetypes, such as stationary, walking, rolling, floating, and combine them with weapon classes such as melee, ranged, area of effect and indirect fire.
Not only would that make the project more useful to the community as a whole, it will also significantly improve the design of the engine.
I am interested in this. If this is better than the current method surely we need to implement this.
Hey this is a great idea. Although am waiting to hear from more Git experienced users like about this.
You mean like a template? If so, then its easy to create a template from the current project right now and submit it to Marketplace. As the development progresses it might be hard to strip down all the features we implemented. If you are interested, feel free to download this project and make a template out of it.
By the way is a new video. I added the ability to spawn resources in editor using Blutility.
I just mean separate the game stuff (eg, the concept of ‘gold, knowledge, wood’, ‘civilian’, ‘soldier’) from the engine itself and make it so that the engine can handle any resource / unit the developer defines (eg, Mass / Energy). I’m not actually sure how to do that yet with blueprints but I’m still learning
It is possible, but the problem is making a general purpose RTS is very difficult. It will be as if developing a framework. We will have to consider a lot of differing criteria, platforms. I think it needs more people to do something of that scale. Currently we can make a lot of assumptions about the gameplay and taht will help us to skip a lot of scenarios. But I like your idea of an RTS maker. Like said, someone can fork-off this project and build it in parallel.
Guys, just wanted to say great work and keep going!
My dream is to create an RTS and while I don’t have much experience with UE4, things like these make me happy
Wish one day I could contribute something for this project
I just noticed this thread this morning and I thought it was pretty cool what everyone is doing . I contacted about making a contribution by adding music to the game and he suggested I share a link of my music to all of the community members involved in order to get everyone’s opinion.
It was requested that some ambient music would be nice along with some environment sounds like birds chirping, wind etc. The link I will provide doesn’t really have any ambient music but I can create some for the game. This is just an example of the quality of my work. I worked with a theatre company doing sound design so using those skills in this project should help and be fun. I will create some ambient music and post it in a day or two for review.
: Unique Music / Sound assets would be extremely useful! If you are working on some samples, it’d be good to have two different types of tracks - ‘Peaceful / basebuilding’ and ‘Combat’ styles. Anything even remotely similar to the Total Annihilaton soundtrack would be amazing too https:///?v=BxAdOQtAFEs . Also, you may want to consider what kind of license you want to release your assets under, whether people can use the music for their own RTS project or not, that sort of thing.
: Looking good as always. How many units do you think we’d be able to have on the battlefield? What do you think the target # should be ?
: Agreed, it makes it a little bit more complicated - but, I wouldn’t want to cater to everyone, I would only suggest developing features for the engine that directly benefit the game, as long as the core can be stripped out and used as a launchpad for other projects.
Does anyone know the best way to collaborate on blueprints? As far as I can tell it just comes in as one big binary blob, so merging changes from two people is… challenging.
Ok one way to achieve it (kind of) is to make the Collectibles, Powers…very generic and with a lot of properties exposed. By doing this, a modder/designer can simply extend a blueprint form it and tweak the properties to create something entirely new. For instance in a hoby project that I am working on, I have powers that I caan assing to charcters. Different powers do diferent tings, some increas/decrease health, some affect speed, resistance… So initially I created sveral powers and hardcoded their efefcts. Later I created a base class Power and an interface which defined some functions like (ApplyEffects, GetHealthBonus, GetReistanceBonus…). When I want a new power, I extend th Power class and tweak the values for variables like HealthBonus, ArmurBonus, InstantBonus, OverTimeBonus, BonusDuration, CastEffect, HitEffect, …(actually there was well over 50 proeprties). By doign this I was able to implement a projectile based power, self healing power, …all using the same class. One problem with this approach is you fisrt need to identiofy all the gameplay specifics and how they all work toegthor. If you intend to change gameplay mechanics sometimes later, then this setup will bite you.
About Blueprints and Git. Yes binary files are a problem with version control unless the version control system know how to parse these files and identify the differnces (like the Bleupritn Diff tool). I belieave unless EPIC adds a plugin for Git version control, we have to make sure only 1 person works on any file at a time …though it kind of defeats the purpose of Git.
That sounds exactly like what I was trying to get at There’s a number of really core gameplay specifics that could be modularized in such a fashion. Something for down the road a bit I suppose.
Judging by the way Unreal seems to have done SVN / Perforce integration (where it just locks the blueprint file) it doesn’t seem likely that we will get any kind of code-friendly blueprint compare tools for a while.
Just sharing some ideas as a huge RTS fan + I used to work with Unity3D so modularization was a big part of their prefab system…
Basic object should exist, let think of it as an entity… That should be like the basic building block of anything… Do you remember an RTS where you could select, I don’t know, rock, waterfall, tree, any prop in the map and in UI it would say sonething like “Rock”, along with its picture and perhaps even a hp bar? now granted, there is little sense in being able to select any rock over the entire map but you can see the effect of it… If you want to make some object (prop) selectable make it of a class entity… Further, if you want to make it destructable and showing its hp bar in the ui/gui what about a boolean “isDestructable?” toggle as a object field?
Going up even more, lets say we want to represent an tank factory or even a simple building that’s player 1’s. Let make that object entity, check isDestructable on and what about another boolean like “ownerPlayer01”? That way, if checked the script should allow only the owner player to use that building in any functional way while enemy player could still like left click it to see some basic info about it while right click could like check if the user right clicking it isn’t the sole owner of it and currently has a unit that can attack selected, then make it target and attack… and it goes on, and on…
for example:
walking infantry
entity, hasOwner, isMovable
Thank you . Please download the Project and go through the Blueprints. You might get an awesome idea to implement.
It’s not decided at this stage since we still havent confirmed about characters or the type of game this is going to be. We have Blueprinters but no artist or character designer or an environment artist.
This is great. Although, as you said we still need to decide quickly about gameplay mechanics.
Nice one . In AOE 3 we could select any item and the UI showed the details. Although i dont intend to make every object clickable in this game. But thats just my suggestion only. If any other member wants to do that…Feel free.
Thank you for the suggestion . I think this can be achieved with some property like Player Index. Something like each player will have a different Player Index and when a building/unit is selected we can compare that index and update the UI appropriately.
WOW , this project really took off! This has inspired me to add at a simple resource gathering mechanic/ai for supplies to my Zombie Survival FPS+RPG+RTS. I’m aware there are a bazillion ways to go about implementation, I’m very curious about your approach.
I’ve been experimenting with a new camera system for the project. Like I said in a previous post, this camera is actually a Pawn and is treated as such. I am trying to make it as generic as possible so that we can customize its behaviour in different ways.
Currently, it can move across the map and zoom-in and zoom-out. Anotehr feature is it can adjust the height based on terrain. That is suppose you are at a height of 500 meters from ground and you move the camera and you come across a raised ground (a plateau for instance), it will automatically zoom-out to maintain 500m distance always. This is very basic at the moment and result in jerky movement (if the terrain is very rough). But you can enable or disable this option.
is a very short video of the work://www.youtube.com/?v=iarjT-FkaOg
During movement, if it collides with a structure, it will automatically avoid it (not in the video)
Another thing I am working on is to tell the camera to focus a particular actor from a particular distance and angle and the camera will either smoothly/instantly (based on options) move to that setup. This will come handy for spotting units or structures.
I will update this whenever I have some major changes. I will not push to master until its fully done. Let me know if you need any other functionality and I will see if I can add that too.
PS: To make it work we will need a new Trace channel named ‘Terrain’ which only the terrain can block (every other actor must ignore it)
@
You’re welcome! I will, as soon as finals are over lol!
@
Looking pretty good! Like it very much…
“Another thing I am working on is to tell the camera to focus a particular actor from a particular distance and angle and the camera will either smoothly/instantly (based on options) move to that setup. This will come handy for spotting units or structures.” You mean like how focus works inside UE editor/Maya? You press certain key and it smoothly flies to the object at predefined distance/angle?
Not quite. What I mean is suppose you have deployed several units on the map and they are far aprt. Now one of your units on the other side of the map is taking too much damage. Now you will get a notitication like ‘Unit 2 is taking damage’. You can click on this notification and it will automatically focus on the said unit. If you’ve played Civilizations/Tropico… you might have come across this many times. Anotehr possible use is when you click on the icon for your unit on HUD, it will focus that unit.
Hello people!
I’ve been reading over this project and looking at the Trello and it looks like it could be quite good, and I’d like to say that I may be able to help
I bought UE4 the day it came out and have been using it since, I am currently creating a game with it (very early stages) but I have messed around with many other levels to learn the engine, I also already knew C# and JS (I used to use Unity) so I’m quite good at Blueprint programming (I also have a fair few blueprints that could be useful already).
I’m not too good at modelling but given the simplicity of them models this game will need I believe I can help there too (Furniture/small objects/architecture, no characters or anything though).
I will not be able to dedicate loads of time as I need to to school work and such (and work on my own projects) but I believe I can be of assistance
P.S. I know nothing about GitHub or any of that, so you’ll need to teach me
P.P.S. I also am great at coming up with ideas
Oh right, I haven’t played Civilizations but I have played Tropico, so I definitely know what you mean. I believe even Starcraft II has similar feature but could be wrong… Any others tasks for the camera, apart that one? Can you rotate it like yaw-wise?
Oh and another thing, what do you (and rest of the people ) think of RTS camera that when you zoom in it slightly rotates pitch-wise? I have mixed feelings about that, sometime that makes for a nicer look, but sometime it’s much more useful to just be able to fast zoom in and out without totally getting my camera rotated…