• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.

Sammieo

Members
  • Content count

    21
  • Joined

  • Last visited

Community Reputation

147 Neutral

About Sammieo

  • Rank
    Member
  1. Thanks for the clarity there. I tried both, and it didn't quite work out. Ah well, no big bother. I'm gonna try [url=http://eat3d.com/free/maya_udk_3]one kismet video[/url] and hope that takes care of things. Fingers crossed!
  2. Ah, I see! Silly me, I should have caught onto that earlier. Good news, I tried the name var instead and it got past the compiler without a bother.   ...Bad news, it's still not working. >_< The lil' birdy is just hovering there, no matter what my anim calls say. Ho-hum. Lemme show you the code one more time, since this is almost over:   class BirdPawn extends UTPawn; var int IsoCamAngle; var float CamOffsetDistance; //var() SkeletalMeshComponent BirdMesh; //var() SkeletalMeshComponent CurrMesh; var name BirdWalkAnim; var name BirdFlyAnim; simulated function PostBeginPlay() {     super.PostBeginPlay();     //AttachMesh();     SetMeshVisibility(true);     //PlayAnim( self.Boobooday_Packed_FlapWings, , True ); } simulated function SetCharacterClassFromInfo(class<UTFamilyInfo> Info) {     //Ignoring family info } simulated function SetMeshVisiblity(bool bVisible) {     super.SetMeshVisibility(bVisible);     Mesh.SetOwnerNoSee(false); } simulated function bool CalcCamera(float DeltaTime, out vector out_CamLoc, out rotator out_CamRot, out float out_FOV) {     local Vector HitLocation, HitNormal;     out_CamLoc           = Location;     out_CamLoc.X        -= Cos(Rotation.Yaw * UnrRotToRad) * Cos(IsoCamAngle * UnrRotToRad) * CamOffsetDistance;     out_CamLoc.Y        -= Sin(Rotation.Yaw * UnrRotToRad) * Cos(IsoCamAngle * UnrRotToRad) * CamOffsetDistance;     out_CamLoc.Z        -= Sin(IsoCamAngle * UnrRotToRad) * CamOffsetDistance;     out_CamRot.Yaw       = Rotation.Yaw;     out_CamRot.Pitch     = IsoCamAngle;     out_CamRot.Roll      = 0;     if (Trace(HitLocation, HitNormal, out_CamLoc, Location, false, vect(12, 12, 12)) != none)     {         out_CamLoc = HitLocation;     }     return true; } defaultproperties {     IsoCamAngle=20     CamOffsetDistance=190.0     MaxFallSpeed=30000     Begin Object Class=AnimNodeSequence Name=MeshSequenceA     End Object     /*     * Begin Object Class=DynamicLightEnvironmentComponent Name=MyLightEnvironment     *  bEnabled=TRUE     *  End Object     * Components.Add(MyLightEnvironment)     */     Begin Object Name=WPawnSkeletalMeshComponent           SkeletalMesh=SkeletalMesh'BirdPackage.Boobooday_Packed'           AnimSets(0)=AnimSet'BirdPackage.Armature'           Animations=MeshSequenceA           AnimTreeTemplate=None           Translation=(Z=-20.0)           Materials(0)=Material'EditorMaterials.WidgetMaterial_X'           LightEnvironment=MyLightEnvironment           Scale3D=(X=5.00,Y=5.00,Z=5.25)     End Object     BirdWalkAnim = WalkOnLand     BirdFlyAnim = FlapWings }   Controller: class BirdPlayerController extends UTPlayerController; var vector PlayerViewOffset; var bool bHasFood; simulated function PostBeginPlay() {   super.PostBeginPlay();   bNoCrosshair = true;   `log("The Bird player controller has finally spawned!");   GoToState('Walking');   Pawn.Mesh.SetHidden(false); } reliable client function ClientSetHUD(class<HUD> newHUDType) {   if(myHUD != none)            myHUD.Destroy();   myHUD = spawn(class'BirdHUD', self); } auto state Walking extends PlayerWalking {   simulated function BeginState(Name PreviousStateName)   {     Pawn.SetMovementPhysics();     `log(GetStateName() );     `log("Hello, the Bird is now walking!");     Pawn.Mesh.PlayAnim( BirdPawn(Pawn).BirdWalkAnim, , True );     //Pawn.Mesh.PlayAnim( BirdPawn(Pawn).Boobooday_Packed_WalkOnLand, , True );   }   function ProcessMove(float DeltaTime, vector NewAccel, eDoubleClickDir DoubleClickMove, rotator DeltaRot)   {     local vector X, Y, Z;     //`log(NewAccel);     GetAxes(Pawn.Rotation, X, Y, Z);     NewAccel = PlayerInput.aForward * X + PlayerInput.aStrafe*Y;     NewAccel.Y = 0;     NewAccel = Pawn.AccelRate * Normal(NewAccel);     super.ProcessMove(DeltaTime, X * VSize(NewAccel), DoubleClickMove, DeltaRot);   } } state BirdFlying extends PlayerFlying {   simulated function BeginState(name PreviousStateName)   {     super.BeginState(PreviousStateName);     Pawn.Mesh.PlayAnim( BirdPawn(Pawn).BirdFlyAnim, , True );     `log("Now in Flying state!");   } } defaultproperties {   bBehindView = true   PlayerViewOffset = (X=256, Y = 0, Z = 0)   bHasFood = true }  
  3. [b]EDIT:[/b] Collision cylinder is aligned just fine now: my problem was I wasn't using extreme enough units. Lowering the unreal units into the negatives did me just fine. I've edited the scaling and the model's now at a size that I want it! Only one problem remains - playing animations. As for the animations, I'm getting a really strange error with PlayAnim: I know my animation names and package names are correct, but with Unrealscript Pawn.Mesh.PlayAnim( BirdPawn(Pawn).Boobooday_Packed_WalkOnLand, , True ); //causes an error Just gives me the error: (If you're wondering why I'm saying Boobooday_Packed instead of BooboodayPacked, it's because that's my re-imported package.) I'm not sure if there's some variable I'm meant to assign for the animation or what, since I don't have anything like that in the code; I still have that BirdWalkAnim name var lying around, but I'm not sure how to it - do you mean to just call that whenever I use PlayAnim? All the other resources I've found on the topic seem to point me to Kismet, but with only two days to learn it in, I'd love it if Unrealscript could cover me.
  4. Trying the second option gave an interesting and comically alarming result - I think it worked, but it's really small! This may be something I have to change in the unreal edior, but right now the model is a small dot so tiny I confused it for a crosshair at first! If I squint, I think animations are even playing, but it'd be easier to tell if it were in a larger size. I ask since I'm uncertain where to go for this - Blender or Unreal Editor, I presume - or what tools I should use when I get there; are there any bright ideas out there on how to increase a model's size?
  5. Thanks for the clarity. I have an AnimSet, and truth be told my project isn't meant to be about animation or modelling, just tieing UDK together in a way as to create a functional game, so this is just to make thiings fit a 'narrative' of sorts that my mechanics have hopefully laid out. An AnimTree is something I'd like to do fundamentally, but truth be told I'd like to be able to focus on my other modules that I've long neglected (particularly with exams around the corner!), so I hope you'll forgive me if I try and make do without one. If I can get my lil' Boobooday model playing with two/three animations from the Armature set, I'll be stoked. I've tried your method and, good news, the model has changed! Bad news, though, is that the model now hovers a few inches above the ground, and is still the same UTBot model, only with no animations. Something's clearly gone wrong along the way, as I'm supposed to be seeing a little bird right about now. Hrghm, any ideas?
  6. Bumping this thread up so I can give you the full code. Parts I believe to be relevant are highlighted;   class CrowPawn extends UTPawn; var int IsoCamAngle; var float CamOffsetDistance; var() SkeletalMeshComponent BirdMesh; var() SkeletalMeshComponent CurrMesh; var name BirdWalkAnim; simulated function PostBeginPlay() {     super.PostBeginPlay();     AttachMesh();     SetMeshVisibility(true);     `log("The player crow pawn has spawned!"); } function AttachMesh() {    CurrMesh = new(self) class'SkeletalMeshComponent';    CurrMesh.SetSkeletalMesh(BirdMesh);    CurrMesh.SetLightEnvironment( MyLightEnvironment );    AttachComponent(CurrMesh); } simulated function SetMeshVisiblity(bool bVisible) {     super.SetMeshVisibility(bVisible);     Mesh.SetOwnerNoSee(false); } simulated function bool CalcCamera(float DeltaTime, out vector out_CamLoc, out rotator out_CamRot, out float out_FOV) {     local Vector HitLocation, HitNormal;     out_CamLoc           = Location;     out_CamLoc.X        -= Cos(Rotation.Yaw * UnrRotToRad) * Cos(IsoCamAngle * UnrRotToRad) * CamOffsetDistance;     out_CamLoc.Y        -= Sin(Rotation.Yaw * UnrRotToRad) * Cos(IsoCamAngle * UnrRotToRad) * CamOffsetDistance;     out_CamLoc.Z        -= Sin(IsoCamAngle * UnrRotToRad) * CamOffsetDistance;     out_CamRot.Yaw       = Rotation.Yaw;     out_CamRot.Pitch     = IsoCamAngle;     out_CamRot.Roll      = 0;     if (Trace(HitLocation, HitNormal, out_CamLoc, Location, false, vect(12, 12, 12)) != none)     {         out_CamLoc = HitLocation;     }     return true; } defaultproperties {     IsoCamAngle=20     CamOffsetDistance=190.0     Begin Object Class=AnimNodeSequence Name=MeshSequenceA     End Object     /*Begin Object Class=DynamicLightEnvironmentComponent Name=MyLightEnvironment       bEnabled=TRUE       End Object     Components.Add(MyLightEnvironment)*/     Begin Object= Class=SkeletalMeshComponent Name=Boobooday           SkeletalMesh=SkeletalMesh'BirdPackage.BooboodayPacked'           AnimSets(0)=AnimSet'BirdPackage.Armature'           Animations=MeshSequenceA           Materials(0)=Material'EditorMaterials.WidgetMaterial_X'           LightEnvironment=MyLightEnvironment           Scale3D=(X=0.25,Y=0.25,Z=0.5)           End Object           BirdMesh=Boobooday           Components.Add(Boobooday)     BirdWalkAnim = WalkOnLand } EDIT: Agh, sorry, the green text seems to pop up instead. :/ Ah well, you can compare with the code up above anyway. I'm wondering if something went wrong in importing the model, but I wouldn't know how; I followed the steps in these two videos: http://www.youtube.com/watch?v=O3QYCjX_vrg http://www.youtube.com/watch?v=POwO6yOM3rY&fmt=18
  7. Ratrace, thanks for the great help! I've imported the model I want over to UDK and I've set up the code in the MyPawn class so far, but I've ran into a strange error:   "Error, Type mismatch in Call to 'SetSkeletalMesh', parameter 1" From my reading on the wiki and beyond, the only mandatory argument for SetSkeletalMesh is just one Skeletal mesh. I've gotten no complaints from the way I've set up BirdMesh and MeshSequenceA in Defaultproperties, so I feel like this is the one place the problem's coming from.   Here's the code in full, with (mostly) only the relevant parts left in.     class BirdPawn extends UTPawn; var() SkeletalMeshComponent BirdMesh; var() SkeletalMeshComponent CurrMesh; var name BirdWalkAnim; simulated function PostBeginPlay() {     super.PostBeginPlay();     SetMeshVisibility(true);     `log("The player birdpawn has spawned!"); } function AttachMesh() {    CurrMesh = new(self) class'SkeletalMeshComponent';    CurrMesh.SetSkeletalMesh(BirdMesh);  //This line causes the error!    CurrMesh.SetLightEnvironment( MyLightEnvironment );    AttachComponent(CurrMesh); } defaultproperties {     Begin Object Class=AnimNodeSequence Name=MeshSequenceA     End Object     Begin Object Class=DynamicLightEnvironmentComponent Name=MyLightEnvironment       bEnabled=TRUE       End Object     Components.Add(MyLightEnvironment)     Begin Object= Class=SkeletalMeshComponent Name=Boobooday           SkeletalMesh=SkeletalMesh'BirdPackage.BooboodayPacked'           AnimSets(0)=AnimSet'BirdPackage.Armature'           Animations=MeshSequenceA           Materials(0)=Material'EditorMaterials.WidgetMaterial_X'           LightEnvironment=MyLightEnvironment           Scale3D=(X=0.25,Y=0.25,Z=0.5)           End Object     BirdMesh=Boobooday     Components.Add(Boobooday)     BirdWalkAnim = WalkOnLand }   I also tried setting this code up in the BirdActor class, but I encountered the same issues. I may have misunderstood something you were telling me, but I thought I'd define the mesh to be the main item and then pass that in as the Skeletal Mesh to set and attach to the pawn as a component. I'm a little baffled myself, if I can say so. Can anyone offer any advice?
  8. Very basic question, I imagine, and forgive me if I'm phrasing it wrong, but Google has not been kind to me in my search for an answer. I want to give my character in UDK a model, but I'm not quite sure how, and the amount of tiny questions I have about it only seems to grow: - Must my model be in a specific directory? If so, which one? - Do I need to use unrealscript to do it, or is that simply the recommended way? - How do I play animations? Must the call to the animation be written in unrealscript as it enters a new function or state? This is how I understand how to attach a mesh to an actor right now, by writing this in the defaultproperties section of a Pawn or Actor:   Begin Object Class=StaticMeshComponent Name=BasicMesh         StaticMesh=StaticMesh'UN_SimpleMeshes.TexPropCube_Dup'         Materials(0)=Material'EditorMaterials.WidgetMaterial_X'         LightEnvironment=MyLightEnvironment         Scale3D=(X=0.25,Y=0.25,Z=0.5)   End Object   Components.Add(BasicMesh) From this I can tell that 'UN_SimpleMeshes.TexPropCube_Dup' is the actual object, and exists somewhere in the UDK folders, but that is the extent of my knowledge. If anyone could offer some wisdom to me, it'd make a world of difference!
  9. Just posting since I've gotten back to this topic. Thanks again for the video! But I have another thing I'd like to understand; from looking at that video it seems like he's just taking the model and planting it in as a prop. Does that connect it to a certain pawn or actor, like one defined in Unrealscript and put into the game world by the editor? Or is that something I need to do elsewhere first? This is how I understand how to attach a mesh to an actor right now, by writing this in the defaultproperties section of a Pawn or Actor: Begin Object Class=StaticMeshComponent Name=BasicMesh         StaticMesh=StaticMesh'UN_SimpleMeshes.TexPropCube_Dup'         Materials(0)=Material'EditorMaterials.WidgetMaterial_X'         LightEnvironment=MyLightEnvironment         Scale3D=(X=0.25,Y=0.25,Z=0.5)   End Object   Components.Add(BasicMesh) From this I can tell that 'UN_SimpleMeshes.TexPropCube_Dup' is the actual object, and exists somewhere in the UDK folders. But if this is how I need to do it, which directory must I store my meshes and animations into? Is it always just a case of saving them there and attaching them like that? Or, for a more precise question: [i]do I need to use Unrealscript to attach a mesh to a pawn/play an animation at a certain sequence, and if so, what would such actions look like?[/i]
  10. That seems to work just fine, ratrace. Thanks for the advice!
  11. Hey guys, I've got a player character and NPC in UDK, each with their own pawns and controllers. I want to, within the NPC's controller, trigger a function in the player's controller, but I only have the player's pawn as a reference. I've tried googling and looking through documentation for an answer, but have been unlucky. I also tried something like this: MyPawn.Controller.DoFunction(); Since I know we can refer to the Pawn from a controller or an actor, but I got an error:   MyPawn.Controller.BeStunned(); Triggers the error: "Unrecognised member 'BeStunned' in class 'Controller'. This happens even though I have a BeStunned function inside MyController. Any help for a newbie short on luck would be most appreciated!
  12. ratrace, thanks for that! I'm unfortunately not able to test that any time soon, so I can't answer my next question, but what I want to happen is for the weapon to be removed from the game, not just dropped somewhere on the ground. Would these functions do that, or need I use another built-in function, or make one of my own?
  13. Hey guys, I'm just trying to do a simple test where MyPlayerController has a function that can remove the item in the current user's inventory. I'm not using any specially built system of inventory, I'm using the default Unreal Tournament inventory system. So the idea is that if the player pawn touches some actor (let's call it MyWeaponRemover), then MyWeaponRemover will call this function on MyPlayerController and remove the weapon they have equipped. (i.e If they had only their current weapon, now they would have nothing.) With what little I knowI guess it'd look something like: function RemoveWeapon() { DefaultInventory(0)=None; } How far off would I be if I said that? I've done some searching for the topic of the default inventory system, but I've not seen much info. I've also seen many guides on how to make my own inventory system, but I'm on a tight deadline and don't have the time to make a completely new inventory. Any advice or suggested resources?
  14. Hey guys,   I have some FBX model files made by a friend which I need to apply for my project in UDK. I'm not a modeller, and models aren't what this project is about, so I just want to put them in and play the animations when they happen. I'm conscientous of time and can only spend a few days at most on this, and I'm also aware of UDK's use of static and skeletal meshes. I've downloaded Blender to extract them with, and while I've done some googling but I haven't found much anything concise. [i]Where should I look to implement these?[/i] Any help you could give would be amazing.
  15. [b]EDIT:[/b] As a heads-up, this doesn't seem to be an issue anymore, though I'm genuinely not sure why. Ah well, can't complain! I'm working with unrealscript now, and I have a nice little controller. The PostBeginPlay() function, however, doesn't seem to be as reliable as I want it to be; I'm using it to set up a few things, but I've noticed through use of log messages that PostBeginPlay() doesn't seem to appear when I want it to. Just take a look at my code. Blue lines are log messages that appear in the launch log file: red lines are ones that don't.     class MagpieController extends AIController; var Pawn CrowPawn; var Actor CrowActor; var float AttackDistance; var float ChaseDistance; var float MovementSpeed; simulated function PostBeginPlay() {   `log("A magpie CONTROLLER has appeared on the map!"); //appears   if (CrowPawn == none)   {     `log("Targeting the crow now!"); //appears, but because the player appears after the magpie does the bottom function call doesn't work     TargetCrow();   }   `log("Just making sure that, yes, the magpie controller is still here!"); //appears   GoToState('Searching'); } function Tick(float DeltaTime) {   `log("The magpie's just sitting here, twitchin' its talons!"); //doesn't appear because the GoToState('Searching') part works fine! } auto state Searching {   simulated function PostBeginPlay()   {     `log("The magpie is now SEARCHING!"); //never appears     if (CrowPawn == none)     {       TargetCrow();     }   }   function Tick (float DeltaTime)   {     `log("I'm still looking for crows!"); //appears          if (CrowPawn == none)     {       TargetCrow();     }     if (VSize(Location - CrowPawn.Location) < ChaseDistance)     {       `log("Right, the magpie now sees the player!"); //appears       GoToState('ChasingPlayer');     }   } } state ChasingPlayer {   simulated function PostBeginPlay()   {     `log("I'm chasing that filthy crow!"); //never appears   }   function Tick(float DeltaTime)   {     local vector NewLocation;     `log("I'm still chasing that filthy crow!"); //appears     if(CrowPawn == none)     {         TargetCrow();     }     while (CrowPawn != none && VSize(NewLocation - CrowPawn.Location) < AttackDistance)     {       `log(Location);         NewLocation = Location;         NewLocation += normal(CrowPawn.Location - Location) * MovementSpeed * DeltaTime;         SetLocation(NewLocation);     }   } } function TargetCrow() {   local CrowPlayerController PC;   foreach LocalPlayerControllers(class'CrowPlayerController', PC)   {     if (PC.Pawn != none)     {         CrowPawn = PC.Pawn;         `log("My enemy is:" @ CrowPawn);     }   } } Can anyone please offer an explanation for this?