Thread starter
#1

Basically I am writing this post in reply to the masses of annoyed people who seem to think that good games get plucked out of the air and bam their AAA rated.

Yes the devs did put on kickstarter alpha release 2015. Yes the devs have missed dates for release on more than 1 occasion and yes they could have done many things differently. My reply to this is as follows:

Clc

Clear

k(1) = 0.5; %Preset coefficient of friction of a smooth sphere

m = input('Please enter spheres mass (kg).');

%Allows user to input their own mass in kg.

%1

if m < 0

fprintf('PLEASE INPUT A POSITIVE MASS')

return

end

u(1) = input('Please enter projectiles initial velocity (m/s).');

%Allows user to input their own initial velocities in m/s.

%2

if u(1) < 0

fprintf('PLEASE INPUT A POSITIVE VELOCITY')

return

end

agl = input('Please enter spheres initial launch angle (degree).');

%Allows user to input their own launch angle in degrees.

%3

if agl <0 fprintf('PLEASE INPUT AN ANGLE BETWEEN 0 AND 180 DEGREES') return elseif agl >180

fprintf('PLEASE INPUT AN ANGLE BETWEEN 0 AND 180 DEGREES')

return

end

g = -9.81;

uz(1) = u(1)*sind(agl);

ux(1) = u(1)*cosd(agl);

t=0.01;

%Time interval between loops

h(1)=0;

%Initial height above the ground in meters

R(1)=0;

%Initial horizontal position

i = 1;

p(1) = 1.225;

M = 0.0289644;

Rgc = 8.3144598;

T = 287;

while h(i) >= 0 %ensures that if the projectile reaches the ground it ends the loop

p(i) = p(1)*(exp((g*M*h(i))/(Rgc*T)));

k(i) = k(1)*p(i);

u(i) = sqrt((ux(i)^2) + (uz(i)^2)); % Equation 2.

fz(i) = -(k(i)*u(i)*uz(i))/m; %Equation 1 for vertical direction.

az(i) = g + fz(i); %Vertical acceleration which is gravity and drag.

uz(i+1) = uz(i) + (az(i)*(t^2)); %Equation 3 for vertical direction.

h(i+1) = h(i) + ((uz(i)*t)+(0.5*az(i)*(t^2))); %Equation 4 for vertical direction.

fx(i) = -(k(i)*u(i)*ux(i))/m; %Equation 1 for horizontal direction.

ax(i) = fx(i); %Equation for horizontal acceleration. Drag is the only component of this acceleration. ux(i+1) = ux(i) + (ax(i)*(t^2)); %Equation 3 for horizontal direction.

R(i+1) = R(i) + ((ux(i)*t)+(0.5*ax(i)*(t^2))); %Equation 4 for horizontal direction.

i = i + 1;

if h(i) < 0 %if statement ensures loop is broken when projectile reaches the ground.

tr_total = i*t;

fprintf('Projectile has hit the floor')

fprintf('The range is %d\n meters.', R(i))

fprintf('The flight time is %d\n seconds.', tr_total)

break

end

if h(i) >100000 %if statement ensures loop is broken if projectile escapes the atmosphere. fprintf('The projectile has left the atmosphere')

break

end

end

plot(R,h)

xlabel('Horizontal Range (m)')

ylabel('Projectile height (m)')

title('Modeling of ballistic motion with air resistance')

t_total = 2*((-uzz)/g); %Calculating the flight time using equation 1 of section 2.

t_nr(1) = 0; dt = 0.1; %Set to form an array of horizontal and vertical distance values.

s_z(1) = 0; %Setting the initial distance to 0m.

s_x(1) = 0; %Setting the initial distance to 0m.

a = g; %Setting the acceleration to gravity as drag is now neglected.

i = 1;

while s_z(i) >= 0

uxx(i+1) = uxx(i); %Setting the array for uxx to avoid error.

uzz(i+1) = (uzz(i)+(a*(dt))); %Equation 2

s_z(i+1) = s_z(i) + ((uzz(i)*dt)+(0.5*a*(dt^2))); %Equation 3

s_x(i+1) = s_x(i) + ((uxx(i)*dt)); %Equation 4

t_nr(i+1) = t_nr(i) + 0.1; %Increases until it reaches the value of the flight time to end the loop.

i = i + 1;

if s_z(i) < 0 %Ends the loop when the projectile reaches the ground. fprintf('Projectile has hit the floor')

fprintf('The range is %d\n meters.', s_x(i))

fprintf('The time of flight is %d\n seconds.', t_total)

break

elseif s_z(i) > 100000 %Ends the loop if the projectile leaves the atmosphere fprintf('The projectile has left the atmosphere')

break

end

end

That right there is the amount of code I had to write for my computational physics year 1 assessment. If you can't understand the code what I have basically done, in what is one of the SIMPLEST coding languages, is to calculate the flight of a ball with air resistance and to calculate its flight time, height reached and distance travelled.

This here is why I am not annoyed, angry or at all butthurt about the game taking so long. That code took me 3 weeks to work out myself on how to write the arrays, loop functions and calculations. These devs have built a 64km^2 world. With a large amount of buildings and in game items that had to each be coded individually in a difficult engine after their original concept was lost they had to completely rebuild the game with almost no prior game programming skills. Before you jump to say they could have brought more staff on board to help with development. Would you not prefer a small team all working their hardest full time to get the job done, or a large team that spend half their time at most on the game. They have worked hard on this game and the fact that they wanted the pre-alpha to come out with some amount of work ability in it should clearly show these devs are passionate about the game. I've played about 30 hours in game and have done most available things in the game possible so far and I must say thanks to the devs because I feel they have done a good job. Keep working hard and don't let the zombies put you down!!!