[QUOTE=Maurice;31584569]Experimenting with block saving format.
[img]http://i.imgur.com/3ao6V.png[/img]
You may say "This looks like minecraft!"
But no. [I]Minecraft[/I] looks like [I]this[/I].[/QUOTE]
Not Minecraft? :v:
Does minecraft actually store a list of blocks to render in the chunk data?
So that everytime a block is changed, the list is updated?
And the list only contains blocks that are adjacent to air?
Cuz I never looked into voxel rendering / storing the map / optimizations
[QUOTE=s0ul0r;31587059]Does minecraft actually store a list of blocks to render in the chunk data?
So that everytime a block is changed, the list is updated?
And the list only contains blocks that are adjacent to air?
Cuz I never looked into voxel rendering / storing the map / optimizations[/QUOTE]
I would have thought it would put all the faces to render per chunk in a VBO, and recalculate which faces need to be in the VBO when at least one block in the chunk changes.
[QUOTE=s0ul0r;31587059]Does minecraft actually store a list of blocks to render in the chunk data?
So that everytime a block is changed, the list is updated?
And the list only contains blocks that are adjacent to air?
Cuz I never looked into voxel rendering / storing the map / optimizations[/QUOTE]
What I'm surprised about Minecraft is that it doesn't use an already predefined voxel format (Granted, I don't know how good other formats are in terms of size). For instance, there is an open source one provided by Sony Imageworks called [url=http://sites.google.com/site/field3d/]Field3D[/url], which uses the HDF5 file format underneath. The neat thing about it, is you have multiple forms of local and global space. So you can have a world with a length of 1.0, and within any of the areas between 0.0 and 1.0 you can have any number of local spaces (You can also designate these as integers, so you don't end up with weird floating point issues in a given simulation). Within these local spaces you can define a size of say 10000, and then place an object at each of the single N - 1 points. And at those points you can place even *more* local spaces. So you it's possible to have local spaces all the way down, until you reach the turtles.
These are used in computer rendering farms, and for scientific computing, so whether they could be used in realtime applications on a consumer machine is entirely up in the air, and someone would have to do some research. But I ain't doing it :suicide:
[QUOTE=s0ul0r;31587059]Does minecraft actually store a list of blocks to render in the chunk data?
So that everytime a block is changed, the list is updated?
And the list only contains blocks that are adjacent to air?
Cuz I never looked into voxel rendering / storing the map / optimizations[/QUOTE]
It uses something called renderlists, which are updated any time a block in the chunk changes. Jens was talking about it at Dreamhack.
I've procrastinated long enough before posting this, figured I might as well. I know loads of people are making these but I decided to have a go as well.
[img]http://dl.dropbox.com/u/6661951/Images/Mineclone/1.png[/img]
[img]http://dl.dropbox.com/u/6661951/Images/Mineclone/2.png[/img]
[img]http://dl.dropbox.com/u/6661951/Images/Mineclone/3.png[/img]
[img]http://dl.dropbox.com/u/6661951/Images/Mineclone/4.png[/img]
[img]http://dl.dropbox.com/u/6661951/Images/Mineclone/5.png[/img]
All textures made by me except for the sand which I nicked from Painterly because it's so sexy :v:
As you can see in the overhead shot, the textures have some severe aliasing issues, but I can't simply turn on antialiasing or texture filtering because all my textures are arranged into a single tile map texture, so it "bleeds" into the next tile if I do that. Any ideas?
[QUOTE=Chris220;31587916]
As you can see in the overhead shot, the textures have some severe aliasing issues, but I can't simply turn on antialiasing or texture filtering because all my textures are arranged into a single tile map texture, so it "bleeds" into the next tile if I do that. Any ideas?[/QUOTE]
Add a couple of pixels of padding in between the tiles.
[QUOTE=icantread49;31587996]Add a couple of pixels of padding in between the tiles.[/QUOTE]
Hmm, I'll give that a go. Does Minecraft have this same problem? I've never actually noticed it; but then I'm usually not flying high up above the world in Minecraft.
[QUOTE=Chris220;31588028]Hmm, I'll give that a go. Does Minecraft have this same problem? I've never actually noticed it; but then I'm usually not flying high up above the world in Minecraft.[/QUOTE]
Minecraft textures don't bleed because they use the nearest texture filter.
[QUOTE=Chris220;31587916]I've procrastinated long enough before posting this, figured I might as well. I know loads of people are making these but I decided to have a go as well.
All textures made by me except for the sand which I nicked from Painterly because it's so sexy :v:
As you can see in the overhead shot, the textures have some severe aliasing issues, but I can't simply turn on antialiasing or texture filtering because all my textures are arranged into a single tile map texture, so it "bleeds" into the next tile if I do that. Any ideas?[/QUOTE]Use Array Textures.
[QUOTE=Chris220;31587916][img]http://dl.dropbox.com/u/6661951/Images/Mineclone/5.png[/img][/QUOTE]
Looks like perlin noise. Am I right?
With a big thanks to whoever scraped up that huge list of words a few threads ago I've taken a tangent from what I was working on and made a word mixer program.
Right now it picks a word, finds a prefix and suffix to it, and squeezes it in between them.
Examples:
[code]
greyhound, underfoot, footpeople
greyhounderfootpeople
overseas, seasonal, alpenstocks
overseasonalpenstocks
[/code]
[QUOTE=Irtimid;31589140]With a big thanks to whoever scraped up that huge list of words a few threads ago I've taken a tangent from what I was working on and made a word mixer program.
Right now it picks a word, finds a prefix and suffix to it, and squeezes it in between them.
Examples:
[code]
greyhound, underfoot, footpeople
greyhounderfootpeople
overseas, seasonal, alpenstocks
overseasonalpenstocks
[/code][/QUOTE]
I think that was me? I'm not sure, I did make a word scraper using Wikipedia, various public domain books, and a few other sources, though.
[editline]7th August 2011[/editline]
If it's mine, there's a good amount of acronyms, which get scraped up, that shouldn't, so you might want to check into that. And if it is mine, and you're planning on using it in anything I could whip you up a vastly improved list in a night or so.
[editline]7th August 2011[/editline]
Haha, I just checked my list and "footpeople" is in there and it's not in any dictionary, so I'm pretty sure it's using mine.
yay triangulation
[img]http://i.imgur.com/yCrGR.png[/img]
not very optimized or anything but works for now
[QUOTE=BlkDucky;31588551]Looks like perlin noise. Am I right?[/QUOTE]
Right you are; I'm using a 3D perlin noise map to generate all that :)
[editline]7th August 2011[/editline]
[QUOTE=thomasfn;31588104]Minecraft textures don't bleed because they use the nearest texture filter.[/QUOTE]
I'm pretty sure that's the one I've got turned on already, doesn't seem to help that issue :(
[img]http://i.imgur.com/pKvVE.png[/img]
modified the ear-clipping algorithm so that adjacent ears are combined into a single convex polygon
[QUOTE=Chris220;31590350]Right you are; I'm using a 3D perlin noise map to generate all that :)
[editline]7th August 2011[/editline]
I'm pretty sure that's the one I've got turned on already, doesn't seem to help that issue :([/QUOTE]
If you used Array Textures, you would be able to use any filtering you liked.
The only problem is that they all have to be the same size, but that's not a problem if you pre process the images to a uniform dimension.
[QUOTE=danharibo;31590675]If you used Array Textures, you would be able to use any filtering you liked.
The only problem is that they all have to be the same size, but that's not a problem if you pre process the images to a uniform dimension.[/QUOTE]
I will look into how they work, thanks for the info :)
[img]http://i.imgur.com/ymYqb.png[/img]
I call it the holesphere.
[QUOTE=Jawalt;31589337]I think that was me? I'm not sure, I did make a word scraper using Wikipedia, various public domain books, and a few other sources, though.
[editline]7th August 2011[/editline]
If it's mine, there's a good amount of acronyms, which get scraped up, that shouldn't, so you might want to check into that. And if it is mine, and you're planning on using it in anything I could whip you up a vastly improved list in a night or so.
[editline]7th August 2011[/editline]
Haha, I just checked my list and "footpeople" is in there and it's not in any dictionary, so I'm pretty sure it's using mine.[/QUOTE]
Heh, yeah, there are some weird things in here. Like "linkingpublicationresults." I guess I could write a script that checks them all with Google or something but it'll do for now.
In other news, I got chains of arbitrary length working:
[code]
photoreceptorsionizedicthealthegithereonionsethology
[/code]
[code]
ousiangoldstoppedlarvaleriangeneralsostentatiouslynessentiallycumpainsinhedrimsu
bdivideductionizationicosahedrallieditranslatorsionizationizingratitudescendeduc
tivegetationizingloriousenvironingotschunksubmittingatingeareproachfullyrerrorss
eeisselfeigninglorious
[/code]
[QUOTE=thomasfn;31590783][img]http://i.imgur.com/ymYqb.png[/img]
I call it the holesphere.[/QUOTE]
Hey look, its google earth!
[QUOTE=Irtimid;31591133]Heh, yeah, there are some weird things in here. Like "linkingpublicationresults." I guess I could write a script that checks them all with Google or something but it'll do for now.
In other news, I got chains of arbitrary length working:
[code]
photoreceptorsionizedicthealthegithereonionsethology
[/code]
[code]
ousiangoldstoppedlarvaleriangeneralsostentatiouslynessentiallycumpainsinhedrimsu
bdivideductionizationicosahedrallieditranslatorsionizationizingratitudescendeduc
tivegetationizingloriousenvironingotschunksubmittingatingeareproachfullyrerrorss
eeisselfeigninglorious
[/code][/QUOTE]
Well all the script used to generate the word list does is:
Find everything matching the pattern of something like [a-z]+
Cull all one letter results.
Cull all results with no vowels.
Add anything with weird proportions of vowels and consonants to a suspect file, with line numbers.
I then go over it with by hand and just clean up obvious shit in the suspect file.
:P So not very complicated, and I missed a lot.
[editline]7th August 2011[/editline]
If you want the list of sources I can give them to you, basically I use mostly:
Articles from wikipedia likely to have plenty of unique words: "Religion" "Republic" "Government" "Philosophy"
Articles from wikipedia which are featured, and therefore well written and not likely to pollute the list.
Public domain books, lots of them.
Per the (brief) discussion on F# earlier:
I started to rewrite my build system's more important functions this weekend in .NET. When I got to my function that replicates the Unix which utility, I remembered I had written it in C# before (to a certain degree)
The python version
[code]
import sys
import os
def is_exe(path):
''' Returns whether a given path is executable '''
return os.path.exists(path) and os.access(path, os.X_OK)
def which(name):
''' Works like the `which` utility '''
if sys.platform == 'win32': name = '{}.exe'.format(name)
path = os.path.split(name)[0]
if path and is_exe(name): return name
for path in os.environ['PATH'].split(os.pathsep):
testable = os.path.join(path, name)
if is_exe(testable): return testable
raise LocateError(name)
[/code]
The C# version (which is extremely naive, and only works on windows) and its relevant portion
[code]
foreach (string directory in Environment.GetEnvironmentVariable("PATH").Split(Path.PathSeparator)) {
foreach (string arg in args) {
string file = string.Format(@"{0}\{1}", directory, arg.EndsWith(".exe") ? arg : string.Format("{0}.exe", arg));
if (File.Exists(file)) {
if (!no_output) { Console.WriteLine(file); }
if (!print_all) { return 0; }
}
}
}
[/code]
I then said "Hey, F# was built for this kind of stuff right?"
So then I wrote an F# implementation.
[code]
namespace bit
open System.Collections.Generic
open System.IO
open System
module utility =
(* No way to detect an executable on POSIX otherwise :/ *)
#if POSIX
open Mono.Unix.Native
let private is_exe x = Syscall.access(x, AccessModes.X_OK) = 0
#else
let private is_exe x = x.EndsWith(".exe", StringComparison.OrdinalIgnoreCase)
#endif
let find_exe (exe:string) : string =
let join = sprintf "%s/%s"
try
Environment.GetEnvironmentVariable("PATH").Split(Path.PathSeparator) |>
List.ofArray |> List.find (fun (dir:string) ->
let path = join dir exe
File.Exists path && is_exe path) |> join <| exe
with
| :? KeyNotFoundException -> ""
(* We use which to call find_exe so as to stay cross platform *)
let rec which (exe:string) : string =
match Environment.OSVersion.Platform with
| System.PlatformID.Unix | System.PlatformID.MacOSX -> find_exe exe
| _ when not <| is_exe exe -> which <| sprintf "%s.exe" exe
| _ -> find_exe exe
[/code]
And then I took a step back and thought, "Man surely I can get rid of that unnecessary find_exe function"
[i]So I did[/i]
[code]
namespace bit
open System.Collections.Generic
open System.IO
open System
module utility =
(* No way to detect an executable on POSIX otherwise :/ *)
#if POSIX
open Mono.Unix.Native
let private is_exe x = Syscall.access(x, AccessModes.X_OK) = 0
#else
let private is_exe x = x.EndsWith(".exe", StringComparison.OrdinalIgnoreCase)
#endif
let rec which (exe:string) : string =
match Environment.OSVersion.Platform with
| System.PlatformID.Win32NT when not <| is_exe exe ->
which <| sprintf "%s.exe" exe
| _ ->
let join = sprintf "%s/%s"
try
Environment.GetEnvironmentVariable("PATH").Split(Path.PathSeparator)
|> List.ofArray
|> List.find (fun (dir:string) ->
let path = join dir exe
File.Exists path && is_exe path) |> join <| exe
with //TODO: implement LocateException
| :? KeyNotFoundException -> ""
[/code]
It's not as short as the python or C# version, but it works on Unix (The C# one did not because it was never written for it), there is an error handling of sorts so that you can simple call which('clang'), and on windows it will search for clang.exe rather than just clang (the python version did this as well)
Also, pattern matching is amazing. I'm sure some would disagree with me that the F# version is a bit more succinct than the C# version, but just take a second look at the F# one, and you'll see that absolutely nowhere do I loop through anything. Unlike the C# version where I have a nested foreach. (I'm sure turb will show up and give some elegant C# implementation that makes this look like child's play but whatevs :v:)
[img]http://dl.dropbox.com/u/2276133/game06%202011-08-08%2000-32-31-02.gif[/img]
I've been working on a menu for my game.
Heres the options menu because fraps wouldn't record it
[img]http://gyazo.com/f8293de5e2bedc95afb1d184146c2104.png[/img]
I'm going to base my emulator to the Atari 2600. :buddy: at you atari
I was looking at amazon ec2 earlier, and if the maximum instances you can have running at any time is 20, then for $28,000 per month you could have 160 cores with a total of 1.4 [B]terabytes[/B] of ram. Thats almost 6 times the size of both of my hard drives combined (yeah, I need a bigger one)! Wow. For just $1440/mo you could have 8 cores with [B]68.4[/B] gigabytes of ram. Thats bigger than the biggest iPhone's internal memory!
How does amazon even get that much ram (68.4 gb/instance) into one server? Or do servers share ram or some crazy shit like that?
Now the real question is, what the fuck are you going to do with that much ram? :v:
[QUOTE=bobthe2lol;31597940]I was looking at amazon ec2 earlier, and if the maximum instances you can have running at any time is 20, then for $28,000 per month you could have 160 cores with a total of 1.4 [B]terabytes[/B] of ram. Thats almost 6 times the size of both of my hard drives combined (yeah, I need a bigger one)! Wow. For just $1440/mo you could have 8 cores with [B]68.4[/B] gigabytes of ram. Thats bigger than the biggest iPhone's internal memory!
How does amazon even get that much ram (68.4 gb/instance) into one server? Or do servers share ram or some crazy shit like that?
Now the real question is, what the fuck are you going to do with that much ram? :v:[/QUOTE]
Calculate Pi.
[HR][/HR]
Anyway the atari display looks like a mindfuck. I'm having second thoughts.
[editline]8th August 2011[/editline]
So, I'm sticking to commodore 64.
[editline]8th August 2011[/editline]
Wikipedia lied. Switching to yet another console.
[editline]8th August 2011[/editline]
When the IDE updates and says, Applying changes now may be buggy n stuff, actually listen.
:tinfoil:
[QUOTE=bobthe2lol;31597940]I was looking at amazon ec2 earlier, and if the maximum instances you can have running at any time is 20, then for $28,000 per month you could have 160 cores with a total of 1.4 [B]terabytes[/B] of ram. Thats almost 6 times the size of both of my hard drives combined (yeah, I need a bigger one)! Wow. For just $1440/mo you could have 8 cores with [B]68.4[/B] gigabytes of ram. Thats bigger than the biggest iPhone's internal memory!
How does amazon even get that much ram (68.4 gb/instance) into one server? Or do servers share ram or some crazy shit like that?
Now the real question is, what the fuck are you going to do with that much ram? :v:[/QUOTE]
EC2 is ridiculously expensive.
[QUOTE=bobthe2lol;31597940]For just $1440/mo you could have 8 cores with [B]68.4[/B] gigabytes of ram. [/QUOTE]
Or you could have almost 5 of [url=http://www.ovh.co.uk/products/mg_best_of.xml]these[/url], which gives you a total of 80 cores, 120GB of RAM, 30TB of storage and 10Gbit link on each box.
[QUOTE=tanraga;31599763]EC2 is ridiculously expensive.[/QUOTE]
It is, unless you're trying to stay under with free instances. Then the whole spinning-up-and-down gimmick becomes quite useful in compile farms.
Sorry, you need to Log In to post a reply to this thread.