Here is a small list of new classes and methods in Java 8 b70:
--------------------------------
java/io/DefaultFileSystem
class DefaultFileSystem
--------------------------------
java/lang/AbstractStringBuilder
AbstractStringBuilder append(AbstractStringBuilder asb)
--------------------------------
java/lang/Boolean
public static int hashCode(boolean value)
--------------------------------
java/lang/Byte
public static int hashCode(byte value)
public static int toUnsignedInt(byte x)
public static long toUnsignedLong(byte x)
public static final int BYTES = SIZE / Byte.SIZE
--------------------------------
java/lang/Character
public static final UnicodeBlock ARABIC_EXTENDED_A = new UnicodeBlock("ARABIC_EXTENDED_A", "ARABIC EXTENDED-A", "ARABICEXTENDED-A")
public static final UnicodeBlock SUNDANESE_SUPPLEMENT = new UnicodeBlock("SUNDANESE_SUPPLEMENT", "SUNDANESE SUPPLEMENT", "SUNDANESESUPPLEMENT")
public static final UnicodeBlock MEETEI_MAYEK_EXTENSIONS = new UnicodeBlock("MEETEI_MAYEK_EXTENSIONS", "MEETEI MAYEK EXTENSIONS", "MEETEIMAYEKEXTENSIONS")
public static final UnicodeBlock MEROITIC_HIEROGLYPHS = new UnicodeBlock("MEROITIC_HIEROGLYPHS", "MEROITIC HIEROGLYPHS", "MEROITICHIEROGLYPHS")
public static final UnicodeBlock MEROITIC_CURSIVE = new UnicodeBlock("MEROITIC_CURSIVE", "MEROITIC CURSIVE", "MEROITICCURSIVE")
public static final UnicodeBlock SORA_SOMPENG = new UnicodeBlock("SORA_SOMPENG", "SORA SOMPENG", "SORASOMPENG")
public static final UnicodeBlock CHAKMA = new UnicodeBlock("CHAKMA")
public static final UnicodeBlock SHARADA = new UnicodeBlock("SHARADA")
public static final UnicodeBlock TAKRI = new UnicodeBlock("TAKRI")
public static final UnicodeBlock MIAO = new UnicodeBlock("MIAO")
public static final UnicodeBlock ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS = new UnicodeBlock("ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS", "ARABIC MATHEMATICAL ALPHABETIC SYMBOLS", "ARABICMATHEMATICALALPHABETICSYMBOLS")
public static int hashCode(char value)
public static final int BYTES = SIZE / Byte.SIZE
--------------------------------
java/lang/Class
public <A extends Annotation> A[] getAnnotations(Class<A> annotationClass)
public <A extends Annotation> A getDeclaredAnnotation(Class<A> annotationClass)
public <A extends Annotation> A[] getDeclaredAnnotations(Class<A> annotationClass)
--------------------------------
java/lang/Double
public static final int BYTES = SIZE / Byte.SIZE
public static boolean isFinite(double d)
public static int hashCode(double value)
--------------------------------
java/lang/Float
public static final int BYTES = SIZE / Byte.SIZE
public static boolean isFinite(float f)
public static int hashCode(float value)
--------------------------------
java/lang/Integer
public static String toUnsignedString(int i, int radix)
public static String toUnsignedString(int i)
public static int parseUnsignedInt(String s, int radix) throws NumberFormatException
public static int parseUnsignedInt(String s) throws NumberFormatException
public static int hashCode(int value)
public static int compareUnsigned(int x, int y)
public static long toUnsignedLong(int x)
public static int divideUnsigned(int dividend, int divisor)
public static int remainderUnsigned(int dividend, int divisor)
public static final int BYTES = SIZE / Byte.SIZE
--------------------------------
java/lang/InternalError
public InternalError(String message, Throwable cause)
public InternalError(Throwable cause)
--------------------------------
java/lang/Long
public static String toUnsignedString(long i, int radix)
public static String toUnsignedString(long i)
public static long parseUnsignedLong(String s, int radix) throws NumberFormatException
public static long parseUnsignedLong(String s) throws NumberFormatException
public static int hashCode(long value)
public static int compareUnsigned(long x, long y)
public static long divideUnsigned(long dividend, long divisor)
public static long remainderUnsigned(long dividend, long divisor)
public static final int BYTES = SIZE / Byte.SIZE
--------------------------------
java/lang/Math
public static int addExact(int x, int y)
public static long addExact(long x, long y)
public static int subtractExact(int x, int y)
public static long subtractExact(long x, long y)
public static int multiplyExact(int x, int y)
public static long multiplyExact(long x, long y)
public static int toIntExact(long value)
public static int floorDiv(int x, int y)
public static long floorDiv(long x, long y)
public static int floorMod(int x, int y)
public static long floorMod(long x, long y)
public static double nextDown(double d)
public static float nextDown(float f)
--------------------------------
java/lang/Package
public <A extends Annotation> A[] getAnnotations(Class<A> annotationClass)
public <A extends Annotation> A getDeclaredAnnotation(Class<A> annotationClass)
public <A extends Annotation> A[] getDeclaredAnnotations(Class<A> annotationClass)
--------------------------------
java/lang/Process
public boolean waitFor(long timeout, TimeUnit unit) throws InterruptedException
public Process destroyForcibly()
public boolean isAlive()
--------------------------------
java/lang/Short
public static int hashCode(short value)
public static final int BYTES = SIZE / Byte.SIZE
public static int toUnsignedInt(short x)
public static long toUnsignedLong(short x)
--------------------------------
java/lang/StrictMath
public static int addExact(int x, int y)
public static long addExact(long x, long y)
public static int subtractExact(int x, int y)
public static long subtractExact(long x, long y)
public static int multiplyExact(int x, int y)
public static long multiplyExact(long x, long y)
public static int toIntExact(long value)
public static int floorDiv(int x, int y)
public static long floorDiv(long x, long y)
public static int floorMod(int x, int y)
public static long floorMod(long x, long y)
public static double nextDown(double d)
public static float nextDown(float f)
--------------------------------
java/lang/StringBuffer
@Override synchronized StringBuffer append(AbstractStringBuilder asb)
--------------------------------
java/lang/ThreadLocal
public static <T> ThreadLocal<T> withInitial(Supplier<? extends T> supplier)
--------------------------------
java/lang/VirtualMachineError
public VirtualMachineError(String message, Throwable cause)
public VirtualMachineError(Throwable cause)
--------------------------------
java/lang/annotation/ContainedBy
@Documented @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.ANNOTATION_TYPE) public @interface ContainedBy
--------------------------------
java/lang/annotation/ContainerFor
@Documented @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.ANNOTATION_TYPE) public @interface ContainerFor
--------------------------------
java/lang/annotation/ElementType
--------------------------------
java/lang/annotation/InvalidContainerAnnotationError
public class InvalidContainerAnnotationError extends AnnotationFormatError
--------------------------------
java/lang/annotation/Native
@Documented @Target(ElementType.FIELD) @Retention(RetentionPolicy.SOURCE) public @interface Native
--------------------------------
java/lang/management/LockInfo
public static LockInfo from(CompositeData cd)
--------------------------------
java/lang/reflect/AccessibleObject
public <T extends Annotation> T[] getAnnotations(Class<T> annotationClass)
public <T extends Annotation> T getDeclaredAnnotation(Class<T> annotationClass)
public <T extends Annotation> T[] getDeclaredAnnotations(Class<T> annotationClass)
--------------------------------
java/lang/reflect/AnnotatedElement
<T extends Annotation> T[] getAnnotations(Class<T> annotationClass)
<T extends Annotation> T getDeclaredAnnotation(Class<T> annotationClass)
<T extends Annotation> T[] getDeclaredAnnotations(Class<T> annotationClass)
--------------------------------
java/lang/reflect/Executable
public abstract class Executable extends AccessibleObject implements Member, GenericDeclaration
public <T extends Annotation> T[] getAnnotations(Class<T> annotationClass)
--------------------------------
java/lang/reflect/Field
public <T extends Annotation> T[] getAnnotations(Class<T> annotationClass)
--------------------------------
java/math/BigInteger
public long longValueExact()
public int intValueExact()
public short shortValueExact()
public byte byteValueExact()
--------------------------------
java/security/cert/CertPathBuilder
public final CertPathChecker getRevocationChecker()
--------------------------------
java/security/cert/CertPathBuilderSpi
public CertPathChecker engineGetRevocationChecker()
--------------------------------
java/security/cert/CertPathChecker
public interface CertPathChecker
--------------------------------
java/security/cert/CertPathValidator
public final CertPathChecker getRevocationChecker()
--------------------------------
java/security/cert/CertPathValidatorSpi
public CertPathChecker engineGetRevocationChecker()
--------------------------------
java/security/cert/Certificate
public void verify(PublicKey key, Provider sigProvider) throws CertificateException, NoSuchAlgorithmException, InvalidKeyException, SignatureException
--------------------------------
java/security/cert/PKIXRevocationChecker
public abstract class PKIXRevocationChecker extends PKIXCertPathChecker
--------------------------------
java/security/cert/X509CRL
public void verify(PublicKey key, Provider sigProvider) throws CRLException, NoSuchAlgorithmException, InvalidKeyException, SignatureException
--------------------------------
java/security/cert/X509Certificate
public void verify(PublicKey key, Provider sigProvider) throws CertificateException, NoSuchAlgorithmException, InvalidKeyException, SignatureException
--------------------------------
java/util/Base64
public class Base64
public static class Encoder
public static class Decoder
--------------------------------
java/util/Calendar
public static final int NARROW_FORMAT = 4
public static final int NARROW_STANDALONE = NARROW_FORMAT | STANDALONE_MASK
public static final int SHORT_FORMAT = 1
public static final int LONG_FORMAT = 2
public static final int SHORT_STANDALONE = SHORT | STANDALONE_MASK
public static final int LONG_STANDALONE = LONG | STANDALONE_MASK
public String getCalendarType()
--------------------------------
java/util/Collections
public static <E> Queue<E> checkedQueue(Queue<E> queue, Class<E> type)
@SuppressWarnings("unchecked") public static final <E> SortedSet<E> emptySortedSet()
--------------------------------
java/util/GregorianCalendar
@Override public String getCalendarType()
--------------------------------
java/util/Locale
public boolean hasExtensions()
public Locale stripExtensions()
public static enum FilteringMode
public static final class LanguageRange
public static List<Locale> filter(List<LanguageRange> priorityList, Collection<Locale> locales, FilteringMode mode)
public static List<Locale> filter(List<LanguageRange> priorityList, Collection<Locale> locales)
public static List<String> filterTags(List<LanguageRange> priorityList, Collection<String> tags, FilteringMode mode)
public static List<String> filterTags(List<LanguageRange> priorityList, Collection<String> tags)
public static Locale lookup(List<LanguageRange> priorityList, Collection<Locale> locales)
public static String lookupTag(List<LanguageRange> priorityList, Collection<String> tags)
--------------------------------
java/util/function/BinaryOperator
public interface BinaryOperator<T>
--------------------------------
java/util/function/Block
public interface Block<T>
--------------------------------
java/util/function/DoubleBinaryOperator
public interface DoubleBinaryOperator /* extends BinaryOperator<Double> */
--------------------------------
java/util/function/DoubleBlock
public interface DoubleBlock
--------------------------------
java/util/function/DoubleFunction
public interface DoubleFunction<T>
--------------------------------
java/util/function/DoubleSupplier
public interface DoubleSupplier
--------------------------------
java/util/function/DoubleUnaryOperator
public interface DoubleUnaryOperator
--------------------------------
java/util/function/Function
public interface Function<T, R>
--------------------------------
java/util/function/IntBinaryOperator
public interface IntBinaryOperator
--------------------------------
java/util/function/IntBlock
public interface IntBlock
--------------------------------
java/util/function/IntFunction
public interface IntFunction<T>
--------------------------------
java/util/function/IntSupplier
public interface IntSupplier
--------------------------------
java/util/function/IntUnaryOperator
public interface IntUnaryOperator
--------------------------------
java/util/function/LongBinaryOperator
public interface LongBinaryOperator
--------------------------------
java/util/function/LongBlock
public interface LongBlock
--------------------------------
java/util/function/LongFunction
public interface LongFunction<T>
--------------------------------
java/util/function/LongSupplier
public interface LongSupplier
--------------------------------
java/util/function/LongUnaryOperator
public interface LongUnaryOperator
--------------------------------
java/util/function/Predicate
public interface Predicate<T>
--------------------------------
java/util/function/Supplier
public interface Supplier<T>
--------------------------------
java/util/function/UnaryOperator
public interface UnaryOperator<T>
--------------------------------
java/util/spi/CalendarDataProvider
public abstract class CalendarDataProvider extends LocaleServiceProvider
--------------------------------
java/util/spi/CalendarNameProvider
public abstract class CalendarNameProvider extends LocaleServiceProvider
--------------------------------
java/util/spi/LocaleServiceProvider
public boolean isSupportedLocale(Locale locale)
--------------------------------
java/util/spi/ResourceBundleControlProvider
public interface ResourceBundleControlProvider
--------------------------------
java/util/spi/TimeZoneNameProvider
public String getGenericDisplayName(String ID, int style, Locale locale)
--------------------------------
java/util/zip/Adler32
public void update(ByteBuffer buffer)
--------------------------------
java/util/zip/CRC32
public void update(ByteBuffer buffer)
--------------------------------
javax/lang/model/SourceVersion
RELEASE_8
--------------------------------
javax/lang/model/type/IntersectionType
public interface IntersectionType extends TypeMirror
--------------------------------
javax/lang/model/type/TypeKind
INTERSECTION
--------------------------------
javax/lang/model/type/TypeVisitor
R visitIntersection(IntersectionType t, P p)
--------------------------------
javax/lang/model/util/AbstractAnnotationValueVisitor8
@SupportedSourceVersion(RELEASE_8) public abstract class AbstractAnnotationValueVisitor8<R, P> extends AbstractAnnotationValueVisitor7<R, P>
--------------------------------
javax/lang/model/util/AbstractElementVisitor8
@SupportedSourceVersion(RELEASE_8) public abstract class AbstractElementVisitor8<R, P> extends AbstractElementVisitor7<R, P>
--------------------------------
javax/lang/model/util/AbstractTypeVisitor6
public R visitIntersection(IntersectionType t, P p)
--------------------------------
javax/lang/model/util/AbstractTypeVisitor8
public abstract class AbstractTypeVisitor8<R, P> extends AbstractTypeVisitor7<R, P>
--------------------------------
javax/lang/model/util/ElementKindVisitor8
@SupportedSourceVersion(RELEASE_8) public class ElementKindVisitor8<R, P> extends ElementKindVisitor7<R, P>
--------------------------------
javax/lang/model/util/ElementScanner8
@SupportedSourceVersion(RELEASE_8) public class ElementScanner8<R, P> extends ElementScanner7<R, P>
--------------------------------
javax/lang/model/util/SimpleAnnotationValueVisitor8
@SupportedSourceVersion(RELEASE_8) public class SimpleAnnotationValueVisitor8<R, P> extends SimpleAnnotationValueVisitor7<R, P>
--------------------------------
javax/lang/model/util/SimpleElementVisitor8
@SupportedSourceVersion(RELEASE_8) public class SimpleElementVisitor8<R, P> extends SimpleElementVisitor7<R, P>
--------------------------------
javax/lang/model/util/SimpleTypeVisitor8
@SupportedSourceVersion(RELEASE_8) public class SimpleTypeVisitor8<R, P> extends SimpleTypeVisitor7<R, P>
--------------------------------
javax/lang/model/util/TypeKindVisitor8
@SupportedSourceVersion(RELEASE_8) public class TypeKindVisitor8<R, P> extends TypeKindVisitor7<R, P>
--------------------------------
javax/tools/StandardLocation
NATIVE_HEADER_OUTPUT
--------------------------------
javax/tools/annotation/GenerateNativeHeader
@Documented @Target(TYPE) @Retention(SOURCE) public @interface GenerateNativeHeader
2013. január 4., péntek
2013. január 1., kedd
Játékok: vegyesvágott kaland
Deponia
Metacritic: 74A Daedalic Entertainment point-and-click kalandjátéka, amit a nemrég megjelent Chaos on Deponia kapcsán vettem meg. Érdekes és humoros játék, viszont jó párszor bele kellett néznem a végigjátszásba. Az Achievementek relatíve egyszerűek voltak. Aki ismeri a The Whispered World játékukat, az most fellélegezhet, mert vége a végtelen dumának és a számtalan kattintható helyszínnek. Az irányítás egyszerűbb, mert elég az egér két gombjával utasításokat adni (akció+megnéz). Elsőre kb. 10 órába tellett, másodikra, a Droggleljug teljesítményhez már csak 1 óra kellett.
Értékelés: 80%
Chaos on Deponia
Metacritic: 79
Némiképp fejlődött az előző részhez képest. Továbbra is vicces és érdekes, de pl. az Achievementek harmada már korántsem olyan triviális. 12 óra játék után még 10 db hiányzik. Összességében jó sorozat, és amint megjelenik az utolsó, Good bye Deponia, érdemes mindhármat egy csomagban megvenni, és kijátszani.
Értékelés: 85%
A New Beginning: Final cut
Ugyanattól a Daedalic Entertainment-től származik, de egy Deponia-nál korábbi játékuk, ráadásul konzolról hozták át. Ha játszottál a Deponia sorozattal, könnyen felismered a főhősnő rajzolatát (bár szerintem kicsit furcsán áll a lába.) Érdekes történet, puzzle-ök. Az Achievementek relatíve értelemszerűek, bár néha nehéz volt előre eldönteni, hogy most történet függő-e (90%), vagy speciális, újratöltést vagy újrajátszást ígényel. Nem rossz, de azért inkább leárazáskor érdemes megvenni. A vezérlés talán egy kicsit körülményes, mert 4 slotnyi akció lehetséges, amint a cél fölötti némi egérgomb lenyomva tartással lehet előhívni, á la The Whispered World. A Deponia irányítása jobban feküdt nekem.
Értékelés 75%
Lost Horizon
Ez viszont már egy másik bandától van: Deep Silver, amit a Secret Files sorozatból lehet ismerős. A SF 3 előrendelésekor kaptam meg, meg is feletkeztem róla. Meglepően messzire jutottam benne, talán a korábbi játékokban szerzett friss tapasztalatnak köszönhetően, mielőtt a végigjátszáshoz kellett nyúlnom. Achievementek nincsenek benne.
Értékelés 75%
Címkék:
a new beginning,
chaos on deponia,
daedalic,
deep silver,
deponia,
game,
kaland,
lost horizon
2012. szeptember 29., szombat
Kickstarter: Nexus 2
If you liked Nexus: The Jupiter Incident, here is a good news. The developers of the game started a Kickstarter campaign. The $650,000 seems to be a longshot, but worth a proper pledge, especially if you pirated Nexus 1 ;)
http://www.kickstarter.com/projects/mostwanted/nexus-2-the-gods-awaken
BTW, Most Wanted Entertainment & HD Interactive gave us Joint Task Force, one of my all-time favorite tactical combat game.
http://www.kickstarter.com/projects/mostwanted/nexus-2-the-gods-awaken
BTW, Most Wanted Entertainment & HD Interactive gave us Joint Task Force, one of my all-time favorite tactical combat game.
2012. augusztus 14., kedd
Open Imperium Galactica 0.95.040 kiadása
Elkészítettem az Open Imperium Galactica következő kiadását. A Launcher-t elindítva máris frissül a játék.
Emellett még készítettem két kérdéssort (angolul és magyarul), aminek kitöltésével segíthetsz a munkánkban:
Angolul
Magyarul
Elegendő csak az egyiket kitölteni.
Emellett még készítettem két kérdéssort (angolul és magyarul), aminek kitöltésével segíthetsz a munkánkban:
Angolul
Magyarul
Elegendő csak az egyiket kitölteni.
Címkék:
game,
játék,
kérdőív,
open imperium galactica
2012. augusztus 11., szombat
Preliminary: Legends of Pegasus
This is just a preliminary of a "concurrent" 4x turn based space strategy game just released: Legends of Pegasus.
Practically unplayable. Crashes, no-progression bugs, unresponsive UI and ships, bad tutorial, tiny font. I'll have to wait for a few patch turns. So many obvious bugs, I wonder how these could have get past testing? - Oh wait! Open-IG had several of such bugs! - Yes, but many got fixed within a few hours, and, my game is free. €40 is kind of an expensive.
Lessons for Open-IG so far: have a proper tutorial.
Practically unplayable. Crashes, no-progression bugs, unresponsive UI and ships, bad tutorial, tiny font. I'll have to wait for a few patch turns. So many obvious bugs, I wonder how these could have get past testing? - Oh wait! Open-IG had several of such bugs! - Yes, but many got fixed within a few hours, and, my game is free. €40 is kind of an expensive.
Lessons for Open-IG so far: have a proper tutorial.
Címkék:
4x,
game,
játék,
legends of pegasus,
space strategy
2012. augusztus 5., vasárnap
Endless Space
(Metacritic: 79%)
Summary: Nice looking game, but I failed to win on newbie...
Endless Space is one of the latest stream of indie 4x space strategy games building on the gameplay of Master of Orion 2's turn based-slider adjusting gameplay. I'm personally not a fan of such turn based strategy games due the inherent difficulty: the AI seems to know and work along an optimal path whereas you are left with either exploratory play or strategy guides.
The first disappointment was the way the tutorial is presented. No voiceover (as usual) and presented as a screenshot of the selected screen and several text bullet points to its right. Maybe if the bullet points were applied in the actual gameplay window... At first, it was a bit difficult to remember each option, but as I played, almost every screen and function felt well polished.
One thing I missed is the ability to jump to the next and previous star system from within a system view. I had to jump back to the galaxy view or open the systems from the empire view listing.
The tooltips were well placed and very informative. The technology tree was intriguing and very diverse, although it would take a very long time or very large galaxy to research every bit of it within an acceptable amount of real time.
Galaxy- and empire-wide events were good ideas, although annoying sometimes.
The AI seems to be more challenging than the difficulty settings would suggest. I've seen reports about the AI winning easily with economic victory or total points. I thought I could win by military strength, but it soon turned out to be problematic. The AI had at least 25 fleets with the strength quarter of my forces, but they were constantly pounding on each of my fleets until destruction. Early colonization and expansion is penalized by the game and it may take long time to make all kinds of planets colonizable.
The music is acceptable, although sometimes too high pitched. The graphics is okay, maybe a bit fancy on the system view. I played all my battles on auto, so no comment on the simplistic card-based battles.
Conclusion: 70%. Maybe I'll play it one day again.
Once I've finished the Beta-2 of Open Imperium Galactica, I'll try the next of such games I have purchased recently: Galactic Civilizations 2.
Címkék:
4x,
game,
indie,
játék,
moo2 style,
sandbox,
space strategy
2012. július 28., szombat
Midnight Mysteries: Devil on the Mississippi battleship minigame solver
(I'm a bit behind in my games both bought and self-developed.)
I've been playing with the Midnight Mysteries series lately and I've come across a nice battleship-like minigame with an associated achievement: find all ship parts without missing a hit (called "Dead Eye").

I have created a brute-force algorithm to solve this randomly generated puzzle. The algorithm sequentially modifies coordinates until the given layout matches the given coverage numbers.
Two considerations:
1) The algorithm may find multiple, same looking solutions when two or three of the same kind appears in a row or column;
2) sometimes, multiple distinct solutions may exist without any safe shots. In the example below, two horizontal 2 length ships can be present at either (0, 4)+(2, 3) or (0, 3)+(2, 4). A safe shot would be to put one at (0, 4) and then see the graphics indicate if this is the beginning or end of the ship.
Code @ GitHub
I've been playing with the Midnight Mysteries series lately and I've come across a nice battleship-like minigame with an associated achievement: find all ship parts without missing a hit (called "Dead Eye").
I have created a brute-force algorithm to solve this randomly generated puzzle. The algorithm sequentially modifies coordinates until the given layout matches the given coverage numbers.
Two considerations:
1) The algorithm may find multiple, same looking solutions when two or three of the same kind appears in a row or column;
2) sometimes, multiple distinct solutions may exist without any safe shots. In the example below, two horizontal 2 length ships can be present at either (0, 4)+(2, 3) or (0, 3)+(2, 4). A safe shot would be to put one at (0, 4) and then see the graphics indicate if this is the beginning or end of the ship.
Code @ GitHub
Címkék:
algorithm,
algoritmus,
game,
hidden object,
játék
2012. június 15., péntek
Dübörög a független játékkészítés
Ej ha, de ráérünk. Íme néhány érdekesebb független (indie) projekt, amiket mostanában követni szoktam, és van némi közük az Open Imperium Galacticához...
- StarDrive (Kickstarter): érdekesnek ígérkezik, bár jelenleg jó néhány felhasználói felület problémával küzd. A 17.5k az eredeti 7.5k-hoz képest talán nagy eredmény, de attól tartok, túl kevés és a készítő nem fogja tudni befejezni rendesen (bár az egyéb előrendelésekről nincs info).
- Gemini Wars: Egy már kész, jónak tűnő, sztorit (!) is tartalmazó játék, bár sajnos még így is bugos. A felület érdekes, a nagy forgó animációnak vajon mi értelme van a helyfoglaláson kívül?
- Sins of a Solar Empire: Rebellion: A sorozatot sokan ajnározzák. Úgy tudom, nincsen igazán sztori. A felület talán egy kicsit erőltetett grafikus stílusú.
- Endless Space: ebből is csak béta van, de nem sokat játszottam még vele. A grafika mindenesetre szép. Az RPS-nek tetszett.
Előbb-utóbb csak lesz már saját eredeti ötletből fakadó 4X űrstratégiám is...
Címkék:
indie,
játék,
űrstratégia
FTL: Faster Than Light (closed beta)
I have mixed feelings about this game, FTL: Faster Than Like. It is said to be a rogue-like game, but I never played such games.
FTL is a Kickstarter funded independent and ongoing development. Think of it as a game with mechanics you always wanted to do when watching a Star Trek episode: command your crew around, transfer energy around, repair damages, etc.
After playing a few hours, I came to a bitter conclusion: this might not be my type of game. Here is why:
FTL is a Kickstarter funded independent and ongoing development. Think of it as a game with mechanics you always wanted to do when watching a Star Trek episode: command your crew around, transfer energy around, repair damages, etc.
After playing a few hours, I came to a bitter conclusion: this might not be my type of game. Here is why:
- No save option at all, not even session saves. Some argue that such kind of games can't work when saving is possible. For me, it was kind of a disappointment. If not anytime save, then at least some sector or multi-sector autosaves would be great so you don't need to start all over again. According to the devs, no such feature will be implemented.
- The gameplay seem to rely on precise action from your side, what to purchase, how to use, etc.
- Following the many defeats in the first and second sectors on easy (!), I turned to my old buddy, the Memory Editor, which seemed to be enough for about half the game. After that, defeat and start over. I didn't enjoy that.
I backed this project with the money 3 times of its probable cost after release, but I feel a small regret. Beyond this, I backed several other projects as well, which I will blog about in the future. My current observation so far is as follows: If you back an indie project, don't forget that you are supporting the devs to create their game and not yours. It is their idea, their programming style and their gameplay mechanics. It is yet to turn up if there is a relation between funding and this distance factor.
Címkék:
ftl,
game,
indie,
játék,
rogue-like
2012. március 18., vasárnap
Mass Effect 3
(Metacritic: 91)
Korlátlan mennyiségű SPOILER várható!
Az eddigi talán legjobb eredeti IP sci-fi univerzum záródarabja. Utólag bánva, hogy a Mass Effect 2-ből nem a gyűjtői kiadást vettem meg, ezúttal kételyek hiányában rohantam, amint megjött a "kapható" e-mail. Megérte? Vajon megérte annak idején megvenni a Starcraft 2 gyűjtői kiadását? Nem tudom.
Aktiválás
Oké, a játék Originnel megy, aminek szerencsére jó letöltője van, így 6-án este már fenn is volt minden ajándék DLC. Persze játszani nem lehetett vele. Sajnos nem tudom megérteni, hogy manapság miért nem lehet egyszerre mindenhol elérhetővé tenni? Amerikában 6, nálunk 9 és Japánban 15-e volt a határidő. Talán a szerverek terhelését akarták így szétoszlatni?
Egyetlen előnye volt azért, mégpedig hogy mire hozzáfogtam, addigra már voltak hasznos tanácsok a wikia lapokon.
Előzmények
Sok száz döntési változó (némelyik többértékű, így jön össze az ezernyi érték). Fogtam hát az első ME1-ME2 végigjátszásomat, és azzal folytattam.
Sajnos menet közben derült ki, hogy bizony az ME2 DLC-k bekavarnak a dologba. Néhány küldetés, társ és esemény csak akkor jön elő a ME3-ban, ha az ME2-t már az elejétől ezekkel a DLC-kkel játszottuk végig. Pl. hiába teljesítettem Kasumi dolgait a lehetetlen küldetés után, mégsem jelent meg.
Vannak ugyan mentéseim, de igazán egy teljes újrajátszás kellene a ME2-ből. Ez azonban két okból nem jön egyhamar. Az egyik ok, hogy az ME2 küldetései, bolygósimizásai és harcrendszere kicsit rosszabb, mint az ME3. Vagy gondoljunk bele, mennyire fárasztó az ME1 19 bolygójának végig-Mako-zása (mai napig megvan kinyomtatva minden egyes bolygó térképe). A másik okról majd a végén.
Újdonságok
Ismét vannak gránátok. Ez jó is, meg rossz is. A csapattársaim egész jól elboldogultak a használatukkal, nekem viszont jó, ha 10%-ban sikerült velük érdemi sebzést okozni. Egyszerűen mindig mellément.
Lehet ismét moddolni a fegyvereket. Míg az első részben 0-3 slot állt rendelkezésre, itt fixen 2 van, de cserébe bármilyen fegyveren. Én tűzerőre mentem, így a csőhosszabbítás, a koncentráció növelés és a Hahne-Kedar féle páncélelemekre gyúrtam. A többiről nem tudok érdemben nyilatkozni. A pályákon van elég thermal clip, így nem kell igazán azt fejleszteni.
Omniblade, ami jól néz ki, de ha már ilyen közel jött az ellenfél, akkor már rég késő. Próbáljatok meg egy Banshee-t lemeelezni.
Fedezékmechanika bővült, de ezeket nem nagyon használtam. Inkább az volt a gondom, hogy nem oda guggolt le, ahova szerettem volna. Néha a tárgyfelvétel helyett is ezt csinálta. Mintha lehetne állítani ezen is, de nem próbáltam.
Sisak nélkül. Végre be lehet állítani, hogy beszélgetésekhez vegye le a sisakot, bár állítólag az egybepáncéloknál ez nem működik. Viszont nincs már többé "csókold meg a helmetem"; de csak azért, mert nem fordul elő ilyen szituáció.
Változások
A harcrendszer élvezeti értéke sokat javult. Kilőni az ellenséget az új Black Widow mesterlövészpuskával a fedezéke mögül nagyszerű érzés.
Bőséges fegyverállomány, illetve az szinte az összes ME2 egyéni páncél elérhető. Használni csak a Cerberus változatot próbáltam, de a már említett tűzerő miatt inkább a normál N7-re szavaztam.
A Normandy SR-2 átalakítva (btw, nem szedték szét és rakták újra össze, mert nem volt rá idő). A fegyverszoba lekerült a hangárba, ami kényelmesebb. Viszont belerakták azt a fárasztó ellenőrző pontot. Az elején még érdekes, de később, amikor már több kilométert szaladoztunk, már csak nyűg. De hát el kellett fedni, hogy a CIC túl nagy, és tölteni kell.
Az új reputációs rendszer lényegesen jobb lett. Úgy vettem észre, hogy a teljes csík számít egy-egy helyen, nem pedig a piros vagy kék alcsík. Bár nem próbáltam, de talán full renegáttal is lehet paragon válaszokat adni TIM-nek a végén?
Végre nem kell végigsimizni a bolygókat erőforrásokért. Ötvözték az első rész "oda megyek ahhoz a fura pixelhez" típusú felderítést a "radaron egy pötty van" kereséssel. Ezek a mellékküldetések jó kikapcsolódást jelentettek. A szkenner-reaper viszont azért nem nagyon értem. Talán nem akarták a készítők, hogy hamar ráunjunk a keresgélésre, és így kényszerítettek minket a küldetések folytatására?
Szerencsére eltűntek a bosszantó fizikai bugok, végre nem akadunk fel egy "magasabb létsíkon".
Nem látjuk akcióban a Thanix ágyúnkat, bár állítólag rendszeresítették a szövetségi és turian hajókon. Gondolom mivel itt másodrendű a Normandy felszereltsége, nem akartak időt áldozni alternatív csatavideókra. Vagy mint általában a Star Trekben, egy epizód remek megoldását gyakran soha többé nem alkalmazzák (lásd pl. álcázott hajó felderítése a köd módszerrel).
Régi ismerősök
Látszik, hogy a közönségnyomás hatására került ismét vissza Garrus és Tali közénk. Sajnos a ki legyen csapattárs probléma döntő meghatározója a fejlesztői pénz és az adott karakter történeti diverzitása. Látszik, hogy azért spóroltak:
Ezek meg kik?
James: az új Jacob Taylor. Néhánynak a koncepció nem tetszett, másoknak a hangadója. Szerintem rendben van, jól elhelyezett karakter. Bár nem hittem, hogy Freddy hangja ennyire mély; fránya szinkronok.
EDI: amikor lehívtak az MI szobába, már akkor tudtam, hogy EDI belebújt az androidtestbe; ez annyira nyilvánvaló, nemde? Nekem tetszett, hogy előtérbe került; remekül rávilágított a szintetikusok szemszögeire. Alaposan kidolgozták, bár szerintem a kinézetét túlzásba vitték ("Shepard, you are staring.")
Javik: csúnyán lelőtt poénú DLC társunk, meghökkentő hozzáállással. A protheanokról kialakult romantikus képpel teljesen szembemegy. Remek megoldás, rámutat a saját előítéleteinkre. Hogy vajon tényleg kamu-párhuzamos fejlesztés volt, azt nehéz eldönteni. A thessiai küldetés végét azért átformálja, ha magunkkal visszük, ami azt feltételezi, hogy az történetírás és hangfelvétel ugyanakkor történt. A harc, kinézet és animációk valószínűleg tényleg párhuzamosan ment; de gondolom ez igaz szinte mindenkire.
Cortez: Végre van arca a pilótafülkének. Az ő karakterét és mondandóját picit erőltetettnek éreztem. Fejvakarás. A Mako vs Hammerhead vita fantasztikus volt!
Traynor: ő testesíti meg korunk egyedülálló férfiainak az egyik párkeresési nehézségét. Régebben ugye csak két nőállapot volt: egyedülálló, foglalt. Talán majd ha női karakterrel is végigjátszom.
Diana: látványos, de ő volt az egyetlen karakter, akire azonnal rámondtam: minek van itt? Ezzel nem vagyok egyedül. Még a pofán vágott riporternő is több war assetet hoz?! Zaeednak volt mélysége és jó anekdotái. Diana legfeljebb Traynorral cseverészik. Technikailag két dolgot emelnék ki: az arca furán hat, mintha rosszul szkennelték volna be; illetve a hangján egyfajta dupla-játék fedezhető fel.
Ami (még mindig) rossz
A csillagtérképet nézve nem lehet behívni a küldetésnaplót átmenetileg. De a naplóval más gondok is vannak:
95%
Korlátlan mennyiségű SPOILER várható!
Az eddigi talán legjobb eredeti IP sci-fi univerzum záródarabja. Utólag bánva, hogy a Mass Effect 2-ből nem a gyűjtői kiadást vettem meg, ezúttal kételyek hiányában rohantam, amint megjött a "kapható" e-mail. Megérte? Vajon megérte annak idején megvenni a Starcraft 2 gyűjtői kiadását? Nem tudom.
Aktiválás
Oké, a játék Originnel megy, aminek szerencsére jó letöltője van, így 6-án este már fenn is volt minden ajándék DLC. Persze játszani nem lehetett vele. Sajnos nem tudom megérteni, hogy manapság miért nem lehet egyszerre mindenhol elérhetővé tenni? Amerikában 6, nálunk 9 és Japánban 15-e volt a határidő. Talán a szerverek terhelését akarták így szétoszlatni?
Egyetlen előnye volt azért, mégpedig hogy mire hozzáfogtam, addigra már voltak hasznos tanácsok a wikia lapokon.
Előzmények
Sok száz döntési változó (némelyik többértékű, így jön össze az ezernyi érték). Fogtam hát az első ME1-ME2 végigjátszásomat, és azzal folytattam.
Sajnos menet közben derült ki, hogy bizony az ME2 DLC-k bekavarnak a dologba. Néhány küldetés, társ és esemény csak akkor jön elő a ME3-ban, ha az ME2-t már az elejétől ezekkel a DLC-kkel játszottuk végig. Pl. hiába teljesítettem Kasumi dolgait a lehetetlen küldetés után, mégsem jelent meg.
Vannak ugyan mentéseim, de igazán egy teljes újrajátszás kellene a ME2-ből. Ez azonban két okból nem jön egyhamar. Az egyik ok, hogy az ME2 küldetései, bolygósimizásai és harcrendszere kicsit rosszabb, mint az ME3. Vagy gondoljunk bele, mennyire fárasztó az ME1 19 bolygójának végig-Mako-zása (mai napig megvan kinyomtatva minden egyes bolygó térképe). A másik okról majd a végén.
Újdonságok
Ismét vannak gránátok. Ez jó is, meg rossz is. A csapattársaim egész jól elboldogultak a használatukkal, nekem viszont jó, ha 10%-ban sikerült velük érdemi sebzést okozni. Egyszerűen mindig mellément.
Lehet ismét moddolni a fegyvereket. Míg az első részben 0-3 slot állt rendelkezésre, itt fixen 2 van, de cserébe bármilyen fegyveren. Én tűzerőre mentem, így a csőhosszabbítás, a koncentráció növelés és a Hahne-Kedar féle páncélelemekre gyúrtam. A többiről nem tudok érdemben nyilatkozni. A pályákon van elég thermal clip, így nem kell igazán azt fejleszteni.
Omniblade, ami jól néz ki, de ha már ilyen közel jött az ellenfél, akkor már rég késő. Próbáljatok meg egy Banshee-t lemeelezni.
Fedezékmechanika bővült, de ezeket nem nagyon használtam. Inkább az volt a gondom, hogy nem oda guggolt le, ahova szerettem volna. Néha a tárgyfelvétel helyett is ezt csinálta. Mintha lehetne állítani ezen is, de nem próbáltam.
Sisak nélkül. Végre be lehet állítani, hogy beszélgetésekhez vegye le a sisakot, bár állítólag az egybepáncéloknál ez nem működik. Viszont nincs már többé "csókold meg a helmetem"; de csak azért, mert nem fordul elő ilyen szituáció.
Változások
A harcrendszer élvezeti értéke sokat javult. Kilőni az ellenséget az új Black Widow mesterlövészpuskával a fedezéke mögül nagyszerű érzés.
Bőséges fegyverállomány, illetve az szinte az összes ME2 egyéni páncél elérhető. Használni csak a Cerberus változatot próbáltam, de a már említett tűzerő miatt inkább a normál N7-re szavaztam.
A Normandy SR-2 átalakítva (btw, nem szedték szét és rakták újra össze, mert nem volt rá idő). A fegyverszoba lekerült a hangárba, ami kényelmesebb. Viszont belerakták azt a fárasztó ellenőrző pontot. Az elején még érdekes, de később, amikor már több kilométert szaladoztunk, már csak nyűg. De hát el kellett fedni, hogy a CIC túl nagy, és tölteni kell.
Az új reputációs rendszer lényegesen jobb lett. Úgy vettem észre, hogy a teljes csík számít egy-egy helyen, nem pedig a piros vagy kék alcsík. Bár nem próbáltam, de talán full renegáttal is lehet paragon válaszokat adni TIM-nek a végén?
Végre nem kell végigsimizni a bolygókat erőforrásokért. Ötvözték az első rész "oda megyek ahhoz a fura pixelhez" típusú felderítést a "radaron egy pötty van" kereséssel. Ezek a mellékküldetések jó kikapcsolódást jelentettek. A szkenner-reaper viszont azért nem nagyon értem. Talán nem akarták a készítők, hogy hamar ráunjunk a keresgélésre, és így kényszerítettek minket a küldetések folytatására?
Szerencsére eltűntek a bosszantó fizikai bugok, végre nem akadunk fel egy "magasabb létsíkon".
Nem látjuk akcióban a Thanix ágyúnkat, bár állítólag rendszeresítették a szövetségi és turian hajókon. Gondolom mivel itt másodrendű a Normandy felszereltsége, nem akartak időt áldozni alternatív csatavideókra. Vagy mint általában a Star Trekben, egy epizód remek megoldását gyakran soha többé nem alkalmazzák (lásd pl. álcázott hajó felderítése a köd módszerrel).
Régi ismerősök
Látszik, hogy a közönségnyomás hatására került ismét vissza Garrus és Tali közénk. Sajnos a ki legyen csapattárs probléma döntő meghatározója a fejlesztői pénz és az adott karakter történeti diverzitása. Látszik, hogy azért spóroltak:
- Liara: az egyetlen főállású esélyes volt.
- Ashley/Kaidan jórészt ki van ütve, úgy kb. 15 küldetés idejére.
- Talit viszonylag a végén kapjuk, ráadásul ezúttal nincsenek felvéve korai küldetéshangok, mint ahogy a ME2-ben voltak (mentésszerkesztéssel).
- Garrusra tetemes idő jutott, de ezt én a játékmechanikai előnyök/egyensúly számlájára írom. Kellett egy mesterlövész az elejétől.
- Wrex, Grunt, Legion: kisebb szerepeket kaptak, gondolom mivel a végigjátszások jelentős részében ők nem élték túl/meg.
- Mordin: őt a történet kötötte.
- Jacob: Meglepődve olvastam, hogy bizony ő nem maradt hűséges. Gondolom a történetírók megoldása arra, hogy hogyan hozzuk vissza, illetve mivel magyarázzuk, hogy annyira védelmezi a tudóscsapatot.
- Miranda: a Cerberus kifogásnál gondolom kapóra jött.
- Thane: Kicsit elhanyagolt bérgyilkos lehetett, minimális felbukkanást kapott.
- Zaeed/Kasumi: kedvenc DLC párosunk, jelentéktelen.
- Samara/Morinth: az egyik él, a másik nem. Samara rendben volt, de sajnáltam, hogy Morinth-tól csak egy e-mailt és egy Banshee-t kaptunk.
- Joker: vicces, mint mindig, valamint minden küldetés után volt mondandója. Az általam korábban felvetett problémát (miszerint a széke fizikailag nem fordulhatna el, mert belevág a talpazatba) megoldották: a kamera többé nem mutatja a széke azon részét.
- Kelly: lecserélték Traynorra.
- Gabi és Daniels: végtelenül mókás páros, bár valamiért nem reagáltak Tali visszatértére, illetve elég keveset beszélnek Sheparddal. Talán az is fölösleges túlzás lett volna, ha őket is össze tudtuk volna boronálni. Ha már Tali+Garrus és EDI+Joker lehetett, ők miért nem?
- Chakwas/Michel: osztott mellékszerep.
- Adams: ő volt az első részben?
- EDI: lásd lejjebb
Ami pozitív, hogy a csapattársak végre reagálnak egymás újralátására. Pl. Garrus üdvözli Liarát, stb. Emlékszem a vicces karikatúrákra az ME2-ből, ahogy Liara nem ismeri fel őt Illiumon.
További pozitívum, hogy akár küldetésben, akár a küldetések között vannak saját interakcióik.
Ezek meg kik?
James: az új Jacob Taylor. Néhánynak a koncepció nem tetszett, másoknak a hangadója. Szerintem rendben van, jól elhelyezett karakter. Bár nem hittem, hogy Freddy hangja ennyire mély; fránya szinkronok.
EDI: amikor lehívtak az MI szobába, már akkor tudtam, hogy EDI belebújt az androidtestbe; ez annyira nyilvánvaló, nemde? Nekem tetszett, hogy előtérbe került; remekül rávilágított a szintetikusok szemszögeire. Alaposan kidolgozták, bár szerintem a kinézetét túlzásba vitték ("Shepard, you are staring.")
Javik: csúnyán lelőtt poénú DLC társunk, meghökkentő hozzáállással. A protheanokról kialakult romantikus képpel teljesen szembemegy. Remek megoldás, rámutat a saját előítéleteinkre. Hogy vajon tényleg kamu-párhuzamos fejlesztés volt, azt nehéz eldönteni. A thessiai küldetés végét azért átformálja, ha magunkkal visszük, ami azt feltételezi, hogy az történetírás és hangfelvétel ugyanakkor történt. A harc, kinézet és animációk valószínűleg tényleg párhuzamosan ment; de gondolom ez igaz szinte mindenkire.
Cortez: Végre van arca a pilótafülkének. Az ő karakterét és mondandóját picit erőltetettnek éreztem. Fejvakarás. A Mako vs Hammerhead vita fantasztikus volt!
Traynor: ő testesíti meg korunk egyedülálló férfiainak az egyik párkeresési nehézségét. Régebben ugye csak két nőállapot volt: egyedülálló, foglalt. Talán majd ha női karakterrel is végigjátszom.
Diana: látványos, de ő volt az egyetlen karakter, akire azonnal rámondtam: minek van itt? Ezzel nem vagyok egyedül. Még a pofán vágott riporternő is több war assetet hoz?! Zaeednak volt mélysége és jó anekdotái. Diana legfeljebb Traynorral cseverészik. Technikailag két dolgot emelnék ki: az arca furán hat, mintha rosszul szkennelték volna be; illetve a hangján egyfajta dupla-játék fedezhető fel.
Ami (még mindig) rossz
A csillagtérképet nézve nem lehet behívni a küldetésnaplót átmenetileg. De a naplóval más gondok is vannak:
- Nem lehet eltüntetni a teljesített küldetéseket.
- Gyakran a görgetősáv a lista közepére mutat, és állandóan fel kell görgetni a tetejére.
- a küldetések haladása nehezen követhető. Amennyiben előbb találod meg a keresett tárgyat, úgy a szövegezés utal rá, hogy keress hozzá vevőt. Fordított esetben viszont nem igazán tudod, hogy megvan-e már vagy sem.
Legalább háromszor beakadtam a hídon. Se jobbra, se balra. Az első alkalommal elvesztettem 45 perc játékot emiatt. Azóta mindig gyorsmentek, ha a hídhoz közelítek.
Néhány létra lefelé menet nem működött. Egyszerűen nem csúszott le rajtuk Shepard. Szerencsére a leesés nem végzetes, úgyhogy legalább lehet továbbmenni. Ez hogy jutott át a tesztelésen?
A bolygófelderítésnél sajnos a talált dolog, achievement teljesen átfedi a gombot/szöveget, gyakran nehéz volt elolvasni, hogy mi az. Sajnos a talált dolgok történetét sem lehet sehol látni/visszanézni, amennyiben lemaradtunk róla.
A második részben bevezetett, a csillagtérképen kiírt küldetéscélok jók voltak. Itt viszont megint hatalmába kerített a "vajon itt már jártam" érzés.
Néhány beszélgetés hangja hamarabb befejeződött. Traynor mondandóját gyakran nem hallottam, csak a felirat figyelmeztetett, mi a helyzet. Néha, ha egy picit elfordultam, máris elnémult a hang, és csak a következő mondattól volt hallható ismét.
Hang, zene
Amikor megtudtam, hogy már nem az első rész zeneszerzője, illetve nem is teljesen a második rész szerzői fognak dolgozni, picit aggódtam. Szerencsére a végeredmény kiválló. A zene emlékezetes. A korábbi kedvencem, a Therum Battle, mellé most felkúszott egy újabb: a Faunts prológus alatt hallható egy perces dallama.
Állítólag összesen annyi beszédet vettek fel, mint az első két játék együtt, de én nem éreztem ennek a mennyiségét. Elég sok közös mondat volt, akár paragon, akár renegát oldalon beszéltél, vagy korábban milyen történetet hoztál össze.
A főküldetés
Egy pici vegyes érzéssel fogott el, hogy ebben a részben tényleg az lett a fő művelet, amit annyian megjósoltak még 2010-ben: nagy galaktikus összeborulás.
Nyilván haderőt kell szereznünk, és ehhez a fajok ügyes-bajos dolgait kell rendberaknunk. Viszont a legtöbb küldetés túl egyszerű és kényelmes megoldást ad, amit pár küldetéssel le lehet tudni: gyógyítsuk meg a Genophage-t, kössünk békét a Quarianok és Gethek között.
Nyilván nem lehetett túlságosan elragozni a problémák megoldását, elvégre a Földet folyamatosan darálják be. A másik probléma, hogy szinte alig számít, kit választunk; eléggé ki vannak egyensúlyozva a történetágak. Ez egy örök játékmechanizmus-tervezési probléma: vagy van egy optimális (maximum war asset) megoldás, vagy pedig sok közel egyen értékű alternatíva. A játékos célja a végső győzelem, miért akarna egyet az átlagos megoldásokból. Tudom, tudom, kell lehetőséget hagyni a "mi van, ha..." típusú végigjátszásnak is. Az egyik legfontosabb elem, a gyűjtő bázis megtartása is ennek az áldozatává vált. Két hatása van, ha megtartottuk: 1) 10 pontal több war assetet kapunk, 2) 300 ponttal nő a 3-választásos befejezés követelménye.
Ettől függetlenül a küldetések rendben voltak, izgalmasak, érdekesek és főleg látványosak voltak.
Sokan kritizálták, hogy az összeszedett haderőnk csupán számok, nem lehetett őket úgy használni, mint ahogy csapattársainkat a Collector bázison. Én ezzel ellenkező véleményen vagyok: jobb, hogy ilyen nem került bele. Két okból: 1) Assassin's Creed Revelations; ott igazán bosszantó volt az sok tower defense. 2) Nehéz jó élményfokot és elégedettséget összehozni. Valahogy nem illene egy intergalaktikus sakkjátszma vagy RTS elem ebbe az epizódba.
(Erről jut eszembe: egy ötlet RTS játékra: Mass Effect Aftermath. Úgy képzeltem el, mint valami körökre osztott, jellemzően szöveges, 2D jellegű játékot, ahol "papírból kivágott karakterképek" segítségével, amolyan Master of Orion stílusban kellene kordában tartani a Földön ragadt idegeneket és újjáépíteni a reléhálózatot. A karakterekkel való interakciónál meg lehetne simán a megszokott válaszkerék...)
Multi
A korábbi információkkal ellentétben azonban a jelenlegi felállásban kizárólag egyjátékos módban nem lehet elérni az összes "befejezést". Talán későbbi DLC-kkel majd ez is lehetséges.
Sokan pedzegették korábban, milyen jó lenne valami többjátékos dolog, esetleg co-op kampány. A megoldás tetszik nekem is, csak egy gond van vele: kell még legalább egy ember, ami sajnos nem áll rendelkezésre.
A befejezés
Hát igen, a problémák forrása. Nem elég, hogy spóroltak, és gyakorlatilag 95%-ban ugyanaz a vége, de még lyukas is. A Deus Ex HR-ben legalább 4 eltérő videó volt. Érdekes még megemlíteni két fiaskót: a történet kiszivárgását, valamint a legújabb könyv inkonzisztenciáit: ezek bizony a hanyagság jelei.
Az egyik rossz dolog az információ hiánya, ami miatt mindenkiben beindult a hallucináció. Megpróbálják kitölteni a hiányzó részeket, vagy megmagyarázni az inkonzisztenciákat. Próbálnak minden pixelben és minden hangfoszlányban megkapaszkodni. Azért be kell vallani, nem könnyű ellenállni.
Csak néhány kérdés:
- Hova megy a Normandy?
- Mit keres a csapatunk rajta.
- Mi lesz a Földnél ragadt flottával (ami amúgy legfeljebb egymillió lényt jelenthet, ne ijedezzünk)
- Nem minden relé volt bekapcsolva, azokra is hatott?
- Hogyhogy nem törölte el a naprendszereket?
- Ki az a Stargazer?
Már mindannyian hallottuk:
- az egész csak álom, indoktrináció, trükk,
- lesz majd rendes befejezés DLC,
- majd megmagyarázzák, stb.
Szerintem a vége egyszerű írói hanyagság. Már körbejárta az internetet annak a jegyzetnek a képe, ahol az író lefirkálta a befejezést, ami alapján, bizony: a befejezést így tervezték, szinte függetlenül a játék többi részétől.
Elképzelem, ahogy a kényszerleszállós jelenetsort kitalálták, mégpedig visszafelé:
- Epikus dallam közepette szálljon ki a Joker, LI és a csapattársak egy ismeretlen dzsungelbolygón.
- Na jó, de hogy kerültek oda?
- Lezuhantak a Normandy-val.
- Hogy zuhanhatott le a Normandy?
- Tönkrement a hajtómű nagy része.
- Hogyan?
- Utolérte a kék-zöld-piros sugár az FTL-ben.
- Mit keresett az FTL-ben?
- Fogalmam sincs, talán nem tulajdonítanak neki jelentőséget, hiszen epikus dallam közepette kiszállnak...
A végével kapcsolatban egyben szinte mindenki egyet ért: elvette a kedvünket az újrajátszástól. A második rész végén örömmel ugrottunk bele újra, hiszen bár konkrét végcél volt, mégis izgalmas volt kipróbálni az odavezető utat.
Mi jön most?
A jelenlegi helyzetet elnézve úgy döntöttem, inkább kivárok. Talán rendeződik a helyzet, talán lesz olyan DLC, ami ismét meghozza a játékhangulatot. Amúgy szuper játék.
Címkék:
akció-rpg,
értékelés,
játék,
mass effect
Három lehetőséged van.
![]() |
| Klasszikusok ME3 befejezéssel... |
Kicsit régen írtam már. A sok munka, játék és film teljesen elvette az időmet, no meg gyakran a kedvemet is.
Amint összekapom magam, megírom a Mass Effect 3 értékelésemet.
Természetesen emellett kéne folytatnom az Open Imperium Galacticát is. Az AI diplomáciáról továbbra sincs sok ötletem; megpróbálom végiggondolni, én mi alapján cselekednék. Sajnos engem is utolért az ún. "projektcsömör": a sok apró dolog teljesen legyűr, látszólag nem tudok haladni a nagy és fontos dolgokkal.
2011. június 29., szerda
Eclipse Indigo New and Noteworthy
Hogy én mennyit kerestem:
http://download.eclipse.org/eclipse/downloads/drops/R-3.7-201106131736/eclipse-news-part2.html
Mert a honlapon minden kint van, csak ez nem?!
http://download.eclipse.org/eclipse/downloads/drops/R-3.7-201106131736/eclipse-news-part2.html
Mert a honlapon minden kint van, csak ez nem?!
Címkék:
eclipse,
eclipse indigo,
eclispe 3.7,
programozás
2011. június 26., vasárnap
Dungeon Siege 3
(IGN: 6.5; Metacritic: 73)
A szép emlékű Dungeon Siege legutóbbi része a jómunkásember Obsidian gyártásában. A második rész mélysége és hossza után ez az epizód kicsit sekélyesre sikerült. Látszik a kialakításából, hogy legalább négyszeri végigjátszásra tervezték. Sajnos a megvásárlást követő héten egyáltalán nem működtek a Steam Achievementek, így az első 22 szintért bizony semmit sem kaptam. Újra végigkalandozni, akár egy másik karakterrel jelenleg nincs kedvem.
Katerinával kezdtem, mert megtetszett a puskája. A játék végére sikerült kb 300 DPS-ig feltornászni, de mivel a szörnyek velünk együtt emelkednek, annyira nem volt plusz előny.
Kialakításában enyhe Titan Quest és Space Siege érzés kerített hatalmába. Az átjárókról szóló rész kicsit Half Life szerű: "swing around the borderlands". A Mass Effect-es szövegkerék vicces, de semmi hatása nincsen a szöveg helyzetének. Van általában egy nyilvánvaló pozitív, egy nyilvánvaló negatív és egy köztes megoldás. Szerencsére egy single típusban tárolja az életerőt, így a memória szerkesztővel kényelmesen beállíthattam a szintentartást.
A játékmechanika rendben van, bár a nyerő stratégia lényegében a folyamatos szóköz+bal gomb alapú kitérések, mivel az ellenfél főleg minket támad. Anjali ilyenkor kényelmesen megsütötte a többieket. Sajnos ez a kitérés ugyanattól a problémától szenved, mint a Space Siege, mivel a kitérés irányába kell kattintani, és persze utána vissza kell találni a támadó irányába, valószínűleg a képernyő további forgatásával; ami idő. A legerősebb Boss-ok ellen kicsit irritáló volt. Eltévedni nem nagyon lehet, mert eléggé lineáris az út, és alig akad "menj a térkép túlsó felére és gyere vissza" típusú küldetés van.
A grafika rendben van, a zene semmi különleges. Szerencsére minden beszélgetés alá van mondva. Sajnos nem egy Mass Effect szintű átélés, de tűrhető. Kb. 18 óra játékidő.
Összességében jól sikerült játék, nálam 75%. A Steam-en elővételben szereztem meg, mert ajándékba adták az első két részt; érdemes boltban megvenni.
A szép emlékű Dungeon Siege legutóbbi része a jómunkásember Obsidian gyártásában. A második rész mélysége és hossza után ez az epizód kicsit sekélyesre sikerült. Látszik a kialakításából, hogy legalább négyszeri végigjátszásra tervezték. Sajnos a megvásárlást követő héten egyáltalán nem működtek a Steam Achievementek, így az első 22 szintért bizony semmit sem kaptam. Újra végigkalandozni, akár egy másik karakterrel jelenleg nincs kedvem.
Katerinával kezdtem, mert megtetszett a puskája. A játék végére sikerült kb 300 DPS-ig feltornászni, de mivel a szörnyek velünk együtt emelkednek, annyira nem volt plusz előny.
Kialakításában enyhe Titan Quest és Space Siege érzés kerített hatalmába. Az átjárókról szóló rész kicsit Half Life szerű: "swing around the borderlands". A Mass Effect-es szövegkerék vicces, de semmi hatása nincsen a szöveg helyzetének. Van általában egy nyilvánvaló pozitív, egy nyilvánvaló negatív és egy köztes megoldás. Szerencsére egy single típusban tárolja az életerőt, így a memória szerkesztővel kényelmesen beállíthattam a szintentartást.
A játékmechanika rendben van, bár a nyerő stratégia lényegében a folyamatos szóköz+bal gomb alapú kitérések, mivel az ellenfél főleg minket támad. Anjali ilyenkor kényelmesen megsütötte a többieket. Sajnos ez a kitérés ugyanattól a problémától szenved, mint a Space Siege, mivel a kitérés irányába kell kattintani, és persze utána vissza kell találni a támadó irányába, valószínűleg a képernyő további forgatásával; ami idő. A legerősebb Boss-ok ellen kicsit irritáló volt. Eltévedni nem nagyon lehet, mert eléggé lineáris az út, és alig akad "menj a térkép túlsó felére és gyere vissza" típusú küldetés van.
A grafika rendben van, a zene semmi különleges. Szerencsére minden beszélgetés alá van mondva. Sajnos nem egy Mass Effect szintű átélés, de tűrhető. Kb. 18 óra játékidő.
Összességében jól sikerült játék, nálam 75%. A Steam-en elővételben szereztem meg, mert ajándékba adták az első két részt; érdemes boltban megvenni.
Címkék:
dungeon siege,
dungeon siege 3,
játék,
rpg
2011. június 16., csütörtök
Duke Nukem Forever
(IGN: 5.5, Metacritic: 58)
Megértem. Modern köntösbe bújtatott, vegyesen friss és régi játékélmény.
Egyfelől a 15 évnyi fejlesztés irgalmatlan magasságokba emelte az elvárásokat (ami szerintem az egyik ok arra, hogy miért nincs még Half Life 2.3 vagy 3.0), másfelől a játékok általában 2-3 évvel le vannak maradva a csúcstechnológiák mögött (lásd Unreal 2.5).
Kb. 12 órányi játékidő után ugyanazt a vegyes, frusztrációval terhelt érzést tapasztalom, mint megannyi közepes játéknál. 20 perces bóklászások és 20 ugyanott-elhalálozás után kellemetlenné válik a játék.
A grafikában semmi kivetni valót nem találtam. A játékmechanika rendben van, bár a két fegyveres megoldás már konzol átoknak hat. A probléma inkább a pályatervezéssel van. Látszik is az Extrák közötti időtengelyen, hogy az egyjátékos módot bizony már 2009-ben lezárták. A Gearbox ezek szerint a motort és a multit reszelgette.
A hangok és a beszólások elfogadhatóak, és néha kellemes emlékeket hozott fel a sok-sok Borderlands-jellegű zenehatás.
Összességében szerencse, hogy boltban vettem meg. Inkább leárazás során ajánlom, és főleg csak rajongóknak. Felejtős. Nálam ez bizony 50%.
Megértem. Modern köntösbe bújtatott, vegyesen friss és régi játékélmény.
Egyfelől a 15 évnyi fejlesztés irgalmatlan magasságokba emelte az elvárásokat (ami szerintem az egyik ok arra, hogy miért nincs még Half Life 2.3 vagy 3.0), másfelől a játékok általában 2-3 évvel le vannak maradva a csúcstechnológiák mögött (lásd Unreal 2.5).
Kb. 12 órányi játékidő után ugyanazt a vegyes, frusztrációval terhelt érzést tapasztalom, mint megannyi közepes játéknál. 20 perces bóklászások és 20 ugyanott-elhalálozás után kellemetlenné válik a játék.
A grafikában semmi kivetni valót nem találtam. A játékmechanika rendben van, bár a két fegyveres megoldás már konzol átoknak hat. A probléma inkább a pályatervezéssel van. Látszik is az Extrák közötti időtengelyen, hogy az egyjátékos módot bizony már 2009-ben lezárták. A Gearbox ezek szerint a motort és a multit reszelgette.
A hangok és a beszólások elfogadhatóak, és néha kellemes emlékeket hozott fel a sok-sok Borderlands-jellegű zenehatás.
Összességében szerencse, hogy boltban vettem meg. Inkább leárazás során ajánlom, és főleg csak rajongóknak. Felejtős. Nálam ez bizony 50%.
Címkék:
duke nukem forever,
fps,
játék
2011. március 26., szombat
Crysis 2
Bár PCs játék, és a fejlesztése 3 platformon egyszerre zajlott, hála a már annyiszor látott fejlesztő eszközüknek, mégis sokan túlzott konzol beütésre panaszkodnak. Mivel én amúgy sem vagyok nagy konfigurálgató, nálam a beállítási lehetőségek elegendőek voltak.
A 250GTS-emen High beállítással teljesen élvezhető és játszható volt, annak ellenére, hogy a C2D 6600 2.4GHz ma már nagyon kevés. A textúrák rendben voltak, (bár mivel manapság csak az tűnik fel, ha valahol spóroltak) lassulást csak akkor tapasztaltam, ha hirtelen fordultam.
Az irányítás jó volt, bár egy kicsit az elején szokatlannak hatott az Assassin's Creed Brotherhood lomhasága után, de később kellemesen osztogattam a kapáslövéseket.
A történet jó, bár gyakran néz az ember, hogy WTF? Ez nem lett megmagyarázva! Sebaj, majd a kiegészítőkben és pályacsomagokban hátha.
Az új ruha(funkciók) is sokkal értelmesebbek, bár az elején még a régi rendszert vártam. Az erő és sebesség összevonása jó húzás volt, és tényleg a használathoz illően lehet aktiválni futással vagy ugrással. Az WASD-hez szokott kezemnek jól jött, hogy a Q, E és Shift kellett a különféle módok aktiválásához. A healthbar viszont kikerült, és helyét az 'Oh! Bloody screen!' vette át. Az armor mód már nem alapértelmezett, cserébe kikapcsolva is többet elbír, mint az első részben. Bekapcsolva pedig kellemesen ellenálló: sokkal jobb, mint az első részben, ahol is három találatnál már lement nullára, és utána a puszta testeddel védekeztél.
A fegyverek talán egy picit egysíkúak: van ugyan a SCAR, de nem lehet annyira konfigurálni, mint az első részben, ehelyett több variánsra bontották. Pl. az egyik alá lehet taktikai kiegészítőt rakni, a másikra meg nem, helyette lehet mesterlövész távcsövet használni.
Nagy előrelépésnek tartom, hogy végre a mesterlövész puskára is lehet hangtompítót szerelni! Sajnos többször előfordult, hogy kifutottam a lőszerből, s ilyenkor vicces-armor módon rohangásztam ide-oda, és melee-ztem az ellent. A fent említett konfigurációs korlátok miatt gyakran nem is érdemes elvenni a fegyvert az ellentől, mert nem szívesen adja fel az ember a scope-os SCAR-ját. További pozitívum, hogy a 50 kaliberes géppuskát le lehet akasztani, és cipelgetni ide-oda. Jó móka! Sajnos a használata ütközik néhány játékfunkcióval, mivel az F megnyomására eldobja, s csak ezután lehet aktiválni dolgokat, illetve a látványra figyelni; pl. a lift indításához kellett eldobnom, de ilyenkor nagyon ügyesen átdobta a lift oldalfalán, nehogy utána fel tudjam ismét venni.
A zene nem olyan különleges, az első rész 'Village driving' hangulatát nemigen hozza. A hangok rendben vannak, bár néha volt tumultus, és ilyenkor pl. a saját fegyverem hangja nem is hallatszott. Az NPC-k hangja átlagos, talán gyengébb az első részhez képest. A Crysis 2 egyfajta fordított Dragon Age 2. Míg utóbbiban a főhős a második részre beszédes lett, addig a Crysis 2-ben épp fordítva: a nagydumás Nomad helyett a kuka Alcatrazt kapjuk. Gondolom, a történetvezetés mellékhatása, mert (spoiler!) az első 3-4 pályán még azt hiszik, hogy Prophet van a ruci alatt. Ejnye-ejnye.
Ami kicsit bosszantó, az a világpremier hiánya. Hétfőn vettem meg, de a másolásvédelem csütörtök estéig nem engedett játszani, akárcsak a DA2, Bulletstorm, stb. Nem hiszek azoknak a kifogásoknak, hogy a polcokra kell érnie a DVD-nek, hiszen az elektronikus letöltésnél nincs ilyen fizikai-logisztikai akadály! Vagy az amcsik nem hajlandók várni? És még mi, Európában jól jártunk, mert pl. Ausztráliában akár egy hónap is eltelhet a megjelenéstől!
Összkép: 85%. Alapos iparosmunka. Várjuk a DLC-ket.
2011. március 15., kedd
Battle: Los Angeles
Megnéztem, kijátszottam.
A film
A film maga viszonylag középszerű volt. Az idegenek ennyire nem tudnak célozni?! A vicces az volt, amikor a tudós bejelentette: "ezek az erőforrásaink miatt jöttek, ki akarnak irtani" - mire én: "ja, akárcsak az amcsik, ha olajról van szó". Földönkívüli terrorizmus és idegengyűlölet. Uploading virus. Ha ha ha ha.
Sajnos a haditechnika felvonultatástól sem voltam elragadtatva, egy COD:MW2 szintű hadviselés UAV-kkal, AC130-Gunshippel, Javelinnel, SCAR-ral. De legalább az az egyetlen Striker harcjármű lett volna felszerelve Quick-kill vagy Throphy-szerű aktív védelemmel. Gondolom, ezeknek a CGI-jeire nem tellett. De legalább nem annyira vicces, mint a Skyline, amit így lehetne összefoglalni: "Ha a pilóta nélküli gépek elbuknak, küldd be a tengerészgyalogosokat."
Másik érdekes dolog Michelle Rodriguez felbukkanása. Úgy néz ki, ő lett az egyik standard női katona/zsoldos/rendőr mostanában.
Értékelés: 55%. Tucat sci-fi elcsépelt élien-támadással, semmi érdemleges felhozatal.
A játék
Hozzá vettem a játékot. Igazi 1C gyártmány, de ők mostanában azért egyre jobb és jobb FPS-eket készítenek. Jó volt látni a legtöbb filmbeli helyszínt.
Az irányítás tipikusan lomhának mondanám. A szélesvásznú nézet zavart, a lassú célra vétel, valamint a pár másodperces sprintelés picit kellemetlen. Ennyit bír egy kiképzett baka?
A játék leírásban "minden modern amerikai fegyver"-t emlegetnek; hát volt a standard M4-szerű géppisztoly, AT-4 és 50-es kaliber. Ja és valami mesterlövész puska 5 tölténnyel és kézi töltővel - ami élvezetes be-és-kizoomolást csinált. Hol van az a jó kis Berrett M82? Nem tellett rá.
A helyszínek viszont szépek voltak, s a szkriptelt robbantások és összedőlések is hihetőre sikerültek. Úgy érzem, jó motort tettek alá, és sokkal-sokkal többet is ki lehetett volna hozni az adottságaiból. De legalább is hosszabb játékmenetet.
Értékelés: 65%. Ooo, blody screen! Soooo reeeeaaal.
Címkék:
battle los angeles,
film,
fps,
játék,
sci-fi
2011. március 12., szombat
Dragon Age 2
(Metacritic: 84)
Végre egy jó RPG játék. Bár annyira nem volt EPIC, mint vártam. A történet jó, az arc animációk még mindig késnek 0.1 másodpercet. Lássunk egy kis összefoglaló listát.
Negatívumok:
- Rengeteg ismétlődő alapterületű helyszín
- Játék alatt nem elérhető az Achievements
- Az Inventory, Character, Journal és Map között nincs átjárás gomb
- A gyűjtögetős küldetésekben nehéz követni a darabszámot
- A signature edition DLC-ket nem telepítette automatikusan, kézzel kellett letölteni
- Néha nem jelentkezett be az EA accountba
Semleges:
o Az a rengeteg motion capture visszaköszön a Mass Effect 2-ből
o Úgy viszonyul a DA2 a DA:O-hoz mint a Fallout: New Vegas a Fallout 3-hoz
o Most sincs elég pénz
Pozitívum:
+ könnyű megtalálni a küldetések célpontjait
+ szép grafika
+ válasz-kerék kényelmes
+ jó történet
+ a hős végre beszél!
Ár/érték arányban egy remek vétel, még a Signature Edition is. Főleg, hogy a CD Galaxisban ajándék 1600 Bioware pontot is adtak, legalább lesz mit elkölteni a közelgő Mass Effect 2 DLC-re.
Az irányítás rendben van, bár a TAB+W+Jobb egérgomb nálam végig nyomva volt, mivel szinte állandóan 'FPS' módban mászkáltam. Így kényelmesebb körbenézni, mint forogni az A és D billentyűkkel. Talán a következő részben lehetne ez alapbeállítás. Ja és a TAB pedig kijelöli a használható tárgyakat, kár hogy nem lehet állandóra bekapcsolni.
Mivel friss, ezért elég nehéz információt találni a játékról. A Dragon Age Wikia e sorok írásakor még igencsak hiányos. Van néhány egyszerűbb végigjátszás, de kellően részletes nincs.
A játék meglepően jó minőségű, csak három bugos küldetéssel találkoztam, szerencsére nem jelentősek (a New Vegasban a 2. patch-ig kb 30 db ilyen volt). Általában nem záródik le a küldetés vagy ottmarad az illetőn a nyilacska.
Mivel Mass Effect-es beszédgyűrű van, általában a felső "Paragon" válaszokat használtam. Látok némi esélyt arra, hogy pár hónapon belül végigjátszom újra, ezúttal "Renegade" módban - amint egy valamire való DLC kijön hozzá. A beszédgyűrű ikonok jók, de a könyvecske elolvasása nélkül nem mindig világos. Az eleje felé igazán kiírhatták volna a játékon belül is szövegesen, mit is jelent.
Hiányoltam a fegyverváltás lehetőségét. Rogue karakterként jó lett volna néha váltani az íj és a dupla tőr között, főleg hogy igen ütős tőröket kap gyakran az ember. Sajnos fegyvereket nem lehet az alsó sávra húzni, vagy legalább is nekem nem sikerült.
Kirkwall annyira nem unalmas, mint az egyes értékelések említik, bár az egy kicsit zavaró volt, hogy egy-egy régióba való érkezésnél szinte tuti, hogy a célterülettől legtávolabb eső bejáratnál tesz le - igazán lehetett volna egy kapuválasztó is a térképen. Üdvözletes, és egyúttal vicces, hogy a küldetés lezárása után mindig van egy kijárat kéznél - akár jöhettünk volna arra is - nincs backgracking.
Hogy mennyire is volt EPIC, kb. annyira, mint a Modern Warfare 2 után a Black Ops. 30-35 óra játékidő van benne, bár egész biztos nem találtam meg az összes mellékküldetést. Az elérhető achievementek kb 70%-át szereztem meg. Én a következő Bioware játékban bevezném az Önmegtartóztató achievementet: úgy végigvinni a játékot, hogy semmilyen flört vagy románc nem volt benne :)
Összkép: 84%. Csak nehogy a Witcher 2 lekörözze. Azaz hogy az nekünk, játékosoknak csak jó nem?
Címkék:
dragon age,
dragon age 2,
játék,
rpg
2011. március 10., csütörtök
Web service Co- and Contravariance
Working on the ADVANCE Flow Engine for the ADVANCE 7th Framework EU project we came across the need to have type comparison between XML schemas.
One reason is to allow the user to wire different but co- and contravariant input and output types instead of the classic type invariant approach. This co- and contravariance is a common property of most modern programming languages (e.g., Java 5+, C# 4.0+). Because the blocks communicate via XML, and the type of XML is described via XSD, we need a way to compare two XSDs: are they equal? Does A.XSD extend B.XSD?
The second reason is that we need to communicate with external web services and ourselves need to provide web service entry points. Having a co- and contravariant type defined instead of a classical fixed XSD should be a benefitial in the long term.
Therfore, our small group at SZTAKI has figured out a way to think about and compare types described in XSD. See a prototype implementation at the SourceForge site of the ADVANCE project.
I'll try to describe the idea for the schema comparison. Note that XSD has some support for restrictions and extensions on complexContent elements, but our approach does not rely on this kind of functionality, as many XSD type definitions are somewhat independently written. Our approach is based on the actual element-attribute-content structure of the schemas to be compared.
Relations
In order to compare two things, we need a comparison method which may return the following results (see XRelation enum):
Type is a set of Capabilities
The first abstraction we take is that we define an XML type (XType class) as a set of capabilities (XCapability class).
We should think about the XML elements, attributes and sometimes the content as a capabilities. This way, an element's type is the set of its attributes, child elements and content.
Capabilities
Capabilities, like fields in a Java class can have name and a type, where type can be a simple type (int, string, etc.) or another complex type (and type are just a set of capabilities).
In addition, XML has the notion for cardinality, e.g. an element may occur in several forms (zero or once, once, zero or many times, once or many times, zero times), which property is also appended to the capability. Therefore, each capability is potentially a List of a simple or complex type: a monad (?!).
XSD to XType
The XSchema utility class features a simple XSD parser which turns the schema into an object graph of XType and XCapability objects. Of course, the XSD definition is very complicated and we are sure the simple parser does not cover all of its aspects in terms of where and how things can be described in XSD (in place, as a global type, a type among the node parents, etc.). Our parser currently expects schemas which descibe such XMLs, where an element may have attributes, a string-like content XOR other elements (e.g., mixed content is not handled).
Such XSD may be as follows:
We can define the type comparisons as basically a set theoretic contains-relation (with some special cases).
Type A extends Type B if
The super direction is just the test for Type B extends Type A.
The XType.compareTo(XType) method returns the relations above.
Comparing capabilities
How can we compare capabilities against each other? How do we now a capability CA is present in Type B?
The simplistic approach to compare the names of the capabilities (like field names), then compare their simple or complex types (recursively).
However, sometimes what we would think as capabilities are named differently in different locations: Just look at Java's size naming: array.length, String.length(), Collection.size(), getLength(), getSize(), size(), count() etc.
We can somewhat solve this problem by introducing aliases. If you look at the XName class, you'll find a name and a set of Strings which may be other aliases for the very same capability. If you are writing one of the XSDs, you may attach an <annotation> tag with a custom content which lists these aliases:
However, the second problem rising is that capabilities named the same actually mean a different thing. Therefore, a secondary type dimension is attached to the XName construct dubbed Semantic Token (represented by an XSemantics class and a similar extra annotation).
Even if two names look like the same, their associated semantics might be incompatible, or one's semantics is actually an extension to the other's. Using the same comparison mechanism for types, capabilities and naming, this kind of extra information should help to determine the relations.
Of course, if your XSD types name similar things similarly, you don't need these optional annotations.
XSchema parser and test program
The XSD parser and test program XSchema gives a simple sample how to use this new XML-based type system.
The example has two types, where type2.xsd has an extra field defined for its class1 element.
Root element trouble
You may recognize, that the parser returns a type, which is basically a virtual outer type, which has a single capability named as the root node and describing its complex type.
This may be problematic in cases where the root node can be named as anything, and only ITS content should matter when comparing.
I think there is no problem, because you may start the A.compareTo(B) at this single capability's complexType node:
A.capabilities.get(0).complexType.compareTo(B.capabilities.get(0).complexType)
The second smaller issue is with a root element which is only a simple type. In this case, you need to compare the valueType fields of the first capabilities.
We may later on specify convenience methods to do these things.
Is this type-thingy new?
We hope so.
We applied the category theoretic approaches of duality and monads to develop this solution, which approaches themselves descend from last century mathematics and are used in programming language type systems.
Our opinion is that yes, this is can be considered as (computer) scientifically new.
But you might know better...
One reason is to allow the user to wire different but co- and contravariant input and output types instead of the classic type invariant approach. This co- and contravariance is a common property of most modern programming languages (e.g., Java 5+, C# 4.0+). Because the blocks communicate via XML, and the type of XML is described via XSD, we need a way to compare two XSDs: are they equal? Does A.XSD extend B.XSD?
The second reason is that we need to communicate with external web services and ourselves need to provide web service entry points. Having a co- and contravariant type defined instead of a classical fixed XSD should be a benefitial in the long term.
Therfore, our small group at SZTAKI has figured out a way to think about and compare types described in XSD. See a prototype implementation at the SourceForge site of the ADVANCE project.
I'll try to describe the idea for the schema comparison. Note that XSD has some support for restrictions and extensions on complexContent elements, but our approach does not rely on this kind of functionality, as many XSD type definitions are somewhat independently written. Our approach is based on the actual element-attribute-content structure of the schemas to be compared.
Relations
In order to compare two things, we need a comparison method which may return the following results (see XRelation enum):
- NONE: the two things are not related
- EQUAL: the two things are the same
- EXTENDS: the first thing extends the second thing
- SUPER: the first thing is a super(class) of the second thing, or in other direction, the second thing extends the first thing (opposite as EXTENDS).
Type is a set of Capabilities
The first abstraction we take is that we define an XML type (XType class) as a set of capabilities (XCapability class).
We should think about the XML elements, attributes and sometimes the content as a capabilities. This way, an element's type is the set of its attributes, child elements and content.
Capabilities
Capabilities, like fields in a Java class can have name and a type, where type can be a simple type (int, string, etc.) or another complex type (and type are just a set of capabilities).
In addition, XML has the notion for cardinality, e.g. an element may occur in several forms (zero or once, once, zero or many times, once or many times, zero times), which property is also appended to the capability. Therefore, each capability is potentially a List of a simple or complex type: a monad (?!).
XSD to XType
The XSchema utility class features a simple XSD parser which turns the schema into an object graph of XType and XCapability objects. Of course, the XSD definition is very complicated and we are sure the simple parser does not cover all of its aspects in terms of where and how things can be described in XSD (in place, as a global type, a type among the node parents, etc.). Our parser currently expects schemas which descibe such XMLs, where an element may have attributes, a string-like content XOR other elements (e.g., mixed content is not handled).
Such XSD may be as follows:
<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>Comparing types
<xs:element name="class1">
<xs:complexType>
<xs:sequence>
<xs:element name="field1" type="xs:string"/>
<xs:element name="field2" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
We can define the type comparisons as basically a set theoretic contains-relation (with some special cases).
Type A extends Type B if
- Type B's capabilities are all present within in Type A's capabilities and
- each of those capability pairs, CA and CB, CA extends CB
The super direction is just the test for Type B extends Type A.
The XType.compareTo(XType) method returns the relations above.
Comparing capabilities
How can we compare capabilities against each other? How do we now a capability CA is present in Type B?
The simplistic approach to compare the names of the capabilities (like field names), then compare their simple or complex types (recursively).
However, sometimes what we would think as capabilities are named differently in different locations: Just look at Java's size naming: array.length, String.length(), Collection.size(), getLength(), getSize(), size(), count() etc.
We can somewhat solve this problem by introducing aliases. If you look at the XName class, you'll find a name and a set of Strings which may be other aliases for the very same capability. If you are writing one of the XSDs, you may attach an <annotation> tag with a custom content which lists these aliases:
<element name='size' type='int'>(As of writing this post, the XSchema parser does not look for such kind of additional data.)
<annotation><advance:capability-aliases
xmlns:advance='http://www.advance-project.eu/schemas/xmltypesystem'>
length, count</advance:capability-aliases></annotation>
</element>
However, the second problem rising is that capabilities named the same actually mean a different thing. Therefore, a secondary type dimension is attached to the XName construct dubbed Semantic Token (represented by an XSemantics class and a similar extra annotation).
Even if two names look like the same, their associated semantics might be incompatible, or one's semantics is actually an extension to the other's. Using the same comparison mechanism for types, capabilities and naming, this kind of extra information should help to determine the relations.
Of course, if your XSD types name similar things similarly, you don't need these optional annotations.
XSchema parser and test program
The XSD parser and test program XSchema gives a simple sample how to use this new XML-based type system.
The example has two types, where type2.xsd has an extra field defined for its class1 element.
Root element trouble
You may recognize, that the parser returns a type, which is basically a virtual outer type, which has a single capability named as the root node and describing its complex type.
This may be problematic in cases where the root node can be named as anything, and only ITS content should matter when comparing.
I think there is no problem, because you may start the A.compareTo(B) at this single capability's complexType node:
A.capabilities.get(0).complexType.compareTo(B.capabilities.get(0).complexType)
The second smaller issue is with a root element which is only a simple type. In this case, you need to compare the valueType fields of the first capabilities.
We may later on specify convenience methods to do these things.
Is this type-thingy new?
We hope so.
We applied the category theoretic approaches of duality and monads to develop this solution, which approaches themselves descend from last century mathematics and are used in programming language type systems.
Our opinion is that yes, this is can be considered as (computer) scientifically new.
But you might know better...
Címkék:
contravariance,
covariance,
programozás,
web services,
xml schema,
xsd
Böngésző teljesítmény összehasonlítás
Na nézzük, hogy is állnak a böngészők. Tesztkonfiguráció: Core i7 2.6GHz, 4 GB 1333MHz DDR3, Windows 7 x86.
Úgy tűnik, a Chrome kicsit le van maradva JavaScript szinten a többiektől, de grafikailag egész megközelítette az IE9-et.
| Böngésző | Sunspider (kisebb a jobb) | V8 (nagyobb a jobb) | HTML5 Speed Reading (kisebb a jobb) | Kraken (kisebb a jobb) |
| Chrome 11.0.696.0 | 251ms | 8757 | 18s | 6650ms |
| Firefox RC1 | 247ms | 4161 | 378s | 6162ms |
| Explorer 9 RC1 | 212ms | 2681 | 7s | 13884ms |
Úgy tűnik, a Chrome kicsit le van maradva JavaScript szinten a többiektől, de grafikailag egész megközelítette az IE9-et.
Címkék:
benchmark,
firefox,
google chrome,
internet explorer,
programozás
2011. március 2., szerda
Android Development, pitfalls so far
The Android platform is now the fancy development target for Java programmers. Therefore, I started to learn it and as expected, I fell right into some of its pitfalls. Things that should nicely work according to the various tutorials, but there are things that you will only get working after searching through dozens of forums and forum mirrors.
For fun, I tried to move some of the bits of my Open Imperium Galactica project and spent hours to resolve the most simplistic problems.
So lets see the problems step by step.
Device size limits
By default, most pre 2.2 applications are limited to 24MB of application size. In reality, you'll start to get error messages after 12MB. After 2.2, you can specify your application is willing to run from the device's SD card:
Set
(see this, this).
You can create a custom device with more Java heap and you can set a debug option in Eclipse for the emulator:
Assets vs Res
The main difference is that for things in
The trouble with both directories is that the package builder can take extremely long time to build your project. Autobuild can cause headaches too after a simple save.
One option is to simply remove the file extension from the resource files. But this may get you into trouble with the
The second trouble is with the
referencing resources in this directory does not work. The workaround is to place the resources under a subdirectory of assets:
MediaPlayer with assets
There are several caveats with the MediaPlayer.
First, media player takes the media format primarily from the file name. If you renamed your resources, you are have to rename them back.
The second thing is that you need to pass in the start and size of the referenced asset along with its FileDescriptor:
Rendering Open-IG videos fast
Next time, once I figure out how to speed up, I will talk about how to render a series of bitmaps.
For fun, I tried to move some of the bits of my Open Imperium Galactica project and spent hours to resolve the most simplistic problems.
So lets see the problems step by step.
Device size limits
By default, most pre 2.2 applications are limited to 24MB of application size. In reality, you'll start to get error messages after 12MB. After 2.2, you can specify your application is willing to run from the device's SD card:
Set
android:installLocation="preferExternal" in AndroidManifest.xml(see this, this).
You can create a custom device with more Java heap and you can set a debug option in Eclipse for the emulator:
-partition-size 1024Assets vs Res
The main difference is that for things in
res/ directory, you get a special class R where you can easily reference them by name in your code. Most utility classes can use this kind of referencing. However, you have more freedom with the assets/ directory contents.The trouble with both directories is that the package builder can take extremely long time to build your project. Autobuild can cause headaches too after a simple save.
One option is to simply remove the file extension from the resource files. But this may get you into trouble with the
MediaPlayer.The second trouble is with the
assets directory itself. It seems thatreferencing resources in this directory does not work. The workaround is to place the resources under a subdirectory of assets:
assets/media and reference them via media/sound1.wav.MediaPlayer with assets
There are several caveats with the MediaPlayer.
First, media player takes the media format primarily from the file name. If you renamed your resources, you are have to rename them back.
The second thing is that you need to pass in the start and size of the referenced asset along with its FileDescriptor:
AssetFileDescriptor afd = getAssets().openFD("media/sound1.wav");
MediaPlayer mp = new MediaPlayer();
mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
mp.prepare();
mp.start();
Rendering Open-IG videos fast
Next time, once I figure out how to speed up, I will talk about how to render a series of bitmaps.
Címkék:
android,
development,
programozás
Feliratkozás:
Bejegyzések (Atom)
