No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.

. Ahora tendrás acceso a lo mismo con lo que trabaja el equipo de Epic Games.
vamos a partir de los recursos en FBX de uno de los proyectos de ejemplo que viene con el UE4. Esto es exactamente lo que nos daría nuestro equipo de diseño. Puedes bajar los recursos aquí: No tienes permiso para ver los enlaces. Para poder verlos
Registrate o Conectate.




, ahora vamos a importarlo en el proyecto. En el Panel de la esquina inferior izquierda del Editor tendemos el Content Browser. En este panel es donde tendremos organizados todos los recursos de nuestro juego. Da clic en el Botón New y selecciona New Folder y dale un nombre a la carpeta, por ejemplo "Character". Hecho esto tendremos una nueva carpeta en el Content Browser, entra en ella, selecciona Import y busca el FBX del personaje: Hero.FBX (los FBX de las animaciones los vamos a importar más tarde). Recuerda que en este FBX lo que tenemos es el modelo 3D del personaje con su esqueleto. Al dar en OK nos sale la ventana FBX Import de UE4 y ya automáticamente seleccionado Skeletal Mesh.


//AUE4DemoGameMode.h
#pragma once
#include "GameFramework/GameMode.h"
#include "UE4DemoGameMode.generated.h"
UCLASS()
class AUE4DemoGameMode : public AGameMode
{
GENERATED_UCLASS_BODY()
};
//AUE4DemoGameMode.cpp
#include "UE4Demo.h"
#include "UE4DemoGameMode.h"
#include "UE4DemoPlayerController.h"
AUE4DemoGameMode::AUE4DemoGameMode(const class FPostConstructInitializeProperties& PCIP)
: Super(PCIP)
{
PlayerControllerClass = AUE4DemoPlayerController::StaticClass();
}



... como notarás no hay ningún cambio, seguimos teniendo control gracias al PlayerController por defecto pero no tenemos nuestro personaje ni nada. Bien, el problema es que nos faltaron algunas cosillas.
AUE4DemoGameMode::AUE4DemoGameMode(const class FPostConstructInitializeProperties& PCIP)
: Super(PCIP)
{
PlayerControllerClass = AUE4DemoPlayerController::StaticClass();
//Obtiene en PlayerPawnBPClass.Object la referencia al HeroCharacterBlueprint creado y configurado desde el Editor
static ConstructorHelpers::FObjectFinder<UClass> PlayerPawnBPClass(TEXT("Class'/Game/Character/HeroCharacterBlueprint.HeroCharacterBlueprint_C'"));
//Inicializa el atributo DefaultPawnClass con el HeroCharacterBlueprint creado y configurado desde el editor
if (PlayerPawnBPClass.Object != NULL)
{
DefaultPawnClass = PlayerPawnBPClass.Object;
}
}
. Bien, vamos a solucionar este asunto configurando temporalmente una cámara estática en nuestro juego.
/** Metodo heredado de la clase AActor se llama automaticamente por el motor cuando comienza el juego. */
void AUE4DemoPlayerController::BeginPlay()
{
//Llamamos el Begin Play de la clase padre
Super::BeginPlay();
//Recorremos todos los Actores en el Level mediante el TActorIterator
//TActorIterator es un iterator parametrizado que nos permite recorrer todos los actores en el level
for (TActorIterator<ACameraActor> It(GetWorld()); It; ++It)
{
//Obtenemos el actor actualmente en el loop. Como solo tenemos un solo ACameraActor en el Level, el iterator solo iterará una vez
ACameraActor* _mainCamera = *It;
//Configuramos el nuevo punto de vista del juego con la camara.
//SetViewTargetWithBlend puede recibir más parametros, pero tienen valores por defecto, y de momento no necesitamos modificarlos.
this->SetViewTargetWithBlend(_mainCamera);
}
}
) ... aquí podemos agregar variables, eventos del sistema, funciones de clases especificas etc. En fin, todo, o casi todo lo que haces en C++ lo podrás hacer en el Blueprint Editor.
. Ya te digo, es decisión tuya implementar lo que quieras en el Blueprint Editor o en C++ tu mismo le iras encontrando las ventajas y desventajas a cada método según lo que quieras hacer.
nos entregó además del modelo con su esqueleto en FBX las animaciones de caminar y reposo, también en formato FBX listas para importarlas. Pues vamos a ello. Abre el Editor en el Content Browser crea una nueva carpeta, yo le pondré Animations. Aquí tendremos todas las animaciones que importemos. Entra a la carpeta e importa los dos FBX Walk.FBX e Idle.FBX. Al seleccionarlas verás que por defecto en la ventana de FBX Import sale seleccionado Animations. Más abajo tiene la opción que permite ya en el momento de la importación seleccionar el esqueleto al que están asociadas estas animaciones. Da clic ahí y selecciona Hero_Skeleton por último da clic en Import.






UCLASS()
class AHeroCharacter : public ACharacter
{
GENERATED_UCLASS_BODY()
protected:
/**
* Se llama cuando el motor detecta la entrada configurada para 'MoveForward'.
* En este caso cuando el usuario toca la tecla W o S del teclado
*/
void MoveForward(float Value);
/**
* Se llama cuando el motor detecta la entrada configurada para 'MoveRight'.
* En este caso cuando el usuario toca la tecla A o D del teclado
*/
void MoveRight(float Value);
/**
* Metodo de la clase APawn que permite configurar los 'binding' de los controles
* Es llamado automaticamente por el Engine
*/
virtual void SetupPlayerInputComponent(class UInputComponent* InputComponent) OVERRIDE;
};
#include "UE4Demo.h"
#include "HeroCharacter.h"
AHeroCharacter::AHeroCharacter(const class FPostConstructInitializeProperties& PCIP)
: Super(PCIP)
{
}
void AHeroCharacter::SetupPlayerInputComponent(class UInputComponent* InputComponent)
{
//Le dice al motor que cuando detecte las entrada de tipo MoveForward que llame al metodo AHeroCharacter::MoveForward
InputComponent->BindAxis("MoveForward", this, &AHeroCharacter::MoveForward);
//Le dice al motor que cuando detecte las entrada de tipo MoveRight que llame al metodo AHeroCharacter::MoveRight
InputComponent->BindAxis("MoveRight", this, &AHeroCharacter::MoveRight);
}
/**
* Se llama cuando se detecta la entrada de tipo MoveForward (Cuando el usuario toca las teclas W o S).
* Determina la dirección en la que está el personaje y le aplica un movimiento (positivo o negativo) en esa dirección
*
* @param Value Value es igual a 1 cuando se detecta W y -1 cuando se detecta S
*/
void AHeroCharacter::MoveForward(float Value)
{
if ((Controller != NULL) && (Value != 0.0f))
{
//Obtiene la rotacion actual
const FRotator Rotation = Controller->GetControlRotation();
// Crea el vector de direccion a partir de hacia donde está rotado y aplica el movimiento
const FVector Direction = FRotationMatrix(Rotation).GetUnitAxis(EAxis::X);
AddMovementInput(Direction, Value);
}
}
/**
* Se llama cuando se detecta la entrada de tipo MoveForward (Cuando el usuario toca las teclas A o D).
* @param Value Value es igual a 1 cuando se detecta D y -1 cuando se detecta A
*/
void AHeroCharacter::MoveRight(float Value)
{
if ( (Controller != NULL) && (Value != 0.0f) )
{
//Determina la dirección del movimiento hacia los lados. Notar que solo nos intereza la rotacion en el eje Y
const FRotator Rotation = Controller->GetControlRotation();
const FRotator YawRotation(0, Rotation.Yaw, 0);
// Crea el vector de la dirección y aplica el movimiento
const FVector Direction = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::Y);
AddMovementInput(Direction, Value);
}
}
AHeroCharacter::AHeroCharacter(const class FPostConstructInitializeProperties& PCIP)
: Super(PCIP)
{
//Por defecto esta propiedad viene en true para el Character.
//Pero en nuestro modelo de desplazamiento, no queremos que el personaje rote en base a la rotación del Controller.
bUseControllerRotationYaw = false;
//Configuración del componente CharacterMovement
//Al estar en true habilita para que el character se rote en la dirección del movimiento al comenzar el movimiento.
CharacterMovement->bOrientRotationToMovement = true;
//Factor de rotación para la propiedad anterior.
CharacterMovement->RotationRate = FRotator(0.0f, 540.0f, 0.0f);
//Bajamos un poco el valor por defecto de MaxWalkSpeed para que el personaje camine un poco más lento.
CharacterMovement->MaxWalkSpeed = 400.0f;
}




No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.Gracias por aceptarme. Un saludo a todos
No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.Hola comunidad,
acudo a ustedes por lo siguiente:
Hace un tiempo estamos trabajando en un proyecto con un amigo de l2 interlude, en lo que respecta al game, ya esta todo listo, solo que no sabemos como ponerlo online, alquilamos un plan de hostinger, pero no supimos como montarlo, si alguno de ustedes nos puede orientar con esto se los agradecería.
porque probamos de todas las maneras posibles y que pudimos razón para montarlo, pero no hubo caso, nos supero el desconocimiento del hosting, aparte no existe en ningún lado un tutorial paso a paso de como subirlo a hostinger, y ni si quiera los de hostinger te asesoran para este tipo de proyectos.
si alguien puede hacer un tutorial paso a paso o algún video explicativo se los agradecería muchísimo. y como cortesía por este posible aporte hacia conmigo, prometo hacer un video tutorial completo una vez lo haya logrado y lo subo para toda la comunidad que anhela esta idea de montar su propio servidor, desde ya muchas gracias.
Muy buenas,
Para comenzar, debemos tener claro el tipo de hosting que debemos contratar. Los servidores de tipo Hostinger NO sirven para montar un servidor Lineage 2. Hostinger es hosting web, no hosting de aplicaciones Java con sockets abiertos. Para este tipo de proyectos es necesario contratar un servidor VPS o disponer de un servidor dedicado y, una vez teniendo esto, debe cumplir con los requisitos mínimos que solicite el proyecto/emulador.
Para poder ayudar de una forma más precisa, sería necesario que indicaras qué servidor/emulador estás utilizando, ya que dependiendo del emulador los requisitos pueden variar. Además, cada emulador es un mundo y cuenta con su propia forma de instalación y configuración.
Por ejemplo, para emuladores L2JDevs, que suelen requerir menos recursos que otros, los pasos a seguir de forma resumida serían los siguientes:
1.- Compilar el proyecto y subir los archivos al VPS/servidor privado.
2.- Tener instalada en el servidor la versión de Java requerida por el emulador y el gestor de base de datos correspondiente.
3.- Crear la base de datos del servidor desde su configurador o importando los archivos SQL.
4.- Configurar las properties del servidor para que todo funcione correctamente.loginserver/config/server.properties gameserver/config/server.properties
5.- Abrir los puertos necesarios:
- 2106 → LoginServer
- 7777 → GameServer
6.- Iniciar el servidor en el siguiente orden:
- LoginServer
- GameServer
7.- Editar el cliente, añadiendo la IP del servidor para que los jugadores puedan conectarse.
Para más información, puedes visitar la web oficial del proyecto, donde disponen de guías de instalación y configuración.
Además, dentro de esta comunidad, en el apartado de soporte, información y configuración, podrás encontrar información adicional sobre cómo iniciar y configurar correctamente tu servidor.
No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.Hola comunidad,
acudo a ustedes por lo siguiente:
Hace un tiempo estamos trabajando en un proyecto con un amigo de l2 interlude, en lo que respecta al game, ya esta todo listo, solo que no sabemos como ponerlo online, alquilamos un plan de hostinger, pero no supimos como montarlo, si alguno de ustedes nos puede orientar con esto se los agradecería.
porque probamos de todas las maneras posibles y que pudimos razón para montarlo, pero no hubo caso, nos supero el desconocimiento del hosting, aparte no existe en ningún lado un tutorial paso a paso de como subirlo a hostinger, y ni si quiera los de hostinger te asesoran para este tipo de proyectos.
si alguien puede hacer un tutorial paso a paso o algún video explicativo se los agradecería muchísimo. y como cortesía por este posible aporte hacia conmigo, prometo hacer un video tutorial completo una vez lo haya logrado y lo subo para toda la comunidad que anhela esta idea de montar su propio servidor, desde ya muchas gracias.
loginserver/config/server.properties
gameserver/config/server.properties