[QUOTE=Darwin226;40218050]That's pretty fucking decent performance. Tell us more about the renderer.[/QUOTE]
It's just a rasterizer which fills outline tables with interpolated coordinates of triangles and then fills them with scanlines. I do have a crude Z-buffer which helps loads, and of course I do backface culling. I have to do some Sutherland-Hodgemann clipping for the near Z plane soon, doubt it will give me that much of a speed-up at this stage though.
[QUOTE=ben1066;40216929][IMG_THUMB]http://i.minus.com/ib0VwhIYh0yznx.png[/IMG_THUMB]
More functions! Player.GetByName is all managed implementation:
[CODE]public static Player GetByName(string name)
{
for (var i = 0; i < Engine.MaxClients; i++)
{
var player = Player.GetByUserID(i);
if(name == player.PlayerName)
return player;
}
throw new PlayerNotFoundException();
}[/CODE][/QUOTE]
If you have a collection of players, you could use LINQ. eg. Players.GetAll().Where(p => p.PlayerName == name).SingleOrDefault()
[QUOTE=Darwin226;40217604]I might be pretty dumb about this but you're looking for the commit that started having that bug, right?
If so, can't you just binary search them?
Even if the first commit had the ability to do what you want and you have to go throught all of them, if should take about, what, 14 tries?[/QUOTE]
That's exactly what Git did, right down to the tries. However, in the end I didn't need to do it. I've successfully patched the bug.
Got some more weapons done. I won't post any more until I have a video of them in game, because I guess this isn't really programming!
My pixel art skills have really gone down hill, it's quite annoying because I know I'm going to have to re-do these down the line when I've improved.
[IMG]http://i45.tinypic.com/2dvnzmu.png[/IMG]
[QUOTE=chaz13;40218863]Got some more weapons done. I won't post any more until I have a video of them in game, because I guess this isn't really programming!
My pixel art skills have really gone down hill, it's quite annoying because I know I'm going to have to re-do these down the line when I've improved.
[IMG]http://i45.tinypic.com/2dvnzmu.png[/IMG][/QUOTE]
Those look mighty fine to me, better than my pixel art, anyway.
Enjoyed playing with unity. It's awesome how it just all clicked into play in my head.. and now I feel like I could do anything in it.
Here's an image of what I made today.. with no other information.
[img]http://i.imm.io/12pmP.png[/img]
[QUOTE=chimitos;40214638][IMG]http://img515.imageshack.us/img515/5027/201348fps.png[/IMG]
I've added this handy little graph of the last 3 or so seconds to my FPS gauge.
Also, the displayed FPS is now the average of the last 1/4 second, meaning it now provides much more useful information.
It's the little things like this make me happy.[/QUOTE]
I would think that graph would be a little more useful as a graph of frame time instead of fps. That way spikes will stand out more instead of just being little 1 pixel wide dips.
My university is running a 'break into open source' event, and are willing to look into a project of my choosing to find me something to fix. I don't know open source at all, so what is your suggestion?
I'm a freshman with just ~ two years of experience in c#/java.
[QUOTE=DoctorSalt;40219726]My university is running a 'break into open source' event, and are willing to look into a project of my choosing to find me something to fix. I don't know open source at all, so what is your suggestion?
I'm a freshman with just ~ two years of experience in c#/java.[/QUOTE]
Mono? The class libraries still need work for .NET 4.5 compliance though I don't know what their policy for outside submissions is.
[editline]9th April 2013[/editline]
[QUOTE=SteveUK;40218453]If you have a collection of players, you could use LINQ. eg. Players.GetAll().Where(p => p.PlayerName == name).SingleOrDefault()[/QUOTE]
My way should be quicker, GetAll() does something similar, it loops up to MaxClients and checks that they are a player, if their not their pointer will be null, so everything will return 0, false or "" from native code.
[QUOTE=Alternative Account;40206838]Why not generate it on-the-fly when the user's going through the level or, well, just standing around? Depending on how you designed your game loop, you might be able to use the time between object updates for level generation purposes.[/QUOTE]
I might try that.
[QUOTE=KmartSqrl;40219633]I would think that graph would be a little more useful as a graph of frame time instead of fps. That way spikes will stand out more instead of just being little 1 pixel wide dips.[/QUOTE]
Good idea!
[IMG]http://img801.imageshack.us/img801/943/screenshot2013040912005.png[/IMG]
[media]http://www.youtube.com/watch?v=-bDzyW3DORE[/media]
Decided to get back into Love2D, and oh dear.
[sub]Might want to turn up the volume a bit.[/sub]
[QUOTE=chimitos;40220896]Good idea!
[IMG]http://img801.imageshack.us/img801/943/screenshot2013040912005.png[/IMG][/QUOTE]
How did you render this?
I tried to draw lines in screen space a few times (with deprecated OpenGL) but I can't get them to show or get errors.
[QUOTE=Tamschi;40222048]How did you render this?
I tried to draw lines in screen space a few times (with deprecated OpenGL) but I can't get them to show or get errors.[/QUOTE]
Don't use GL_LINES for drawing blocks (I did once, it was awful) or deprecated OpenGL then.
Use a pair of polygons to draw a quad?
[QUOTE=Tamschi;40222048]How did you render this?
I tried to draw lines in screen space a few times (with deprecated OpenGL) but I can't get them to show or get errors.[/QUOTE]
It piggybacks off of my rectangle drawing function.
[code]
case DRAW_TYPE_LINE:{
x1 = drawing_list.list_x[temp_i_lists];
x2 = drawing_list.list_x2[temp_i_lists];
y1 = drawing_list.list_y[temp_i_lists];
y2 = drawing_list.list_y2[temp_i_lists];
length = (float) Math.hypot((Math.abs(x1 - x2)), (Math.abs(y1 - y2)));
width = drawing_list.list_size_x[temp_i_lists];
ref.rectangle.draw(x1, y1, length, width/2, -length/2, 0, (float) ((180/Math.PI) * Math.atan2(y2 - y1, x2 - x1)), drawing_list.list_depth[temp_i_lists]); // public void draw(float x, float y, float size_x, float size_y, float origin_x, float origin_y, float rotate_angle, float depth){...}
break;
}
[/code]
[code]
public void draw(float x, float y, float size_x, float size_y, float origin_x, float origin_y, float rotate_angle, float depth){
Matrix.setIdentityM(ref.renderer.mModelMatrix, 0);
if (rotate_angle != 0){
// move to x/y treating origin_x/y as the origin with rotation, if there is rotation
Matrix.translateM(ref.renderer.mModelMatrix, 0,origin_x + x,origin_y + y, 0.0f);
Matrix.rotateM(ref.renderer.mModelMatrix, 0, rotate_angle, 0.0f, 0.0f, 1.0f);
Matrix.translateM(ref.renderer.mModelMatrix, 0, -origin_x, -origin_y, 0.0f);
Matrix.rotateM(ref.renderer.mModelMatrix, 0, -rotate_angle, 0.0f, 0.0f, 1.0f);
Matrix.translateM(ref.renderer.mModelMatrix, 0, -origin_x, -origin_y, 0.0f);
Matrix.rotateM(ref.renderer.mModelMatrix, 0, rotate_angle, 0.0f, 0.0f, 1.0f);
} else {
//if no rotation, just move
Matrix.translateM(ref.renderer.mModelMatrix, 0 ,origin_x + x, origin_y + y, 0.0f);
}
// then scale
Matrix.scaleM(ref.renderer.mModelMatrix, 0, size_x, size_y, 1.0f);
GLES20.glVertexAttribPointer(ref.renderer.VS_a_Position, 3, GLES20.GL_FLOAT, false, 0, ref.floatbuffers.vertices_FloatBuffer.position(0));
GLES20.glVertexAttribPointer(ref.renderer.VS_a_Color, 4, GLES20.GL_FLOAT, false, 0, ref.floatbuffers.colors_FloatBuffer.position(0));
if (ref.current_texture_id != -1){
ref.current_texture_id = -1;
ref.floatbuffers.texture_coords_FloatBuffer.put(ref.floatbuffers.blank_texture_coord_data).position(0);
}
GLES20.glVertexAttribPointer(ref.renderer.VS_a_TextureHandle, 2, GLES20.GL_FLOAT, false, 0, ref.floatbuffers.texture_coords_FloatBuffer);
GLES20.glEnableVertexAttribArray(ref.renderer.VS_a_Position);
GLES20.glEnableVertexAttribArray(ref.renderer.VS_a_Color);
GLES20.glEnableVertexAttribArray(ref.renderer.VS_a_TextureHandle);
Matrix.multiplyMM(ref.renderer.mMVPMatrix, 0, ref.renderer.mViewMatrix, 0, ref.renderer.mModelMatrix, 0);
Matrix.multiplyMM(ref.renderer.mMVPMatrix, 0, ref.renderer.mProjectionMatrix, 0, ref.renderer.mMVPMatrix, 0);
GLES20.glUniformMatrix4fv(ref.renderer.VS_u_MVP_Matrix, 1, false, ref.renderer.mMVPMatrix, 0);
GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, 0, 4);
ref.draw.drawing_list.sys_sync_remaining_calls -= 1;
}
/*
final float[] vertices_data = {
// X, Y, Z,
//0
-0.5f, -0.5f, 0.0f,
//1
0.5f, -0.5f, 0.0f,
//2
-0.5f, 0.5f, 0.0f,
//3
0.5f, 0.5f, 0.0f
};
*/
[/code]
[QUOTE=Lexic;40221939]ponified cowsay?[/QUOTE]
ponysay, but I made it read a timed lyrics file.
[QUOTE=laylay;40209873]Just some lil dust impact effects, they don't really show up well on video :(
[HD]http://www.youtube.com/watch?v=pB_a4A_DDro[/HD][/QUOTE]
Fuck Laylay! This shit be cray cray! (Is this how kids speak now?)
Anyway this looks awesome.
[QUOTE=laylay;40209873]Just some lil dust impact effects, they don't really show up well on video :(
[HD]http://www.youtube.com/watch?v=pB_a4A_DDro[/HD][/QUOTE]
Ace of Spades: Source
[QUOTE=NightmareX91;40223557]Ace of Spades: Source[/QUOTE]
This looks way better than ace of spades if the handling is still that smooth over the internet. Looks like the movement just feels 'right'.
Can't seem to get intellitrace to work in visual studio 2012. The menu options to show the windows are missing. Also using the hotkeys to show them says "command (IntelliTrace Calls) is not currently available".
Also what the fuck. Why does visual studio ultimate cost 13k$? Going from professional(1k$) to ultimate(13k$) is fucking ridiculous. Especially when you only want some of the features ultimate offers.
because business
[QUOTE=laylay;40209873]Just some lil dust impact effects, they don't really show up well on video :(
[HD]http://www.youtube.com/watch?v=pB_a4A_DDro[/HD][/QUOTE]
[QUOTE=KmartSqrl;40223583]This looks way better than ace of spades if the handling is still that smooth over the internet. Looks like the movement just feels 'right'.[/QUOTE]
Have you and bean thought of setting up a development blog for simple things such as movement and other little things that gives it that flare?
[QUOTE=Richy19;40223905]Have you and bean thought of setting up a development blog for simple things such as movement and other little things that gives it that flare?[/QUOTE]
I think that kind of thing really comes down to having good taste, and the ability to see when something is shit, figure out why it is shit, and make it less shit. Not any special techniques really. If your movement feels sloppy, for example, just make it snappier.
Stage one of the CODify compo: Locking FPS to 30
[QUOTE=Map in a box;40224190]Stage one of the CODify compo: Locking FPS to 30[/QUOTE]
That reminds me, I gotta lock my spinny thing I made in Love2D to 30 FPS.
[editline]10th April 2013[/editline]
[img]http://puu.sh/2x8jW[/img]
success.
[QUOTE=high;40223754]Can't seem to get intellitrace to work in visual studio 2012. The menu options to show the windows are missing. Also using the hotkeys to show them says "command (IntelliTrace Calls) is not currently available".
Also what the fuck. Why does visual studio ultimate cost 13k$? Going from professional(1k$) to ultimate(13k$) is fucking ridiculous. Especially when you only want some of the features ultimate offers.[/QUOTE]
Ultimate is aimed at large businesses. If you want ultimate, check your university.
Just had to binary search a bug. Turns out some Pens were being initialized on a background thread and the foreground thread didn't like that. It really annoys me that the .net framework provides 0 information with exceptions. Whats the point of the Data field if its never used? Even without that, throw me a fucking bone to help me debug. Its not like I can debug .net framework (the source stepping has so many issues that it doesn't work 90% of the time when you want it to).
"Cannot use a DependencyObject that belongs to a different thread than its parent Freezable."
Why can't they include the thread ids?
[csharp]if (owner.Dispatcher != null && child.Dispatcher != null && owner.Dispatcher != child.Dispatcher)
{
throw new InvalidOperationException(SR.Get("Freezable_AttemptToUseInnerValueWithDifferentThread"));
}[/csharp]
Apparently adding "owner.Dispatcher.Thread.ManagedThreadId" to the exception message is extremely difficult. I would have loved to have the dispatchers added to the Data field but I would have taken at least just the thread ids.
[QUOTE=Foda;40224905]Ultimate is aimed at large businesses. If you want ultimate, check your university.[/QUOTE]
I don't have a university. Was just complaining that ultimate has some nice features but the few features I want no where near justify the 13k$(+4k$/year renewal) price tag. Really the whole different versions of .net pisses me off. There should only be 1 version and they should sell all that extra crap separately. Also sucks that there are paid extensions that you can't use if you only have the express edition.
If you couldn't tell. I am just pissed of at visual studio right now. I have even started a list of things that piss me off as I use it during the day.
Sorry, you need to Log In to post a reply to this thread.